HTTP 응답 코드는 HTTP 요청에 대한 서버의 응답을 나타내는 3자리 숫자를 말한다.

이 숫자는 해당 요청이 성공했는지, 실패했는지, 그리고 어떤 종류의 오류가 발생했는지를 나타낸다.

응답코드는 크게 5개 분류로 나뉘는데 100, 200, 300, 400, 500번대이다.

 

 

 

상태코드의 분류별 특징

 

  • 100번대 (처리 중) : 이 코드는 요청이 수신되었으며 처리가 계속되고 있다는 것을 말해준다. 일반적으로 클라이언트의 추가 작업이 필요하다. 예를 들어 101 Switching Protocols는 서버와 클라이언트 간의 프로토콜을 변경했다는 뜻이다.

 

  • 200번대 (성공): 200번대 응답 코드는 성공적으로 처리되었음을 나타낸다. 예를 들어, 200 OK는 요청이 성공적으로 처리되었다는 것을 나타내며, 201 Created는 새로운 리소스가 성공적으로 생성되었다는 것을 나타낸다.

 

  • 300번대 (리다이렉션): 300번대 응답 코드는 리다이렉션을 말한다. 즉, 요청한 리소스가 다른 위치에 있고, 새로운 위치로 이동하도록하는 요청이다. 예를 들어, 301 Moved Permanently는 요청한 리소스가 영구적으로 새로운 URL로 이동되었다는 것을 나타내며, 302 Found는 요청한 리소스가 일시적으로 새로운 URL로 이동되었다는 것을 말한다.

 

  • 400번대 (클라이언트 오류): 400번대 응답 코드는 클라이언트 오류를 나타낸다. 즉, 클라이언트가 요청한 것이 잘못되었거나 부적절한 경우에 볼 수 있다. 예를 들어, 400 Bad Request는 클라이언트가 유효하지 않은 요청을 보냈다는 것을 나타내며, 401 Unauthorized는 클라이언트가 인증되지 않았다는 것을 나타낸다.

 

  • 500번대 (서버 오류): 500번대 응답 코드는 서버 오류를 말해준다. 즉, 서버에서 요청을 처리하는 동안 문제가 발생한 경우다. 예를 들어, 500 Internal Server Error는 서버에서 오류가 발생했다는 것을 나타내며, 503 Service Unavailable은 서버가 일시적으로 사용 불가능하다는 것을 말해준다.

각 응답 코드는 위처럼 분류된다.

 

 

세부 상태코드 의미

 

1xx - Informational (정보)

응답코드 의미
100 요청이 수신되었으며 클라이언트는 계속해서 요청하거나 무시해도 된다.
101 서버가 클라이언트의 업그레이드 요청을 수락하였으며, 프로토콜을 변경하였다.

 

 

2xx - Successful (성공)

응답코드 의미
200 클라이언트의 요청이 성공적으로 처리되었다.
201 서버가 성공적으로 새로운 리소스를 생성했다.
204 서버가 요청을 성공적으로 처리했으나, 응답 데이터가 없다.

 

 

3xx - Redirection (리디렉션)

응답코드 의미
301 클라이언트가 요청한 리소스가 새로운 위치로 영구적으로 이동했다.
302 클라이언트가 요청한 리소스가 새로운 위치로 일시적으로 이동했다.
304 클라이언트가 요청한 리소스가 수정되지 않아서, 캐시된 버전을 사용할 수 있다.

 

 

4xx - Client Error (클라이언트 오류)

응답코드 의미
400 클라이언트의 요청이 잘못되었다.
401 클라이언트가 인증되지 않았다.
403 클라이언트가 요청한 리소스에 대한 액세스 권한이 없다.
404 클라이언트가 요청한 리소스를 찾을 수 없다.

 

 

5xx - Server Error (서버 오류)

응답코드 의미
500 서버에서 요청을 처리하는 동안 오류가 발생했다.
502 게이트웨이나 프록시 서버에서 잘못된 응답을 받았다.
503 서버가 일시적으로 사용 불가능하거나 과부하 상태다.

 

 

 HTTP 응답 코드는 클라이언트와 서버 간의 통신에서 중요한 역할을 한다. 그래서 이러한 응답 코드의 세부 내용을 이해하고 적절히 대응하는 것이 중요하다.

 물론 이 외에도 많은 상태코드들이 있다. 이외의 상태코드에 대해서는 아래 링크를 통해 확인하면 좋을 것 같다.

 

 

 

