簡體   English   中英

REST Api命名約定?

[英]REST Api naming convention?

我有一個簡單的問題,找不到答案。

我的同事當前正在為應用程序制作REST Api,我們有一個電話可以簡單地檢查一些信息,並返回true或false。 但是,我們不知道如何調用這種類型的請求,因為它不檢索任何資源或插入任何內容,它只是檢查傳遞給查詢的某些信息。 據我了解,GET必須檢索資源,此調用沒有這樣做

據我了解,這種情況下的資源是對還是錯。 調用API時,根據API服務器處理的信息,您期望響應為真或為假(狀態始終為200)。 因此,GET方法仍然適用於這種情況。 如果您對響應正文不感興趣,並且想要諸如響應代碼和標頭詳細信息之類的數據,請使用HEAD。

很難通過您提供問題的詳細程度來區分。 但是,如果需要檢查資源是否存在,可以使用HEAD 它與GET相同,但是不會在響應有效負載中返回任何表示形式:它僅返回狀態代碼和響應標頭。

考慮以下請求HEAD請求:

HEAD /postal-codes/10001 HTTP/1.1
Host: example.org
Content-Type: application/json

對於存在的資源,它應該返回200

HTTP/1.1 200 OK
Content-Type: application/json

404表示不存在的資源:

HTTP/1.1 404 Not Found
Content-Type: application/json

根據您的需求,你可以用它解決POST ,這可以看作是一個包羅萬象的動詞。

例如,考慮以下請求和響應:

POST /postal-codes/validation HTTP/1.1
Host: example.org
Content-Type: application/json

{ "postal-code": "10001" }
HTTP/1.1 200 OK
Content-Type: application/json

{ "postal-code": "10001", "status": "valid" }
HTTP/1.1 200 OK
Content-Type: application/json

{ "postal-code": "10001", "status": "invalid" }

表達“檢查某些信息”的方式可能有所不同,因此,要具體說明其含義很重要。

因此,讓我們舉一個任意的例子。 您正在為博客文章建模,並想知道是否將某些博客文章設置為“草稿”。

“草稿”狀態可以是其自身的資源,例如:

/posts/hello-world/is-draft

is-draft資源上執行GET請求可以產生:

{
   "is-draft": true
}

因此,要將任意事物建模為資源,最好的思考方法是將操作結果視為“表示形式”,並將“您想知道的事情”視為URI。

據我了解,GET必須檢索資源,此調用沒有這樣做

從技術上講,它是在獲取資源。 菲爾丁

REST中信息的關鍵抽象是一種資源。 可以命名的任何信息都可以是資源:文檔或圖像,臨時服務(例如“洛杉磯今天的天氣”),其他資源的集合,非虛擬對象(例如人)等。 換句話說,任何可能成為作者超文本引用目標的概念都必須符合資源的定義。

在這種情況下,資源可能不會在數據模型中加載實體,但是沒關系。 並非所有資源都必須。

從技術上講,我認為您擁有的是“功能”; 您需要計算結果的所有信息都存在於URI本身中嗎? 這意味着,如果客戶端知道如何進行計算(並擁有可用的計算資源),則客戶端將能夠自行完成工作。

但是擁有“功能的結果”的資源並沒有錯。

在某些API中,您將看到謂詞(返回true / false的函數)實現為僅在評估為true時才存在的資源(更確切地說,僅具有“表示形式”)。

GET /predicate?true

204 No Content

GET /predicate?false

404 Not Found

您不需要考慮資源“狀態”來計算對查詢的正確響應這一事實是隱藏在統一接口后面的實現細節

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM