티스토리 뷰

CS/Network

HTTP Method

du0422 2020. 6. 29. 16:47
HTTP Method Request has Body Response has Body Safe Idempotent Cacheable
GET Optional Yes Yes Yes Yes
POST Yes Yes No No Yes
PUT Yes Yes No Yes No
DELETE Optional Yes No Yes No

 

 자주 사용하는 Method만 작성을 했다.

 '한국 위키피디아', 'HTTP 완벽 가이드'에는 Request has Body에 있는 Optional 부분은 No라고 되어있다.

     GET, DELETE도 Body를 가질 수 있지만, 좀 더 의미에 맞게 사용하자는 의도가 아닐까 생각한다.

 

 

Method

 

GET

 지정한 리소스를 조회한다.

 

GET /board/1 HTTP/1.1

GET 요청 시 기존의 게시글을 가져온다.

 

POST

 지정한 리소스를 등록한다.

     식별자를 포함하지 않는다.

 

POST /board HTTP/1.1

POST 요청 시 게시글을 등록한다.

 

PUT

 지정한 리소스를 수정한다. 해당 리소스가 존재하지 않으면 등록한다.

     식별자 포함해서 요청한다. (POST와 가장 큰 차이)

     해당 리소스가 존재하는지 상관하지 않는다.

 

PUT /board/1 HTTP/1.1

PUT 요청 시 게시글을 수정한다. 게시글이 존재하지 않으면 등록한다.

 

DELETE

 지정한 리소스를 삭제한다.

 

DELETE /board/1 HTTP/1.1

 

 DELETE 요청 시 게시글을 삭제한다.

 

Safe

서버의 상태를 바꾸지 않는 요청을 말한다. 즉 side effect가 존재하지 않는다.

     GET과 같은 요청은 데이터를 읽기(read-only)만 할 뿐 서버의 상태를 바꾸지 않는다.

     나머지 요청은 리소스를 추가, 수정, 삭제하기 때문에 서버의 상태를 변화시킨다.

 

Idempotent

동일한 요청을 여러 번 보낼 때, 동일한 결괏값을 만들어 내야 한다.

     GET은 당연히 리소스의 변화가 없기 때문에 동일한 요청을 여러 번 보냈을 때, 동일한 결괏값을 만들어낸다.

     PUT, DELETE는 리소스의 변화가 있지만, 동일한 결괏값을 예상할 수 있다.

         1번 글을 수정할 때 (PUT /board/1 로 요청했을 때) 1번 글이 수정된 걸 확인할 수 있다.

         재요청을 했을 때 '1번 글을 수정해'라는 메시지를 보내면, 1번 글을 수정한다. 2번글을 수정하지 않는다.

         1번 글을 삭제할 때 (DELETE /board/1 로 요청했을 때) 1번 글이 삭제된 걸 확인할 수 있다.

         재요청을 한다고 해도 '1번 글을 삭제해'라는 메시지를 보내면, 1번 글을 삭제한다. 2번글을 삭제하지 않는다.

         물론 1번 글이 없다면 에러가 날 수는 있다.

     POST는 리소스의 변화도 있고, 동일한 결괏값을 예상할 수 없다.

         글을 등록하는 요청을 여러 번 보낼 경우, 여러 개의 글이 등록된다.

         즉, 새로운 리소스가 계속 추가된다.

 

참고자료

 

https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods

 

Hypertext Transfer Protocol - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Application protocol for distributed, collaborative, hypermedia information systems Hypertext Transfer ProtocolInternational standardRFC 1945 HTTP/1.0 (1996) RFC 2616 HTTP/1.1 (1999) R

en.wikipedia.org

 

https://restfulapi.net/idempotent-rest-apis/

 

Idempotent REST APIs – REST API Tutorial

 

restfulapi.net

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함