티스토리 뷰
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
- 그리디
- bfs
- 단계별로 문제풀이
- git
- Python
- 정렬
- 2020 카카오 인턴십
- repository
- Summer/Winter Coding(~2018)
- 열혈강의
- 이것이 코딩테스트다
- Idempotent
- BOJ
- dfs
- spring boot 2.3.1
- 저장소
- 그래프
- 자료구조
- DP
- Algorithm
- Algorihtm
- binary search
- 구현
- 백준
- 코틀린
- 알고리즘
- 깃
- OS
- programmers
- 2019 카카오 개발자 겨울 인턴십
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |