2012-05-24 3 views
2

REST 웹 서비스를 구현 중이며 POST 메서드 인 리소스 (http : // localhost/createUser)가 있고 JSON 사용자 개체가 필요합니다. .REST에서 요청 완료시 HTTP POST 메서드를 호출자에게 알리는 방법

이제 t1에서 호출자는 JSON 객체로이 API를 호출합니다. 나는 시간 t1에 기본적인 검증을하고 sucessfull로서 응답을 반환한다.

그러나 내 백엔드에서이 사람 생성 논리는 "실제로 만들어"데이터베이스에 저장하는 데 시간이 걸립니다. 시간이 오래 걸릴 것입니다. 예를 들어 시간 t2에서 사용자 생성이 완료되었습니다.

이제 사용자 제작자가 "정말로 성공적"이라고 발신자에게 알리는 방법은 무엇입니까? (또는 t1과 t2 사이에 사용자 생성이 실패 할 수 있습니다.이 API의 호출자에게이를 알리는 방법은 무엇입니까?)

내가 생각하는 한 가지 방법은 각 요청에 대해 requestId를 작성하는 것입니다. 호출자는 (http : // localhost/status/requestId)와 같은 다른 GET API를 폴링하여 요청에 대한 결과를 제공합니다.

더 좋은 방법이 있습니까?

답변

1

getUser와 같은 작업을 반환하거나 구현하기 전에 사용자가 "실제로"생성 될 때까지 기다리십시오. "만들기"및 "생성됨"에 대한 상태 필드가있을 수 있습니다. 제 의견으로는 "requestId"에 대한 모든 호출을 매핑하는 것이 조금은 비슷합니다.

+0

필자의 경우 사용자 생성 및 데이터베이스 지속성에 임의의 시간이 걸릴 수 있습니다. 서버의로드에 따라 5 분 이상 걸릴 수 있습니다. 실제 완료 시간 인 "t2"시간까지 기다리면 시간 초과 예외가 발생하지 않습니까? – Kiran

+0

아, 네가 몇 분 정도면 너의 필요성을 알았다. –

+0

@@ Kiran 시간 제한을 연장 할 수있는 방법이 있지만, 두 번째 아이디어를 갖고 싶어합니다. 즉, 진행중인 작성을 즉시 응답 한 다음 클라이언트 워크 플로우 (또는 폴링)에 맞는 곳에서 create 성공/실패했습니다. –