2016-06-24 3 views
4

개발중인 REST API의 경우 클라이언트가 회사를 등록 할 수 있으며, 이후 회사는 이메일을 통해 확인/활성화가 필요합니다. 다음 예제 요청을받은 후 활성화 링크가 포함 된 전자 메일이 전송되어 계정이 활성화됩니다.202 자원이 전자 메일 확인/활성화를 기다리고있을 때 적절하게 수용됩니까?

POST /companies HTTP/1.1 

<company> 
    <name>CoolCompany</name> 
    <email>[email protected]</email> 
</company> 

위의 요청 (유효 데이터, 이메일이 성공적으로 전송)에 성공하면, 회사 자원을 데이터베이스에 저장되어 있지만 /companies/<id>에서 사용할 수 확인을받은 후 (적절한 인증 헤더 제공). 이 시나리오 감안할 때

HTTP/1.1 202 Accepted 
// Perhaps optionally with a Location header, 
// of where the resource will be available, as well? 
Location: /companies/<id> 

적절한 응답

입니까? 아니면

HTTP/1.1 201 Created 
Location: /companies/<id> 

이 더 적절한 응답이 될까요?

답변

3

REST는 엔터티 기반 컨셉입니다. 201 Created 응답을 얻은 경우 이는 직관적으로 리소스가 생성되어 사용 가능하다는 것을 나타냅니다 (이 경우가 아님). 리소스는 확인 후 처음으로 사용할 수 있으므로 202 Accepted 헤더를 사용하는 것이 좋습니다.

또한 요청 시간에 사용자가 전자 메일을 수신했는지 확인할 수 없습니다. API 소비자에게 유효한 요청이라고 알려주기 때문에 (SMS, 이메일 등) 이런 경우에는 202 Accepted를 사용하는 것이 좋지만, 완료되기까지 시간이 걸릴 수 있습니다.

+0

그래, 나를 202 세게 도왔다. 고마워! –

2

내 생각은 다음과 같습니다

(201) - 모든 물건/처리 요청의 말에 완료 될 때입니다 리소스를 GET, 그렇게 할 때 클라이언트 (이벤트가 즉시), 그가 것 (DB는, 파일 등을 만들어 채워) 완료하십시오.

202 - 요청을 받고 성공적으로 처리를 시작했지만 프로세스의 일부 제한 사항에 따라 모든 관련 작업을 처리하지 않습니다. 당신에

는 경우 : 동 기적으로 이메일을 보내 이메일이 전송 될 때까지 나는 201을 생각보다 응답을 반환하지 않는

경우 (작성) OK입니다

예를 들어 이메일 대기열에 작업을 전송 설정하면

및 고객에게 즉시 반환하고 이메일을 조금 나중에 전송할 수 있습니다 (예를 들어 전자 메일을 보내기 전에 운영자가 새 클라이언트를 수동으로 처리하는 경우) 202보다 좋습니다.