참고 : https://developer.mozilla.org/ko/docs/Web/HTTP/Status

 

HTTP 상태 코드 - HTTP | MDN

HTTP 응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 알려줍니다. 응답은 5개의 그룹으로 나누어집니다: 정보를 제공하는 응답, 성공적인 응답, 리다이렉트, 클라이언트 에러, 그리고

developer.mozilla.org

 

HTTP의 메소드

HTTP 프로토콜은 다양한 메소드를 지원하고 있다. 이 중에서도 가장 많이 사용되는 메소드는 GET, POST, PUT, DELETE, 등이 있는데, 이 중에서 GET과 POST는 각각 읽기(read)와 생성(create)과 관련된 메소드로, PUT과 DELETE는 각각 수정(update)과 삭제(delete)와 관련된 메소드다.

이와 같은 HTTP 메소드들은 대부분 CRUD 작업과 관련이 있다. 

 

 

 

CRUD(create/read/update/delete)

CRUD는 데이터베이스에서 자주 사용되는 개념으로, 데이터를 생성(Create), 읽기(Read), 수정(Update), 삭제(Delete)하는 기본적인 작업을 의미합니다.

 

이를 위해서 데이터베이스는 다양한 쿼리문을 제공한다.

 

아래는 각각의 CRUD에 해당하는 쿼리문 예시다.

 

  • CREATE (생성)

DB에서 새로운 데이터를 추가할 때 CREATE 쿼리문을 사용한다. CREATE 쿼리문은 어떤 데이터베이스를 사용하느냐에 따라 다르지만 대부분 다음과 비슷한 구문을 갖는다.

INSERT INTO <테이블 이름> (<컬럼1>, <컬럼2>, ... <컬럼n>) VALUES (<값1>, <값2>, ... <값n>);

여기서 <테이블 이름>은 데이터를 추가할 테이블의 이름이며, <컬럼>은 새로 추가하려는 레코드의 각 필드를 나타낸다.

<값>은 새로 추가하려는 레코드의 각 필드에 들어갈 실제 값을 말한다.

 

예를 들어, users라는 테이블에서 새로운 사용자를 추가하려면 다음과 같은 쿼리문을 사용하면 된다.

INSERT INTO users (name, email, age) VALUES ('John', 'john@example.com', 30);

 

  • READ (읽기)

DB에서 레코드를 검색하려면 READ 쿼리문을 사용한다. READ 쿼리문은 보통 다음과 같은 구문을 갖는다.

SELECT <컬럼1>, <컬럼2>, ... <컬럼n> FROM <테이블 이름> WHERE <조건>;

여기서 <컬럼>은 검색하려는 레코드의 각 필드를 나타낸다. <테이블 이름>은 데이터를 검색할 테이블의 이름이며, <조건>은 검색할 레코드를 선택하는 조건이다.

 

예를 들어, users라는 테이블에서 이메일이 'john@example.com'인 사용자를 찾으려면 다음과 같은 쿼리문을 사용한다.

SELECT name, email, age FROM users WHERE email='john@example.com';

 

  • UPDATE (갱신)

DB에서 레코드를 갱신하려면 UPDATE 쿼리문을 사용합니다. UPDATE 쿼리문은 다음과 같은 구문을 갖는다.

UPDATE <테이블 이름> SET <컬럼1>=<값1>, <컬럼2>=<값2>, ... <컬럼n>=<값n> WHERE <조건>;

여기서 <컬럼>은 변경하려는 레코드의 각 필드를 나타낸다. <테이블 이름>은 데이터를 검색할 테이블의 이름이며, <조건>은 변할 레코드를 선택하는 조건이다.

 

예를 들어, "Customers"라는 테이블에서 "CustomerID"가 1인 레코드의 "ContactName"을 "John Smith"에서 "Peter Lee"로 바꾸는 쿼리문은 아래와 같다.

UPDATE Customers SET ContactName = 'Peter Lee' WHERE CustomerID = 1;

 

  • DELETE (삭제)

DB에서 테이블에서 레코드를 삭제합니다. DELETE 쿼리문은 다음과 같은 구조를 가진다.

DELETE FROM <테이블 이름> WHERE <조건>;

 

예를 들어, "Customers"라는 테이블에서 "CustomerID"가 2인 레코드를 삭제하려면 다음과 같이 쿼리문을 작성하면 된다.

