HPPT 요청메서드
HTTP 요청 메소드란?
클라이언트가 웹 서버에게 사용자 요청의 목적/종류를 알리는 수단이다.
GET
GET메서드는 서버로부터 데이터를 취득하는 메서드 입니다
GET 메소드는 서버의 데이터를 취득할 때 사용하는 메소드이다. 굉장히 자주 이용되는 메소드이며, Web 페이지, 이미지, 영상 등을 취득할 때 사용한다.
// 요청 예시
GET /HTTP/1.1
Host: foo.com
요청에 본문 존재: 아니오
성공 응답에 본문 존재: 예
안전함: 예
멱등성: 예
캐시 가능: 예
HTML 양식에서 사용 가능: 예
HEAD
HEAD 메서드는 GET 메서드와 동일한 응답을 요구하지만 응답 본문을 포함하진 않습니다.
즉 서버 리소스의 헤더 만 취득합니다
POST
포스트 메서드는 서버에 데이터를 추가, 작성을 하는 메서드 입니다
POST 메소드는 서버로 데이터를 전송하고, 요청 유형은 Content-Type 헤더로 나타낸다.
예를 들어, 벨로그에 새로운 게시글을 올릴 때와 같이 새로운 리소스에 데이터를 만들 때 주로 사용한다. 또한 기존의 데이터를 수정할 때도 사용되기도 하며, 다른 메소드로는 할 수 없는 작업일 때 사용되기도 하는데 대표적인 예가 검색결과를 표시하는 URI를 들 수 있다.
일반적으로는 URI에 검색 키워드를 넣어 GET하는 것이 가능하지만, 키워드가 매우 긴 경우에는 URI를 통해 GET하는 것은 좋지 않다. 이럴 때 POST 메소드를 사용하면 좋다.
// 요청 예시
POST / HTTP/1.1
Host: foo.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 13
say=Hi&to=Mom
PUT
서버의 데이터를 갱신, 작성하는 메서드 입니다
DELETE
서버의 데이터를 삭제 하는 메서드 입니다.
메소드 이름 그대로 DELETE 메소드는 특정 리소스를 삭제하는데 사용된다.
DELETE /file.html HTTP/1.1
OPTION
리소스가 지원하고 있는 메소드를 취득하는 메서드 입니다 .
PATCH
리소스의 일부분을 수정하는 메서드 입니다
HTTP Method는 크게 GET, POST, PUT, DELETE가 대표적이며,
보통 CRUD에서 조회는 GET, 등록은 POST, 수정은 PUT, 삭제는 DELETE를 이용한다.
GET과 DELETE는 비교적 그 행위가 명확하지만, POST와 PUT을 구분하기 위해서는 멱등성의 개념을 알아야 합니다
멱등성이란 여러번 수행해도 결과가 같음을 의미한다.
HTTP 메소드를 예를 들자면, GET, PUT, DELETE는 같은 경로로 여러 번 호출해도 결과가 같다.
그러나 POST는 매 호출마다 새로운 데이터가 추가된다.
따라서, POST 연산은 결과가 Idempotent하지 않지만, PUT은 반복 수행해도 그 결과가 Idempotent 하다.
💡 PUT vs. PATCH
PATCH와 PUT은 둘 다 데이터의 수정을 위한 method이다.
이 둘의 차이점은
PUT 요청 시 요청을 일부분만 보낸 경우 나머지는 default 값으로 수정되는 게 원칙이므로,
바뀌지 않는 속성도 모두 보내야 한다.
(만약 전체가 아닌 일부만 전달할 경우, 전달한 필드외 모두 null 혹은 default 값처리되니 주의해야한다.)
예를 들어, PUT HTTP 메소드로 gildong 이라는 유저의 나이(age)를 15로 변경하고자 할때
수정된 값만 보낼 경우, 보내지 않은 데이터는 null로 변경되어 버린다.
따라서, PUT 요청 시에는 아래와 같이 변경되지 않는 데이터도 모두 전달해야한다.
따라서, 자원의 일부를 수정할 때는 PATCH를, 전체적인 수정이 필요할 때는 PUT을 이용하는 것이 적절하다.
출처: https://devuna.tistory.com/77 [튜나 개발일기]
HTTP 상태 코드
200 OK
요청이 성공적으로 되었습니다. 성공의 의미는 HTTP 메소드에 따라 달라집니다:
GET: 리소스를 불러와서 메시지 바디에 전송되었습니다.
HEAD: 개체 해더가 메시지 바디에 있습니다.
PUT 또는 POST: 수행 결과에 대한 리소스가 메시지 바디에 전송되었습니다.
TRACE: 메시지 바디는 서버에서 수신한 요청 메시지를 포함하고 있습니다.
202 Accepted
요청을 수신하였지만 그에 응하여 행동할 수 없습니다. 이 응답은 요청 처리에 대한 결과를 이후에 HTTP로 비동기 응답을 보내는 것에 대해서 명확하게 명시하지 않습니다. 이것은 다른 프로세스에서 처리 또는 서버가 요청을 다루고 있거나 배치 프로세스를 하고 있는 경우를 위해 만들어졌습니다
306 unused
이 응답 코드는 더이상 사용되지 않으며, 현재는 추후 사용을 위해 예약되어 있습니다. 이것은 HTTP 1.1 기술사양 이전 버전에서 사용되었습니다.
404 Not Found
서버는 요청받은 리소스를 찾을 수 없습니다. 브라우저에서는 알려지지 않은 URL을 의미합니다. 이것은 API에서 종점은 적절하지만 리소스 자체는 존재하지 않음을 의미할 수도 있습니다. 서버들은 인증받지 않은 클라이언트로부터 리소스를 숨기기 위하여 이 응답을 403 대신에 전송할 수도 있습니다. 이 응답 코드는 웹에서 반복적으로 발생하기 때문에 가장 유명할지도 모릅니다.