簡體   English   中英

如果我想存檔兩個不同但相似的功能,是擴展現有的 REST Api url 還是創建另一個更好?

[英]Is it better to expand an existing REST Api url or make another one if i want to archive two diferent but similar functionalities?

我將用一個真實的生活場景來解釋我的觀點。 我有一堆通知項,以及一個以 json 形式返回所有字段的 API。 假設這個 api 的路由是 /api/nots

您也可以指定要搜索的用戶 ID,以查看它是否有任何通知。

api/nots?id=1

所有通知都屬於一個用戶或一組用戶。 因此,例如從上面的請求返回的 json 將是這樣的:

{
"id": 1,
"name" : "Notification for John Doe",
"date": "1-1-2021"
"destinataries" : "johndoe@example.com",
"readed" : 1
}

“已讀”字段是困擾我的一個字段,假設此通知最終會出現在您手機上的列表中,並且根據“已讀”字段是否為真,通知中會出現一個綠色勾號。

創建時的所有通知都將讀取的字段預設為 false,因此我需要一個 api 將該值更改為 true。 我有兩種方法可以這樣做,但我不知道哪種方法更有效。

第一個是創建另一個路由只是為了更改值,您可以在其中指定通知的 id,例如:

api/update-nots?id=123

另一個是重用第一個 api (api/nots) 並使其執行兩種不同的操作(通過 id 搜索 nots 並更改通知讀取值)。

api/nots?set_readed=123

哪種方式更好?

如您所知,有很多方法可以做所有事情,在我看來這將是最好的選擇:

GET ...api/users/<user_n>/nots // Get all user nots
PUT ...api/nots/<not_n> // Update a specific not.
 payload = { readed: true } 

為什么? 在我看來,更具可讀性,因為: api/nots?id=1實際上你不知道你的請求是關於不是第一還是關於用戶或關於組(為什么不呢?:))。 所以,保持可讀性你的 api,更多的語義。 通過上面的例子,你可以理解方法和路由,通過id獲取所有用戶nots,並更新一個。 通過這種方式,您將使用其他操作擴展您的基本行為,例如“記住我之前”,這可能是帶有某個時間標記的更新到其他時間,或者您可以使用/nots等使用所有 nots 等。

暫無
暫無

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

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