2017-07-18 24 views
0

我正在創建一個REST服務,允許用戶使用翻譯集合中的預定義翻譯將輸入轉換爲所需的輸出。REST建模:如何模擬在REST中執行的操作或行爲?

  • GET /譯
  • GET /譯/ 1
  • POST /翻譯:

    爲了管理翻譯定義爲有翻譯資源,用戶可以操作,比如它似乎很自然

但是,我不知道我應該如何進行建模/ requesti的行爲將輸入轉換爲輸出。

我目前的設置是,我做了一個POST請求到一個特定的翻譯與輸入作爲該請求的正文。請求的響應包含tranlation的輸出:

  • POST /翻譯/ 1 /輸出
  • 請求體:輸入文檔(JSON)
  • 響應體:輸出文件

POST方法對我來說似乎不起作用,因爲我沒有在系統中創建資源,我只是在執行轉換,而沒有改變系統的狀態。然而,POST方法很方便,因爲它允許我發送Request Body(GET請求不應該這樣做)。

所以:這個動作正確的REST風格我怎麼能模擬

回答

2

POST方法似乎斷了我,因爲我不是在系統中創建一個資源

POST是罰款爲你在做什麼。 From RFC 7231

POST方法請求目標資源根據資源自己的特定語義處理請求中包含的表示。例如,POST用於以下功能(除其他外):

o向數據處理過程提供一組數據,例如輸入到HTML 表單中的字段;

是的,您希望在支持您要共享的有效載荷的統一接口中使用safe方法。 SEARCH可能是最接近的registered methods,但並不令人滿意。

這個動作正確的REST風格

,你會怎麼做一個網站,我怎麼能模型?

你可能會讓客戶端開始使用bookmark;返回的表示會有一堆鏈接,廣告功能。表示中的語義允許客戶區分不同的鏈接,並找到它想要的。該鏈接將引導客戶使用一種或多種形式的表示,並帶有額外的語義提示,通過您設計用於支持翻譯的集成協議引導客戶。當數據被收集後,客戶端會將表單提交給表單表示中指定的端點,這會將請求發送給您的翻譯人員。

如果你這樣做;但使表示機器可讀的語義,你有自己的REST API。

注意:REST的硬件部分沒有提供URI,或者猜測使用正確的HTTP方法。困難的部分是確保客戶端實現和服務器實現彼此解耦。