2017-12-17 33 views
0

내 목표는 PUT 동사로 구현 된 멱등 원/작성 REST API를 만드는 것입니다.PUT 만들기 REST API에서 요청 멱등 원 생성

Idempotent RFC 상태 : 요청이
클라이언트가 서버의 응답을 읽을 수 전에 통신 오류가 발생할 경우
가 자동으로 반복 될 수 있기 때문에

멱등 방법은 구별된다. 예를 들어
클라이언트가 PUT 요청을 보내고 응답이 수신되기 전에
기본 연결이 닫히면 클라이언트는 새로운
연결을 설정하고 멱등 원 (Idempotent) 요청을 다시 시도 할 수 있습니다. 응답이 다를 수도 있지만 원래
요청이 성공하더라도 요청을 반복하여 을 요청하면 동일한 의도 된 효과가 나타납니다.

PUT RFC 상태 : 대상 리소스가 현재 표시되어 있지 않으며 PUT 성공적 다음 오리진 서버는 (201)를 전송함으로써
사용자 에이전트 알려야 하나 만들면

(등재) 응답. 대상
자원에 현재 표현이 있고 그 표현이 표현의 상태에 따라 성공적으로 수정 된 경우 해당 원 서버는 200 (OK) 또는 204 응답으로
요청이 완료되었음을 나타냅니다.

/create는 생성 된 리소스를 DB에 저장한다고 가정하고 처음 생성시 201, 다시 작성/생성시 200을 반환해야합니까? PUT RFC를 준수하기 위해 DB에 같은 리소스를 다시 저장해야합니다.

+0

저장하려면 POST를 사용하고 업데이트하려면 PUT을 사용하십시오. –

+0

내 목표는 PUT/멱등 원을 만드는 것입니다. 다시 시도 할 수 있음을 나타냅니다. – user1264304

+0

리소스 생성 또는 업데이트 여부를 어떻게 알 수 있습니까? –

답변

1

그래서이 질문은 다소 혼란 스럽습니다. 우리가 그것을 풀 수 있는지 보자.

PUT /create 

abcde 

대략 말한다 :로 표현 abcde/create 상태를 교체한다. 즉, 메시지의 의미론은이 메시지를 처리하는 두 번 메시지를 처리하는 것과 같은 효과를

store(key => "/create", value => "abcde") 

공지의 라인을 따라 무언가이다.

store(key => "/create", value => "abcde") 
store(key => "/create", value => "abcde") 

여기서 우리가 사용하는 키에 관해서는 매우 구체적입니다. PUT은 대상 자원의 상태와 관련이 있습니다. PUT /create/create을 수정하라는 메시지이며, 다른 리소스를 생성하라는 요청이 아닙니다.

/create는 생성 된 리소스를 DB에 저장한다고 가정하고 처음 생성시 201을 반환하고 다시 시도/생성시 200을 반환해야합니까?

예.

PUT RFC를 준수하기 위해 동일한 자원을 DB에 다시 저장해야합니까? 자원 이미 요청 표현이있는 경우

, 다시 저장할 필요가 없습니다.

+0

감사합니다. _ 리소스가 이미 요청한 표현을 가지고 있다면 다시 저장할 필요가 없습니다 ._ 올바른 결과를 얻을 수있는 유일한 방법은 DB에서 리소스를 검색하여 본문의 리소스 표현과 비교하는 것입니다. – user1264304