⌨️ HTTP 메서드
클라이언트와 서버 사이에 이루어지는 요청과 응답 데이터를 전송하는 방식
1. 주요 메서드
1.1. GET
GET 메서드는 특정 리소스의 표시를 요청합니다.
GET 을 사용하는 요청은 오직 데이터를 받기만 합니다.
요청에 본문 존재 | 아니오 |
안전함* | 예 |
멱등성* | 예 |
캐시가능* | 예 |
HTML 양식에서 사용 가능 | 예 |
1.2. POST
POST 메서드는 특정 리소스에 엔티티를 제출할 때 쓰입니다. 이는 종종 서버의 상태의 변화나 부작용을 일으킵니다.
요청에 본문 존재 | 예 |
성공 응답에 본문 존재 | 예 |
안전함* | 아니오 |
멱등성* | 아니오 |
캐시가능* | 신선도 정보 포함 시 |
HTML 양식에서 사용 가능 | 예 |
1.3. PUT
PUT 메서드는 요청 페이로드를 사용해 새로운 리소스를 생성하거나, 대상 리소스를 나타내는 데이터를 대체합니다.
요청에 본문 존재 | 예 |
성공 응답에 본문 존재 | 아니오 |
안전함* | 아니오 |
멱등성* | 예 |
캐시가능* | 아니오 |
HTML 양식에서 사용 가능 | 아니오 |
PUT과 POST의 차이는 멱등성으로, PUT은 멱등성을 가집니다. PUT은 한 번을 보내도, 여러 번을 연속으로 보내도 같은 효과를 보입니다. 즉 사이드 이펙트가 없습니다.
반면 POST는 보통 HTML 양식을 통해 서버에 전송하며, 서버에 변경사항을 만듭니다.
1.4. PATCH
PATCH 메서드는 리소스의 부분적인 수정을 할 때에 사용됩니다.
요청에 본문 존재 | 예 |
성공 응답에 본문 존재 | 예 |
안전함* | 아니오 |
멱등성* | 아니오 |
캐시가능* | 아니오 |
HTML 양식에서 사용 가능 | 아니오 |
PUT 메서드는 문서 전체의 완전한 교체만을 허용합니다.
반면 PATCH 메서드는 PUT 메소드와 달리 멱등성을 가지지 않는 데 이는 동일한 PATCH 요청이 다른 결과를 야기할 수도 있음을 뜻합니다. 즉 사이드 이펙트를 일으킬 가능성이 있습니다.
1.5. DELETE
DELETE 메서드는 지정한 리소스를 삭제합니다.
요청에 본문 존재 | 예 |
성공 응답에 본문 존재 | 예 |
안전함* | 아니오 |
멱등성* | 예 |
캐시가능* | 아니오 |
HTML 양식에서 사용 가능 | 아니오 |
2. 기타
2.1. HEAD
GET 메서드의 요청과 동일한 응답을 요구하지만, 응답 본문을 포함하지 않습니다.
메서드의 대한 응답은 본문을 가져선 안되며, 본문이 존재하더라도 무시해야 합니다.
요청에 본문 존재 | 아니오 |
성공 응답에 본문 존재 | 아니오 |
안전함* | 예 |
멱등성* | 예 |
캐시가능* | 예 |
HTML 양식에서 사용 가능 | 아니오 |
2.2. OPTIONS
OPTIONS 메서드는 목적 리소스의 통신을 설정하는 데 쓰입니다.
요청에 본문 존재 | 아니오 |
성공 응답에 본문 존재 | 예 |
안전함* | 예 |
멱등성* | 예 |
캐시가능* | 아니오 |
HTML 양식에서 사용 가능 | 아니오 |
2.3. CONNECT
CONNECT 메서드는 목적 리소스로 식별되는 서버로의 터널을 맺습니다.
예를 들어 SSL(HTTPS) 를 사용하는 웹사이트에 접속하는 데 사용될 수 있습니다. 클라이언트는 원하는 목적지와의 TCP 연결을 HTTP 프록시 서버에 요청합니다.
그러면 서버는 클라이언트를 대신하여 연결의 생성을 진행합니다. 한번 서버에 의해 연결되면 프록시 서버는 클라이언트 에 오고가는 TCP 스트림을 계속해서 프록시합니다.
CONNECT 는 홉바이홉 메서드입니다.
요청에 본문 존재 | 아니오 |
성공 응답에 본문 존재 | 예 |
안전함* | 아니오 |
멱등성* | 아니오 |
캐시가능* | 아니오 |
HTML 양식에서 사용 가능 | 아니오 |
2.4. TRACE
TRACE 메서드는 목적 리소스의 경로를 따라 메시지 loop-back 테스트를 합니다.
타깃리소스에 대한 경로를 따라 메시지 루프백 테스트를 실행하여 유용한 디버깅 메커니즘을 제공합니다.
요청에 본문 존재 | 아니오 |
성공 응답에 본문 존재 | 아니오 |
안전함* | 예 |
멱등성* | 예 |
캐시가능* | 아니오 |
HTML 양식에서 사용 가능 | 아니오 |
3. HTTP 메서드의 속성
- 안전함(Safe Methods)
HTTP 메서드가 서버의 상태를 바꾸지 않으면 그 메서드가 안전하다고 말합니다.
다른 말로 하면, Read-Only 한 메서드들이 안전합니다. 예로 GET, HEAD, OPTIONS가 있습니다. - 멱등성(Idempotent Methods)
동일한 요청을 한 번 보내는 것과 여러번 연속으로 보내는 것이 같은 효과를 지니고, 서버의 상태도 동일하게 남을 때 해당 HTTP 메서드가 멱등성을 가졌다고 말합니다.
다른 말로 멱등성 메서드에는 어떠한 사이드 이펙트도 존재해서는 안됩니다. - 캐시가능(Cacheable Methods)
캐시할 수 있는 HTTP 응답으로, 나중에 검색하고 사용하기 위해 저장하여 새 요청을 서버에 저장합니다.
자세한 것은 MDN Ref 확인
4. HTTP 상태코드
1xx : 요청이 수신되어 처리중
거의 사용 X
2xx : 요청 정상 처리
200 OK : 요청 성공
201 Created : 요청 성공해서 새로운 리소스 생성
202 Accepted: 요청 접수, 처리 완료되지 않음
204 No Content : 서버 요청 성공, 응답 페이로드 본문 데이터 X
3xx : 요청을 완료하려면 추가 행동이 필요
300 번대는 리다이렉션 위주
301 Moved Permanently : 리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있음
302 Found : 리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있음
303 See Other : 리다이렉트시 요청 메서드가 GET으로 변경
304 Not Modified : 캐시를 목적으로 사용
307 Temporary Redirect : 리다이렉트시 요청 메서드와 본문 유지(요청 메서드를 변경하면 안된다.)
308 Permanent Redirect : 리다이렉트시 요청 메서드와 본문 유지(처음 POST를 보내면 리다이렉트도 POST 유지)
4xx : 클라이언트 오류 , 잘못된 문법등으로 서버가 요청을 수행할 수 없음
400번대는 클라이언트 측에서 오류가 발생했다고 알려줌
400 Bad Request : 클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없음
401 Unauthorized : 인증 필요
403 Forbidden : 서버가 요청을 이해했지만 승인 거부
404 Not Found : 요청 리소스 없음
5xx : 서버 오류, 서버가 정상 요청을 처리하지 못함
500 Internal Server Error : 서버 문제로 오류 발생, 애매하면 500 뜸 이거 잘 캐치해서 에러 핸들링 해줘야함
503 Service Unavailabl : 서비스 이용 불가
🌟REFERENCE
BLOG : @Hocaron velog LINK
MDN : https://developer.mozilla.org/en-US/docs/Web/HTTP