2013-04-04 35 views
5

Có cách thức thành ngữ để đạt được điều này:Tùy chọn REST "chạy khô" cho PUT hoặc POST

Tôi cần PUT/POST thực thể nhất định. Tuy nhiên, trước khi thực sự đặt nó, tôi cần phải làm một số thay đổi trên một hệ thống dễ bay hơi hơn, và nếu điều đó làm việc tôi sẽ đi vào.

Vì vậy, trước tiên tôi sẽ hỏi xem PUT/POST có được chấp nhận không và sau đó thực sự thực hiện PUT/POST.

Tôi đã nghĩ đến việc chỉ sử dụng tham số truy vấn "chạy khô", nhưng không giống như cách đúng.

Cập nhật: Cố gắng làm rõ vấn đề của tôi. Vấn đề là PUT đầu tiên chỉ để xác minh thực thể.

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

Tôi đoán "đúng cách" là chỉ cần làm một PUT thổi đầy đủ và máy chủ sẽ trả về một số lỗi 4xx nếu PUT là không thể chấp nhận. – sharptooth

+0

Vấn đề là; nếu nó đi qua nó sẽ được lưu trước khi hệ thống khác được thay đổi; có thể không đi qua, để lại các hệ thống trong trạng thái xung đột. – thoredge

+1

Sau đó, nó không nên "đi qua", nó sẽ trả về mã lỗi 4xx. – sharptooth

Trả lời

0

Về mặt logic Tôi cảm thấy rằng điều này có thể được giải quyết bằng một loại tài sản nhà nước. Nếu bạn đang sử dụng JSON, ví dụ: bạn có thể xem xét thêm thuộc tính như sau:

{ 
    "draft" : true 
} 

Lần đầu tiên bạn thực hiện yêu cầu PUT, bạn đánh dấu mục là bản nháp. Nó lưu trữ các mặt hàng nhưng không làm bất cứ điều gì khác với nó.

Sau khi máy chủ của bạn chấp nhận yêu cầu, bạn có thể thực hiện 'công việc liên quan' ở nơi khác, và nếu thành công, bạn có thể gửi yêu cầu PUT khác cho cùng một tài nguyên, thiết lập thời gian này draft đến false.

Các vấn đề liên quan