2013-03-12 49 views
0

我正在構建我的第一個API,我想知道是否 - 因爲這些操作是應用程序的核心,並且會被任何客戶端使用 - 我應該以暴露典型CRUD場景之外的操作的方式構建我的api。我有東西的報告定下來了,但我需要讓用戶批准或拒絕報告過,所以我想是這樣的:API是否應該暴露「批准」或「拒絕」等操作?

/api/report/id/approve 
/api/report/id/deny 

將是有益的。當涉及到API時,這是否違反了任何標準或做法?

回答

1

公開這些網址沒有任何問題。 REST並沒有強制任何有關URL的內容,而是一系列與此無關的約束條件。其中之一是HATEOS。如果您以某種方式公開這些鏈接以將報告的狀態作爲報告的資源表示形式的一部分進行更改,那麼您將使用該約束作爲實現的一部分。例如,

<report> 
    <id>2</id> 
    <link url="api/report/2/approve" rel="approve"/> 
    <link url="api/report/2/deny" rel="deny"/> 
</report> 

這將使您的API更易於發現,並且它是今天網絡的工作方式。另一個限制是你需要以正確的方式使用HTTP動詞。該鏈接的HTTP GET無效,因爲它會改變資源的狀態。 HTTP GET應該是安全的,所以它不應該改變資源的狀態。 HTTP POST將更適合該場景。這些是你如何將不同約束應用於你的web api的例子,但請記住,這種設計沒有任何問題。

Regards, Pablo。

+0

這是假設OP希望實現REST API而不是任何其他軟件體系結構。 – 2013-03-12 15:31:23

0

我想你如何構建你的API完全取決於你。雖然它可能不能稱爲'RESTful',並且更類似於RPC,但是隻要您爲API用戶提供所需的功能,它是否真的很重要?

有幾種不同的方式可以實現你所需要的,許多意見和「最佳實踐」你可以考慮,但最終只要API實現它的目標,無論你如何實現它。