REST API: POST & PUT
idempotent
Post와 Put의 차이점은 idempotent 개념의 도입 여부다. idempotent 은 한글로 멱등법칙이다.
같은 연산을 반복해도 같은 값이 나온다는 뜻이다. 즉, 같은 값을 보장한다.
POST
1 2 3 | POST /members HTTP/1.1 { name: "홍길동", age: 26, favorite: "사과" } HTTP/1.1 201 Created | cs |
POST 메소드를 실행하면 /members/1 에 리소스가 생긴다. 다시 실행하면 /members/2 , /members/3 순으로 각각 다른 곳에 새로운 리소스가 생성된다. 즉, 이 연산은 idempotent 에 만족하지 않는다.
PUT
name이 홍길동인 리소스를 수정해보자. favorite 속성을 사과에서 바나나로 수정하는 요청이다.
1 2 | PUT /members/1 HTTP/1.1 { name: "홍길동", age: 26, favorite: "바나나" } | cs |
POST와 달리 리소스의 위치를 지정해준다. 몇 번을 요청을 보내더라도 같은 결과를 보장한다. 즉, 이 연산은 idempotent 에 만족한다.
Response Code
201 Created : POST 또는 PUT 메소드가 리소스를 새로 생성할 경우. 응답 헤더의 Location 필드에 담는다.
200 OK, 204 No Content : 리소스를 생성할 때, URI 를 확인할 수 없는 경우 보내기도 한다.
202 Accepted : 서버가 비동기로 처리를 할 때, 요청은 인식했으나 응답은 보내주지 못할 경우 보낸다.
Safe Methods
리소스를 수정하지 않는 메소드를 Safe 하다고 한다. 그 예는 GET, HEAD, OPTIONS 등이다. idempotent를 만족하면 대부분 safe 하다. 그러나 DELETE의 경우 idempotent 하지만 리소스를 삭제하므로 safe 하지 않다. 원문은 RFC 7231: Safe Methods 에 있다.
OPTIONS : 해당 리소스의 연산(operation)이 무엇이 있는지 응답을 요청하는 메소드. 응답 헤더의 Allow 에 가능한 operation 이 온다. 다음은 RFC2616 의 내용을 가져왔다.
The OPTIONS method represents a request for information about the communication options available on the request/response chain identified by the Request-URI. This method allows the client to determine the options and/or requirements associated with a resource, or the capabilities of a server, without implying a resource action or initiating a resource retrieval.
'Back-End > Back-End 자료실' 카테고리의 다른 글
[Ruby On Rails] pg Gem 설치 오류 해결하기 (0) | 2018.05.21 |
---|---|
REST API: PUT & PATCH (0) | 2018.05.08 |
CoC (Convention over Configuration) (0) | 2018.05.08 |
[ Ruby on Rails ] Devise 젬과 PaperClip 젬 사용하기 (2) | 2017.05.01 |
[ Ruby on Rails ] 시간대 서울로 맞추기 ( Timezone Seoul ) (2) | 2016.08.22 |
댓글