簡體   English   中英

為什么通過REST API URI傳遞資源ID(如果已知)?

[英]Why passing resources ids via REST API URI if they already known?

我研究了有關URI設計最佳實踐的各種資源。 幾乎每個作者或博客作者都說RESTFul API URI必須看起來像這樣。

/* List all users in account 2 where user id is 1 */

`/users/1/accounts/2/users` [GET]

上面的api調用者必須在每個請求中傳遞兩個以上的id。

但是我的情況卻大不相同。

我的API服務器之前有一個資源管理器(RM),因此每個請求都必須通過RM進行身份驗證並帶有有效token才能訪問上述示例API。 注意:[令牌通過標題發送]

一旦請求被授權返回,RM就會通過攔截器向我的API服務器提供用戶信息(例如,user_id,account_id等)。

問題是我的API服務器已經知道user_id和他的account_id那么仍然需要在API URI中獲取這些信息。

我嘗試了以下設計:

1. /users/accounts/users
2. /accounts/users
3. /users

什么是最適合這種情況的設計? 我花了兩個星期的時間,但由於這些是企業API設計,因此無法確定。 一經設計,將永遠不會改變。

你應該包括在URI出於某種原因你給在最后的標識-您的API將是非常困難的,也許是不可能的,要改變一旦它被使用。 另一方面,您的實現隨着時間改變。 您的身份驗證/授權機制可能會更改。 你的企業可能希望移動到繞過IDS以這種方式的模型,他們肯定不會想發現他們不得不重新設計的每一個API,它依賴於舊的行為。

歸根結底,ReST的關鍵部分是在URI中包含足夠的信息以供URI標識與之相關的資源。 URI應該是標識資源所需要的全部內容 ,而不必依賴帶外信息或實現細節來進一步標識要尋址的資源。

暫無
暫無

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

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