2012-07-15 2 views
4

이되는 후속 질문 : Transactions in REST?REST의 복잡한 트랜잭션?

가 어떻게 그것을 클라이언트의에 전체 트랜잭션 기능을 제공하는 REST API를 구현 하는가? 클라이언트가 다음 작업을 할 것입니다 트랜잭션을 생성하고자하는 경우

예를 들어, :

  • 하나 이상의 개체를 만들 수 있습니다.
  • 하나 이상의 개체를 업데이트하십시오.
  • 하나 이상의 개체를 삭제하십시오. 이 트랜잭션에 대한 올바른 요구 사항이지만

, POST 업데이트 만들 PUT 사용하는 REST 요구 사항을 끊고 삭제하려면 삭제를 보인다.

현재 솔루션은 전체 시스템을 하나의 계층 적 개체 구조로 처리하고 POST 작업을 사용합니다. 예를 들면 :

POST /system 
{ 
    "Users" : [ 
     { 
      "ID":"123", 
      "name":"bob" 
      // update the user with ID matching 123, 
      // set his name to "bob" 
     }, 
     { 
      "ID":"456", 
      "delete":"true" 
      // trigger a delete on user with ID 456 
     } 
    ], 
    "Products" : [ 
     { 
      "name":"foo" 
      // create a product named "foo" since no ID is provided 
     }, 
    ] 
} 

지금까지 정말 데이터의 조각되지 않습니다 "삭제"플래그를 제외하고이 만족 대부분의 REST 요구 사항.

누군가 더 좋은 해결책을 찾았는지 궁금합니다.

+1

[이 질문에 대한 답변] (http://stackoverflow.com/questions/147207/transactions-in-rest) 단일 작업으로 업데이트 한 다음 제출하는 서버 쪽 트랜잭션 개체를 사용하는 것이 좋습니다. 물론 단점도 있습니다. –

+0

예, 수행 할 작업의 순차적 목록을 포함하는 "트랜잭션"개체에 대한 제안을 읽었습니다. 현재 솔루션은 실제로 애플리케이션 도메인에 매핑되지 않는 가상 "트랜잭션"객체보다 REST 철학에 훨씬 가깝다고 생각합니다. 그러나 트랜잭션 오브젝트에는 각 단계를 실행해야하는 순서를 명시 적으로 지정하는 추가 이점이 있습니다. –

답변

0

동의합니다. 서버 측에서 처리해야하는 Jan과 비교해보십시오.하지만 아래쪽에는 심하게 코드가 있습니다. 내게 안성맞춤 인 응용 프로그램에 대한 경험으로는 RESTFul 아키텍처의 PUT & DELETE 동사를 준수하는 것이 여러 가지 브라우저 버전 지원으로 매우 어려울 것이라고 제안합니다. 그 (것)들을 위해 멀리 제한되는.

관련 문제