HTTP 메소드와 상태코드
HTTP란 ?
HTTP(Hyper Text Transfer Protocol)는 인터넷에서 데이터를 주고받을 수 있는 프로토콜
클라이언트와 서버 사이에 이루어지는 요청/응답 (request/response) 프로토콜
HTTP 메소드란?
클라이언트가 웹 서버에 사용자의 요청과 해당 요청의 종류를 알리는 수단
HTTP 메소드 종류
GET
- 서버에게 리소스를 달라는 요청
HEAD
- GET과 같지만, 서버는 응답으로 헤더만 반환
- 클라이언트는 리소스를 가져올 필요 없이 헤더만을 통해 정보를 얻어옴
PUT (수정)
- 서버가 Request의 본문을 갖고 요청 URI의 이름대로 새 문서를 만들거나, 요청 본문을 변경할 때 사용
PATCH (수정)
- 부분적인 수정을 적용하기 위한 메서드
POST (삽입)
- 서버에 입력 데이터를 전송하며 Request의 Body에 데이터를 넣어 서버에 전송
DELETE(삭제)
- 서버에서 요청받은 URI 리소스를 삭제하도록 요청
- 클라이언트에서는 항상 삭제된다고 생각하지만, 서버에서 해당 요청을 무시할 수 있음
CONNECT
- 동적으로 터널 모드를 교환, 프락시 기능을 요청시 사용
OPTIONS
- 타겟 서버가 어떠한 메서드들을 지원하는지 알아보기 위한 메서드
TRACE
- packet의 변조를 확인하기 위해 사용
- 원본 데이터와 서버에 도달했을 때의 비교본 데이터를 서버의 응답 Body를 통해 확인할 수 있음
- 요청의 최종 수신자는 반드시 송신자에게 200 응답의 Body로 수신한 메시지를 반송해야 함
- 최초 클라이언트의 요청에는 Body가 포함될 수 없음
RFC(Request for Comments)?
-
- RFC 7231 : HTTP/1.1에 대한 명세 문서
- RFC 5789 : PATCH Method for HTTP 에 대한 명세 문서미국의 국제 인터넷 표준화기구인 IETF(Internet Engineering Task Force)에서 제공, 관리하는 문서로 각종 기술들의 표준이나 기술, 연구 결과, 절차 등을 정리해 놓음
HTTP 상태 코드
1XX (정보 제공)
코드 | 메시지 | 설명 |
---|---|---|
100 | Continue | 클라이언트로부터 일부 요청을 받았으니 나머지 요청 정보를 계속 보내주기 바람. |
101 | Switching Protocols | 서버는 클라이언트의 요청대로 Upgrade 헤더를 따라 다른 프로토콜로 바꿀 것 |
2XX (성공)
코드 | 메시지 | 설명 |
---|---|---|
200 | OK | 요청이 성공적으로 수행되었음을 의미, 주로 GET 요청에 대한 응답 |
202 | Created | 요청이 성공적으로 수행되었으며, 그 결과로 새로운 리소스가 생성됨을 의미. 주로 POST 요청에 대한 응답 |
203 | Non-Authoritaive Information | 요청이 성공적으로 수행되었으나, 요청에 대한 검증이 되지 않았음을 의미 |
204 | No Content | 요청이 성공적으로 수행 되었고, 응답 payload에 보낼 데이터가 없음을 의미. 주로 DELETE 요청에 대한 응답 |
205 | Reset Content | 서버가 요청을 성공적으로 처리했지만 콘텐츠를 표시하지 않음. 클라이언트가 콘텐츠를 재 설정할 것을 요구해야 함 |
206 | Partial Content | 서버가 GET 요청의 일부만 성공적으로 처리했음을 의미 |
3XX : 리다이렉션 완료
코드 | 메시지 | 설명 |
---|---|---|
300 | Multiple Choices | 요청에 대해 하나 이상의 리소스가 존재함 |
301 | Moved Permanently | 요청한 리소스의 URI가 변경되었음을 의미 |
302 | Found | 요청한 리소스의 URI가 일시적으로 변경됨 |
303 | See Other | 요청한 리소스를 다른 URI에서 GET 요청을 통해 얻어가야 할 때의 응답 |
304 | Not Modified | 수정되지 않았음을 의미 |
307 | Temporary Redirect | 302와 유사하며, User-Agent가 반드시 HTTP 메소드를 변경하지 말아야 한단 점만 다름 |
308 | Permanent Redirect | 301과 유사하며, User-Agnet가 반드시 HTTP 메소드를 변경하지 말아야 한단 점만 다름 |
4XX (클라이언트 요청 오류)
코드 | 메시지 | 설명 |
---|---|---|
400 | Bad Request | 잘못된 요청을 의미 |
401 | Unauthorized | 인증이 필요하다는 의미의 상태 코드. 상태 코드 이름이 권한 없음(Unauthorized)로 되어 있지만 실제 뜻은 인증 안됨(Unauthenticated)에 더 가까움 |
402 | Payment Required | 디지털 결제 시스템에 사용하기 위하여 만들어져 있지만 사용되지 않음 |
403 | Forbidden | 콘텐츠에 접근할 권한이 없음, 401과 다른 점은 서버가 클라이언트를 알고 있음, 근데 접근 안 시켜줌 https://dextto.tistory.com/234 (인증과 인가) |
404 | Not Found | 요청받은 리소스를 찾을 수 없음 |
405 | Mothod Not Allowed | 요청 메소드를 제거 하는 것. 필수적인 메소드인 GET과 HEAD는 제거될 수 없음 |
5XX (서버 에러)
코드 | 메시지 | 설명 |
---|---|---|
500 | Internal Server Error | 서버에 오류가 발생하여 요청을 수행할 수 없음 |
501 | Not Implemented | 서버에 요청을 수행할 수 없는 기능이 없음 ( 처리 메소드가 구현되어 있지 않음 ) |
502 | Bad Gateway | 서버가 게이트웨이로부터 잘못된 응답을 수신 했음을 의미 |
503 | Service Unavailable | 서버가 현재 요청을 처리할 수 없는 상태임을 의미 |
504 | Gateway Timeout | 제 때 응답을 받지 못했음을 의미 |
505 | HTTP Version Not Supported | 서버에서 지원되지 않는 HTTP 프로토콜 버전을 사용하여 요청 했을 때. |
'CS > 네트워크' 카테고리의 다른 글
HTTP와 HTTPS (0) | 2022.12.09 |
---|---|
REST와 REST API (1) | 2022.11.29 |
OSI 7계층 & Internet 5계층 (0) | 2022.11.27 |
Circuit Switching vs Packet Switching (0) | 2022.11.27 |
Client-Server Model (0) | 2022.11.21 |