DELETE FROM Customers WHERE CustomerID = 2;

 

 

 

HTTP 메소드와 CRUD

이러한 관점에서 HTTP 메소드와 CRUD를 짝지어 봤다.

  • GET: Read
  • POST: Create
  • PUT: Update
  • DELETE: Delete

이렇게 메소드와 CRUD를 적절하게 짝지은 이유는 각각의 메소드가 수행하는 작업과 CRUD의 개념이 비슷하기 때문이다. 예를 들어, GET 메소드는 데이터를 읽어오는(read) 용도로 사용되기 때문에, CRUD의 Read 작업과 매칭된다.

마찬가지로, POST 메소드는 새로운 데이터를 생성(create)하기 위해 사용되기 때문에, CRUD의 Create 작업과 매칭된다.

POST와 PUT은 모두 데이터를 생성 또는 수정하는 용도로 사용된다.

그러나 POST는 새로운 데이터를 생성하는 데 사용되며, 서버가 해당 데이터의 위치를 결정한다. 반면, PUT은 특정 리소스를 업데이트하는 데 사용된다.

PUT은 리소스의 URI를 지정하고 해당 리소스의 내용을 업데이트한다. 즉, POST는 서버가 데이터 위치를 결정하지만, PUT은 클라이언트가 명시적으로 리소스 위치를 지정한다는 차이가 있다.

따라서, POST와 PUT은 크게 다른 용도로 사용되며, 사용 시에 목적에 따라 적절한 메소드를 선택해야 한다.

HTTP 프로토콜

 HTTP(Hypertext Transfer Protocol)는 인터넷에서 데이터를 주고받는 데 사용되는 프로토콜 중 하나이다. HTTP는 웹 브라우저와 웹 서버 간의 통신을 위해 개발되었으며, HTML, CSS, Javascript 등의 문서를 전송하기 위한 표준 프로토콜로 사용된다.

 HTTP는 클라이언트-서버 모델을 따르며, 클라이언트(보통은 웹 브라우저)가 서버에 요청(Request)을 보내고, 서버는 클라이언트에게 응답(Response)을 보낸다. 이때, 요청과 응답은 HTTP 메시지라는 형식으로 전송된다.

클라이언트 - 서버 모델



 HTTP는 기본적으로 평문(Plain text)으로 데이터를 전송하기 때문에  데이터의 기밀성과 보안에 취약점이 존재한다. 따라서, 이 문제점을 보완하기 위해서 HTTP보다 보안성이 높은 HTTPS가 등장했다.

 

 

HTTPS 프로토콜

 HTTPS(Hypertext Transfer Protocol Secure)는 HTTP 프로토콜의 보안 강화 버전입니다. HTTPS는 HTTP와 마찬가지로 인터넷 상에서 데이터를 주고받는 데 사용되며, SSL(Secure Sockets Layer) 또는 TLS(Transport Layer Security) 프로토콜을 사용하여 데이터를 암호화하고 보호해준다.

 HTTPS는 HTTP와 달리, 클라이언트와 서버 간에 암호화된 통신 채널을 사용합니다. 이 암호화된 통신 채널을 통해 데이터가 전송되기 때문에, 중간자 공격(네트워크 통신을 조작하는 보안 공격)과 같은 보안 위협으로부터 보호받을 수 있다.

 HTTPS의 동작 방식은 이렇다.
.

  1. 클라이언트는 서버에 접속하고, SSL/TLS 암호화 방식을 사용하여 인증 요청을 보낸다.
  2. 서버는 인증서를 클라이언트에게 보내고, 클라이언트는 이 인증서가 신뢰할 수 있는지 확인한다.
  3. 클라이언트와 서버 간에 공유된 비밀키를 사용하여 데이터를 암호화하고 전송한다.

 

참고 : https://developer.mozilla.org/ko/docs/Web/HTTP/Overview

 

HTTP 개요 - HTTP | MDN

HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜입니다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 합니다. 클라이언트-서버

developer.mozilla.org

https://www.ibm.com/docs/ko/aix/7.1?topic=systems-client-server 

 

클라이언트 및 서버

서버는 데이터를 포함하거나 네트워크의 다른 컴퓨터에서 액세스하는 기능을 제공하는 컴퓨터입니다. 클라이언트는 서버로부터 서비스나 데이터를 요청하는 컴퓨터입니다. 일반 서버 유형은

www.ibm.com

 

+ Recent posts