簡體   English   中英

RESTful API體系結構約定:如何傳遞參數

[英]RESTful API architecture conventions: How should parameters be passed

我有一些關於我應該允許參數傳遞給我編程的RESTful API的最佳方法的問題。

例如,我想檢索有關用戶的信息:使用方法GET的API調用將是: /api/users/
id應該在url /api/users/5傳遞還是作為實際的GET數據/api/users/?id=5

從我自己閱讀並得出的結論來看,我傾向於選擇一個(通過url中的參數),因為它看起來更直觀,更干凈。

然而,對於更復雜的查詢,該選項將是困難的。 示例:按年齡或上次登錄日期獲取用戶甚至嵌套查詢(獲取用戶5的所有帖子)。 對於這些用例,將數據作為請求參數傳遞會更加方便,因為它們包含可以輕松識別的鍵值對( /api/users/?age=20

我對你的意見感興趣:
哪個更好的方式去這里,為什么?
如果您更喜歡選項2:如何理想地構建參數?

兩者都適用

GET /api/users/5返回ID為5的用戶GET /api/users/?age=20返回年齡為20的用戶組GET /api/posts/?user_id=5返回帖子組用戶5。

通常,ID是一種特殊情況,因為它標識資源。 您不會通過ID搜索用戶 - 您只需獲得所需的用戶。

請記住,對於REST,整個URI(包括查詢字符串)是資源的原子標識符。 沒有更好或更糟的,只要URI始終標識相同的資源並且由服務提供,而不是由客戶端構造。

從這個意義上說, /api/users/5並不比/api/users?id=5更多或更少RESTful,但它們指的是不同的東西。 當您考慮URI語義時,使用參數查詢資源集合, /api/users/5標識單個用戶資源,而/api/users?id=5標識用戶集合,按ID過濾,單個用戶元素結果。

暫無
暫無

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

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