1.HTTP Method 란?
클라이언트 ↔ 서버 간 통신을 위해서 HTTP를 이용한다. 이 때 클라이언트에서 서버로의 HTTP 요청(Request) 메시지를 보내는 목적이나 종류를 사전에 전달하는 수단으로 사용되는 것이 HTTP Method(메소드)이다.
서버로 요청(Request)할 때, 해당 HTTP 메시지가 데이터의 조회를 목적으로 하는지, 데이터의 삽입을 목적으로 하는지 사전에 전달하는 것을 의미한다.
2.HTTP Method 종류 및 설명
클라이언트가 서버로 HTTP 요청(Request) 메시지를 보내는 목적은, 데이터의 조회, 신규 사용자 추가, 금액 수정, 게시글 삭제 등 매우 다양하다. 그렇기에 HTTP 요청 메시지의 목적을 전달하는 HTTP Method도 다양하게 존재한다.
일부 Method에서는 유사한 목적을 전달하는데 사용되나, 멱등 법칙(멱등성)에 따른 수행 결과에 차이점이 발생한다.
※ 멱등 법칙(멱등성, Idempotent) : 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질
| Method 명칭 | 설명 | |
| 1 | GET | 지정된 리소스에서 데이터 요청(조회), HTTP 헤드 시작줄에 요청 데이터 포함 |
| 2 | HEAD | GET과 유사하나 응답 HTTP 메시지의 바디 값이 존재하지 않음 (HTTP 헤드만 표시) |
| 3 | POST | 리소스의 생성 및 업데이트 요청, HTTP 바디에 요청 데이터 포함 PUT과 유사하나, A 리소스 생성을 반복 요청 할시, A 리소스가 요청 회수만큼 생성됨 |
| 4 | PUT | 리소스의 생성 및 업데이트 요청 (POST와 유사하나, 멱등 법칙(멱등성)을 적용 받음) 멱등 법칙에 의해, A 리소스 생성을 반복 요청하여도 A 리소스 생성은 한 번만 수행됨 |
| 5 | DELETE | 지정된 자원(리소스)를 삭제 |
| 6 | CONNECT | 요청된 리소스와 양방항 통신을 시작 |
| 7 | OPTOINS | 지정된 리소스와 통신 가능한 Method 설명 |
| 8 | TRACE | 대상 리소스의 경로를 테스트하는 메시지 루프백 테스트 수행 |
| 9 | PATCH | 리소스에 대한 수정 |
HTTP Method는 초기에는 GET Method만이 존재하였다. 당시에는 웹 서버에 저장되어 있는 리소스(html 파일)를 조회하는 기능이 주였기 때문이다. 그러나 점차 기술이 발전하고 웹 서버에서 데이터 연산이 가능함에 따라, 리소스 생성, 리소스 변경, 리소스 삭제 등을 위한 Method들이 추가되게 되었다.
※ 참조 1 (HTTP RFC 문서) : https://www.rfc-editor.org/rfc/rfc7231
※ 참조 2 (PATCH RFC 문서) : https://www.rfc-editor.org/rfc/rfc5789
3.HTTP Staus Code (HTTP 상태코드)란?
서버에서 클라이언트로 HTTP 응답 메시지를 전송할 때, HTTP 요청 메시지의 처리 결과를 의미한다. HTTP Status Code (이하 HTTP 상태코드)는 3자리 숫자로 표시되며 대략 40여개로 정의되어 있으며, 각 첫번째 자리 숫자를 기반으로 5개의 대분류로 나눌 수 있다.
※ 참조 : https://www.rfc-editor.org/rfc/rfc2616
| HTTP 상태코드 | 설명 | 비고 |
| 1xx | 요청을 정상 수신 받아, 처리가 진행 중일 시 응답 | 정보 |
| 2xx | 요청을 정상 수신 받아, 처리하였을 시 응답 | 성공 |
| 3xx | 요청을 정상 처리를 위해서는 추가 행위가 필요할 시 응답 | 리다이렉트 |
| 4xx | 잘못된 문법 등으로 발생한 클라이언트 오류 응답 | 클라이언트 오류 |
| 5xx | 서버가 유효한 요청을 수행하지 못하는 서버 오류 응답 | 서버 오류 |
4.HTTP Status Code 종류 및 설명
※ 참조 1 (위키): https://ko.wikipedia.org/wiki/HTTP_%EC%83%81%ED%83%9C_%EC%BD%94%EB%93%9C
※ 참조 2 (모질라재단) : https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
※ 참조 3 (W3 RFC) : https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
1) HTTP 1xx 상태코드 상세
| HTTP 상태코드 | 설명 |
| 100 | (계속) 클라이언트의 지속적인 요청을 요구 |
| 101 | 클라이언트에서 전송된 HTTP 헤더 내 Upgrade 요청에 따라, 정상적으로 프로토콜이 전환됨 Websocket 프로토콜로 전환 시 응답하는 경우 |
| 102 | 클라이언트의 요청을 수신하였으나, 처리 중 |
2) HTTP 2xx 상태코드 상세
| HTTP 상태코드 | 설명 |
| 200 | 오류 없이 정상적으로 요청을 처리함 |
| 201 | 오류 없이 정상적으로 요청을 처리하였으며, 신규 리소스가 생성됨 |
| 202 | 요청을 수신하였지만, 수락만 하였으며 처리하진 않음 |
| 203 | 수신된 요청 중 일부만 처리하여 응답 오리진 서버에서의 응답과 일치하지 않지만, 로컬이나 서드 파티 복사본에서 전달됨을 의미 |
| 204 | 요청에 대한 HTTP 응답 메시지의 HTTP 바디(콘텐츠)는 없지만, HTTP 헤드는 응답됨 리소스가 삭제되는 등, 요청된 리소으에 대한 응답 값이 존재하지 않는 경우 (DELETE Method) |
| 205 | 요청을 정상적으로 처리하였으며, 클라이언트의 문서 뷰를 리셋하라고 응답 |
| 206 | Range 헤더가 포함된 요청을 처리 후, Rnage 헤더에 포함된 데이터 부분을 응답 |
| 207 | 여러 리소스가 여러 상태 코드인 상황에서, 가장 적절한 경우에 해당되는 정보 전달 시 응답 |
3) HTTP 3xx 상태코드 상세
| HTTP 상태코드 | 설명 |
| 300 | 요청에 대해 한 가지 이상을 응답하여, 클라이언트에서 하나를 선택하여 응답 받도록 재요청 |
| 301 | 요청된 리소스의 URI가 변경되어 새로운 URI를 응답 |
| 302 | 요청된 리소스의 URI가 일시적으로 변경되었으며, 임시 URI를 응답 |
| 303 | 요청된 리소스가 GET Method를 이용한 다른 URI로 호출될 시 응답 |
| 304 | 캐싱를 목적으로 이용되며, 응답이 변경되지 않았으므로 클라이언트가 기존 캐시를 사용할 시 응답 |
| 305 | 요청 처리를 위해서 프록시를 통한 접속을 응답 |
| 307 | 요청된 리소스의 URI가 변경되어, 임시 URI를 응답하여 HTTP 302와 유사함 이전 요청과 동일한 Method로, 클라이언트가 재요청해야하는 차이점이 존재 |
| 308 | 요청된 리소스의 URI가 변경되어, 새로운 URI를 응답하여 HTTP 301과 유사함 이전 요청과 동일한 Method로, 클라이언트가 재요청해야하는 차이점이 존재 |
4) HTTP 4xx 상태코드 상세
| HTTP 상태코드 | 설명 |
| 400 | 잘못된 문법으로 인하여 서버가 요청을 이해하지 못할 시 응답 |
| 401 | 인증되지 않은 클라이언트에서 인증이 필요한 리소스를 요청할 시 응답 로그인되지 않은 클라이언트에서 서버로 인증이 필요한 리소스를 요청 |
| 402 | 개발 당시, 결제 시스템에 향후 사용 목적으로 예비용으로 설정하였으나 실제 이용은 적음 |
| 403 | 클라이언트에서 리소스에 대한 액세스 권한이 없는 경우에 응답 HTTP 401과 차이점은 서버에서, 해당 클라이언트는 식별된 상황 (로그인) |
| 404 | 클라이언트에서 요청 받은 리소스를 서버에서 찾을 수 없을 시 응답 |
| 405 | 클라이언트에서 HTTP 요청 메시지의 Method를 이해는 했지만, 사용될 수 없는 경우에 응답 |
| 406 | 클라이언트의 요청에 적절한 리소스를 응답할 수 없는 경우 |
| 407 | 프록시에 의해 완료된 인증이 없는 경우에 응답 HTTP 401과 유사하며, Proxy 인증이 차이점 |
| 408 | 오래된 요청에 대해, 서버가 사용되지 않는 연결을 제거할 시 응답 이 응답은 Chrome, Firefox(27+), IE9에서 웹 서핑 속도 증가를 위한 메커니즘에 의해 주로 응답됨 |
| 409 | 클라이언트의 요청이 서버에서 충돌이 발생한 경우에 응답 PUT Method에 의해 다른 버전의 파일이 업로드될 시 주로 응답됨 |
| 410 | 클라이언트에서 요청된 콘텐츠가 영구적으로 삭제되어, 대체 주소도 존재하지 않을 시 응답 클라이언트에서 요청된 콘텐츠와 관련된 캐시와 리소스에 대한 링크를 삭제하도록 응답 |
| 411 | 클라이언트에서 HTTP 헤더에 서버에서 필요한 Content-Length가 없는 경우에 응답 |
| 412 | 클라이언트에서 전송된 HTTP 헤더에 서버가 충족하지 않는 헤더가 포함될 시 응답 |
| 413 | 클라이언트에서 요청이 서버에서 정의한 한계 수치보다 클 경우에 응답 |
| 414 | 클라이언트에서 요청된 URI가 서버에서 처리되는 길이보다 긴 경우에 응답 |
| 415 | 클라이언트에서 요청된 미디어 포맷이 서버에서 지원하지 않는 경우에 응답 |
| 416 | 클라이언트에서 요청된 Range 헤더 필드 값 범위가 URI 크기를 벗어났을 경우에 응답 |
| 417 | 클라이언트에서 요청된 Expect 헤더 필드 값이 서버에서 지원하지 않는 경우에 응답 |
| 418 | HTCPCP 메소드에 대한 응답 값으로, 만우절 장난으로 만들어진 커피 서비스를 위한 응답 |
| 421 | 클라이언트에서 요청된 URI와 연결된 스킴과 권한을 구성하여 응답을 생성할 수 없는 경우에 응답 |
| 423 | 클라이언트에서 요청된 URI에 접근하지 못하도록 잠금 처리되었을 시 응답 |
| 426 | 현재 요청된 Upgrade 헤더로 처리가 불가하나, 변경 시 요청 처리가 가능한 경우에 응답 응답 시, 가능한 Upgrade 헤더와 프로토콜 정보를 같이 회신 |
| 429 | 클라이언트가 지정된 시간 안에 너무 많은 요청을 보낸 경우에 응답 |
| 431 | 클라이언트에서 요청된 헤더 필드가 너무 커서, 서버에서 요청을 처리하지 않는 경우에 응답 |
| 451 | 클라이언트에서 요청된 URI가 정부 등에서 검열된 경우에 응답 |
5) HTTP 5xx 상태코드 상세
| HTTP 상태코드 | 설명 |
| 500 | 서버에 문제가 있을 시 응답 (상세 정보를 확인할 순 없음) |
| 501 | 요청을 처리하기 위한 기능이 서버에 없는 경우에 응답 |
| 502 | 서버가 게이트웨이로부터 잘못된 응답을 수신한 경우에 응답 서버가 다른 서버로부터 유효한 값을 정상적으로 회신 받지 못한 경우에 발생 |
| 503 | 서버의 일부 외부 서비스가 멈추거나, 이용할 수 없는 상태일 시 응답 과부하 또는 점검 등으로 서버 동작이 중단된 경우에 응답 |
| 504 | 프록시나 게이트웨이 역할을 수행하고 있는 서버가 다른 서버로부터 응답을 받지 못한 경우에 응답 |
| 505 | 클라이언트에서 서버에서 허용되지 않는 HTTP 버전으로 요청한 경우에 응답 |
| 506 | 서버 내부 구성 오류가 발생한 경우에 응답 |
| 507 | 서버에서 처리된 요청을 저장할 수 있는 공간이 부족한 경우에 응답 |
| 508 | 서버가 요청 처리 간 무한 루프에 빠진 경우에 응답 |
| 510 | 서버에서 요청 처리를 위해서는 추가적인 기능이 필요한 경우에 응답 |
| 511 | 클라이언트가 네트워크 액세스 권한을 획득하기 위해서는 인증이 요구될 시 응답 |
'기초 공부 > 웹' 카테고리의 다른 글
| [WEB] HTML / CSS / Javascript 란 ? _ 1편 HTML (0) | 2022.10.31 |
|---|---|
| [WEB] 쿠키와 세션 (Cookie &Session) (0) | 2022.10.06 |
| [WEB] 웹 브라우저란? (0) | 2022.09.30 |
| [WEB] HTTP /HTTPS 이란? (0) | 2022.09.27 |
| [WEB] WEB이란? (0) | 2022.09.26 |