2014-11-18 3 views
0

나는 POST 코드의 인터페이스를 가진 REST API을 관리합니다. 이 코드는 컴파일되고 사용자에게 결과를 보내야하지만 컴파일하는 데 오랜 시간이 걸릴 수 있으므로 사용자에게 다시 보내려는 것이 좋습니다 202 Accepted HTTP 코드.REST API의 작업 결과에 대한 적절한 응답

사용자가 리소스를 다시 GET (으)로 시도하면 성공했는지, 컴파일이 성공했는지, 오류가 발생했는지 등의 적절한 코드가 무엇이겠습니까?

+0

'202 Accepted '를 반환하는 것은 자원이 아직 준비되지 않았을 때 좋은 선택 인 것 같습니다. [이 질문] (http://stackoverflow.com/questions/14824969/most-appropriate-http-status-code-for-job-in-progress)을 참조하십시오. 리소스에 다시 액세스하기위한 상태 코드? 그것은 "성공"과 "오류"의 의미에 의존합니다. 우리는 어딘가에 POSTing 코드에 대해 이야기하고 나중에 결과를 얻기 위해 GET을하고 있습니까? –

+0

바로 그 질문을 다시 편집했습니다. –

답변

1

컴파일이 완료된 후 해당 리소스에서 GET을 수행하면 200 OK을 반환하여 컴파일 성공 또는 실패를 나타내는 응답 본문을 반환합니다. 여기서 JSON을 미디어 유형으로 사용합니다. 예를 들어, 컴파일이 성공하면이 반응을 할 것이다 :

HTTP/1.1 200 OK 

{ 
    "status" : "success" 
} 

컴파일은 아마 컴파일러 출력에서 ​​가져온 또는 유사한, 실패한 이유는 아마도 이유를 포함 할 것이다 실패 할 경우 :

HTTP/1.1 200 OK 

{ 
    "status" : "failure", 
    "reason" : "syntax error" 
} 
+0

이 추론을 사용하면 작업이 여전히 처리중인 경우 결과는 "상태"입니다 : "작동하는"또는 유사합니다. –

+0

@ PedroMontotoGarcía 상태 코드 '202 Accepted'가 이미 리소스가 작업 중임을 나타내므로 응답 본문이 필요 없을 것입니다. 두 개의 '200 OK'응답을 구별하기 위해서는 여전히 신체가 필요합니다. –