2013-04-04 14 views
5

Czy istnieje idiomatyczny sposób osiągnięcia tego:Opcja REST "dry-run" dla PUT lub POST

Potrzebuję PUT/POST danego obiektu. Zanim jednak go wprowadzę, muszę wprowadzić pewne zmiany w bardziej niestabilnym systemie, a jeśli to zadziała, będę kontynuował.

Najpierw zapytam, czy PUT/POST jest akceptowalny, a następnie wykonuję PUT/POST.

Myślałem o użyciu parametru zapytania "dry-run", ale nie jest to właściwy sposób.

Aktualizacja: Próbuję wyjaśnić mój problem. Chodzi o to, że pierwsze PUT służy tylko do weryfikacji istoty.

Me   System A  Volatile System X 
| Dry PUT |     : 
|-------------->|     : 
|    |     : 
| 20x/40x |     : 
|<--------------|     : 
|    :     : 
| Upon PUT OK do some related work : 
|----------------------------------->| 
|    :     | 
| Work completely     | 
|<-----------------------------------| 
|    : 
|PUT (for real) : 
|-------------->| 
|    | 
|  20x  | 
|<--------------| 
+1

Domyślam się, że "właściwą drogą" jest po prostu wykonanie w pełni rozwiniętej PUT, a serwer powinien zwrócić błąd 4xx, jeśli PUT jest niedopuszczalny. – sharptooth

+0

Problem jest; jeśli to przejdzie, zostanie zapisane przed zmianą innego systemu; które mogą nie przejść, pozostawiając systemy w stanie konfliktu. – thoredge

+1

Następnie nie powinien "przejść", powinien zwrócić kod błędu 4xx. – sharptooth

Odpowiedz

0

Logicznie myślę, że może to być może być rozwiązany przez pewnego rodzaju własności państwowej. Jeśli używasz JSON, można na przykład rozważyć dodanie właściwość tak:

{ 
    "draft" : true 
} 

Gdy po raz pierwszy zrobić żądania PUT, oznaczyć przedmiot jako wersję roboczą. Przechowuje przedmiot, ale nie robi nic z nim.

Po serwer przyjął prośbę, możesz zrobić swoją pracę związaną „” gdzie indziej, a jeśli to się udało, jak również można złożyć kolejny wniosek oddany do tego samego zasobu, tym razem ustawienia draft do false.

Powiązane problemy