클라이언트와 서버 사이에 이루어지는 요청(Request)과 응답(Response) 데이터를 전송하는 방식을 일컫는다. 쉽게 말하면 서버에 주어진 리소스에 수행하길 원하는 행동, 서버가 수행해야 할 동작을 지정하는 요청을 보내는 방법입니다.
HTTP request methods - HTTP | MDN
HTTP defines a set of request methods to indicate the desired action to be performed for a given resource. Although they can also be nouns, these request methods are sometimes referred to as HTTP verbs. Each of them implements a different semantic, but som
developer.mozilla.org
주요 메서드
- GET : 리소스 조회 (Read)
- 만일 틀서버에 전달하고 싶은 데이터는 쿼리스트링를 통해서 전달
- GET /members/100?username=test
- 쿼리스트링 외에 메시지 바디를 사용해서 데이터를 전달할 수 있지만, 서버에서 따로 구성해야 되기 때문에 지원하지 않는 곳이 많아서 권장하지 않음
- 조회할 때 POST도 사용할 수 있지만, GET 메서드는 캐싱이 가능하기에 GET을 사용하는 것이 유리하다.
- 만일 틀서버에 전달하고 싶은 데이터는 쿼리스트링를 통해서 전달
- POST : 요청 데이터 처리, 주로 등록에 사용 (Create)
- 메시지 바디(body)를 통해 서버로 요청 데이터 전달하면 서버는 요청 데이터를 처리하여 업데이트
- 전달된 데이터로 주로 신규 리소스 등록, 프로세스 처리에 사용
- 만일 데이터를 GET 하는데 있어, JSON으로 조회 데이터를 넘겨야 하는 애매한 경우 POST를 사용
- PUT : 리소스를 대체(수정), 해당 리소스가 없으면 생성 (Update)
- 만일 요청 메세지에 리소스가 있으면 덮어쓰고, 없으면 새로 생성한다.
- 보내지 않은 값에 null 할당.
PUT /member/100 { name : "test", age : 10 } |
회원 (member) | 100 |
이름 (name) | test | |
나이 (age) | 10 |
PUT /member/100 { name : "mhh" } |
회원 (member) | 100 |
이름 (name) | mhh | |
나이 (age) | null |
- PATCH : 리소스 부분 변경 (PUT이 전체 변경, PATCH는 일부 변경)
- 만일 PATCH를 지원하지 않는 서버에서는 대신에 POST를 사용할 수 있다.
PATCH /member/100 { name : "mhh" } |
회원 (member) | 100 |
이름 (name) | mhh | |
나이 (age) | 10 |
- DELETE : 리소스 삭제
- 상태코드는 대부분 200을 사용하고 상황에 따라 204를 사용한다.
기타 메서드
- HEAD : GET과 동일하지만 메시지 부분(body 부분)을 제외하고, 상태 줄과 헤더만 반환
- GET과 동일하지만 서버에서 Body를 Return 하지 않음
- Resource를 받지 않고 오직 찾기만 원할때 사용 (응답의 상태 코드만 확인할때)
- 서버의 응답 헤더를 봄으로써 Resource가 수정 되었는지 확인
- OPTIONS : 대상 리소스에 대한 통신 가능 옵션(메서드)을 설명(주로 CORS에서 사용)
- 예비 요청(Preflight)에 사용되는 HTTP 메소드
- 예비 요청이란 본 요청을 하기 전에 안전한지 미리 검사하는 것이라고 보면 된다
- 서버의 지원 가능한 HTTP 메서드와 출처를 응답 받아 CORS 정책을 검사하기 위한 요청이다.
- CONNECT : 대상 자원으로 식별되는 서버에 대한 터널을 설정
- TRACE : 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행
- 이 메서드도 일종의 검사용 이다.
- 클라이언트의 요청 패킷이 방화벽, Proxy 서버, Gateway 등을 거치면서 패킷의 변조가 일어날 수 있는데, 이 때 서버에 도달 했을 때의 최종 패킷의 요청 패킷 내용을 응답 받을 수 있다.
- 즉, 요청했던 패킷 내용과 응답 받은 요청 패킷 내용을 비교하여 변조 유무를 확인 할 수 있다
- 요청의 최종 수신자는 반드시 송신자에게 200(OK) 응답의 내용(Body)로 수신한 메세지를 반송해야 한다.
- 최초 Client의 요청에는 Body가 포함될수 없다.
HTTP 상태코드
http 상태 코드는 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능
- 1xx(정보) : 요청을 받았으며 프로세스를 계속 진행합니다.
- 2xx(성공) : 요청을 성공적으로 받았으며 인식했고 수용하였습니다.
- 3xx(리다이렉션) : 요청 완료를 위해 추가 작업 조치가 필요합니다.
- 4xx(클라이언트 오류) : 요청의 문법이 잘못되었거나 요청을 처리할 수 없습니다.
- 5xx(서버 오류) : 서버가 명백히 유효한 요청에 대한 충족을 실패했습니다.
HTTP 상태 코드 정리 | 와탭 블로그
HTTP 응답 상태 코드의 목록을 정리하여 소개합니다. 클라이언트의 요청에 따라 어떻게 서버가 응답하는지 알아봅시다.
www.whatap.io
참고
- https://inpa.tistory.com/entry/WEB-%F0%9F%8C%90-HTTP-%EB%A9%94%EC%84%9C%EB%93%9C-%EC%A2%85%EB%A5%98-%ED%86%B5%EC%8B%A0-%EA%B3%BC%EC%A0%95-%F0%9F%92%AF-%EC%B4%9D%EC%A0%95%EB%A6%AC
- https://velog.io/@haron/HTTP-%EB%A9%94%EC%84%9C%EB%93%9C%EC%97%90-%EB%8C%80%ED%95%B4-%EC%95%84%EB%8A%94%EB%8C%80%EB%A1%9C-%EB%A7%90%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94
'Web' 카테고리의 다른 글
window에서 nginx사용하기 (0) | 2024.05.12 |
---|---|
Windows의 네트워크 설정을 조작하는 netsh 도구를 사용하여 포트포워딩 (0) | 2024.05.12 |
외부 폰트 적용하기 (0) | 2023.12.12 |
[vercel]배포 ERESOLVE could not resolve error (0) | 2023.04.16 |
CORS(Cross-Origin Resource Sharing) 출처가 다른 자원들을 공유 (0) | 2023.04.11 |