2012-10-19 3 views
0

임상 데이터 분석을 제공하는 REST 스타일 API를 설계하고 있습니다. API를 사용하면 환자 리소스를 만들 수 있습니다. 이 자원은 서버 측 분석에 입력 데이터를 제공합니다. 환자리소스 업데이트 및 관련 객체 생성을위한 RESTful 접근법

창조는 하위 리소스, 예를 갖도록 POST Patients

환자 리소스가 클 수 있고, 안전도 멱등 (서버는 ID를 할당)이므로 POST가 사용하지도 약을 업데이트 할 수 있습니다. 약품을 업데이트하는 것은 전체 med 세트가 교체되므로 멱등동이므로 PUT이 사용됩니다.

POST /Patients/{patientId}/analysisResults을 요청하면 임상 분석이 시작됩니다. 또는 사용자는 POST/Patients 요청의 응답에서 분석 결과가 반환되도록 요청할 수 있습니다. 이렇게하면 추가 HTTP 왕복이 절약됩니다.

내 문제는 이것입니다. 사용자는 업데이트 (PUT) 응답에 포함 된 분석 결과를 Patient/Medications으로 원합니다. 결과를 검색하기 위해 두 번째 요청을 원하지 않으므로 이해할 수 있습니다. 따라서 PUT Patient/Medications은 Patient 리소스와 관련하여 멱등원이지만 새로운 analysisResults 하위 리소스가 생성 될 때 모든 리소스 측면에서는 멱등하지 않습니다. 해야할까요 :

  • a) PUT에서 사용 설정합니다.
  • b) POST와 함께 사용하도록 설정합니다.
  • c) analysisResults를 새로 작성하려면 별도의 호출이 필요하므로 최종 사용자의 응답 시간이 전체적으로 증가할까요?
+1

새 analysisResults 하위 리소스를 만들면 반드시 요청이 멱등수가 아닙니다. 동일한 입력 데이터가있는 여러 PUT 요청이 동일한 하위 리소스를 만드는 경우 호출은 여전히 ​​멱등이지만 안전하지는 않지만 호출이 동일한 데이터를 가진 각 PUT에 대해 새 하위 리소스를 만드는 경우 비 멱등 및 안전하지 않습니다. 안전과 멱등 원의 차이에 대한 자세한 내용은 http://sureshkk.wordpress.com/2009/04/22/http-methods-safety-idempotency/를 참조하십시오. –

답변

2

RESTful 상태로 유지하려는 경우 옵션 C.

옵션 A와 B는 REST가 제공하는 속성을 약화시킬 가능성이 크며, 캐싱은 직접적으로 고려해야 할 속성입니다.

HTML 기반 인 경우 응답을 통해 analysisReport 리소스에 대한 링크가 포함되어 사용자가 응용 프로그램을 유용하게 사용할 수 있습니다.