메소드 | 설명 | |
---|---|---|
POST | 요청된 자원 생성 | CREATE |
GET | 자원 요청 | READ |
PUT | 요청된 자원 수정 | UPDATE |
DELETE | 요청된 자원 삭제 | DELETE |
HEAD | 자원의 Header만 요청. Body는 요청하지 않는다. | |
OPTIONS | 서버 옵션들을 확인하기 위한 요청. CORS에서 사용 |
클라이언트가 URI를 통해 요청(Request)를 보내면, 서버는 해당 요청(Reqeust)을 받아 처리하여 클라이언트에게 응답(Response)하는 형태
웹 브라우저는 웹 서버에 데이터를 요청하는 클라이언트 프로그램이다.
HTTP 형식으로 메소드 + URI(요청하는 자원의 위치 명시) + HTTP 프로토콜 버전을 포함하여 서버에 요청한다. 그 외에 Host, Content-Type, Cookie 등이 Request Header에 포함된다.
HTTP 형식으로 응답코드, 응답메시지를 포함하여 응답한다. 그 외에 Content-Type, Set-Cookie 등이 Response Header에 포함된다.
URI(Uniform Resource Identifiers)
HTTP와는 독립된 다른 체계이다. HTTP는 전송 프로토콜이고, URI는 자원의 위치를 알려주기 위한 프로토콜이다.
클라이언트(웹에서는 브라우저)는 URI에 자원의 위치를 담는다.
http://www.test.co.kr/index.html
1. http : 자원에 접근하기 위한 http 프로토콜을 사용
2. www.test.co.kr(도메인 주소) : index.html이라는 자원의 인터넷상 위치
HTTP 메시지(요청과 응답 모두)에 담겨 보내는 데이터의 형식을 알려주고, 헤더에 포함된다. HTTP 표준 스펙을 따르는 브라우저와 웹서버는 Content-Type 헤더를 기준으로 HTTP 메시지에 담긴 데이터를 분석하고 파싱한다.
만약 Content-Type 헤더가 없다면 데이터를 전송하는쪽(브라우저나 웹서버)에서는 특정한 형식의 데이터일지라도 데이터를 받는 입장에서는 단순히 텍스트 데이터로 받아들인다.
HTTP 요청이 GET방식인 경우에는 무조건 URL 끝에 쿼리스트링으로 value=text 형식으로 보내지기 때문에 Content-Type은 필요가 없다. 하지만 POST나 PUT처럼 메시지 BODY에 데이터를 보낼 때는 Content-Type를 추가해야한다.
상태코드 | response | 설명 |
---|---|---|
200 | OK(성공) | 요청이 성공적으로 처리되었다. 서버가, 요청한 페이지를 제공하였다. |
상태코드 | response | 설명 |
---|---|---|
302 | FOUND(임시 이동) | 요청한 리소스의 URI가 일시적으로 변경되었다. |
상태코드 | response | 설명 |
---|---|---|
401 | Unauthorized(권한 없음) | 인증이 필요하다. |
403 | Forbidden(금지됨) | 서버가 요청을 거부하였다. 예를 들어 사용자가 리소스에 대한 필요 권한을 갖고 있지 않는 경우이다. |
404 | Not Found(찾을 수 없음) | 서버가 요청한 페이지(리소스)를 찾을 수 없다. 예를 들어 서버에, 존재하지 않는 페이지를 요청할 경우이다. |
405 | Method Not Allowed(허용되지 않는 메소드) | 예를 들어, POST 방식으로 요청을 받는 서버에 GET 요청을 보내는 경우, 읽기 전용 리소스에 PUT 요청을 보내는 경우, 필수 메소드인 GET과 HEAD를 제거할 경우에 발생한다. |
상태코드 | response | 설명 |
---|---|---|
500 | Internal Server Error(내부 서버 오류) | 서버에 오류가 발생하여 요청을 수행할 수 없다. |
501 | Not Implemented(구현되지 않음) | 서버에 요청을 수행할 수 있는 기능이 없다. 예를 들어 서버가 요청 메소드를 인식하지 못할 경우이다. |
502 | Bad Gateway | 서버가 게이트웨이나 프록시 역할을 하고 있거나 또는 업스트림 서버로부터 잘못된 응답을 받는 경우이다. |