簡體   English   中英

REST API設計

[英]REST API design

我正在編寫REST API,希望獲得一些反饋。 我將有一個稱為項的資源。 我希望可以公開訪問它,也可以將其私有化(只有用戶可以看到它)。 我的第一個想法是將URL放置到公共項目(如/ Root / Items所在的公共項目)和其他URL(例如/ Root / User / Items所在的私人項目)。 一個項目可以鏈接到另一個用戶,因此將有權更新它。 像/ Root / User / Operator / Items ....之類的東西,但是后來我意識到我正在創建太多地址。

我不喜歡將所有項目放在de / Root / Items url中的想法,因為每個用戶將有不同的輸出。 並且僅將其放在/ Root / user / Items內將不可能列出所有公共項目(可以屬於任何用戶)。

知道如何設計嗎?

在RESTful架構中,每個“事物”都應具有一個標識符,如果您按我期望的那樣使用HTTP,則它是一個URI。 在您的情況下,每個項目都應該只有一個URI。

我的第一個想法是將URL放置到公共項目(如/ Root / Items所在的公共項目)和其他URL(例如/ Root / User / Items所在的私人項目)。

我假設您不僅在談論將返回項目集合的集合資源。 我假設您還將有單個項目資源。 方案中單個項目的URI可以是/ Root / Items / 42或/ Root / User / Items / 23。

如果可以幫助您進行所需的授權,則可以對公共項目和私有項目使用不同的URI方案。 但是無論如何,URI在REST中並不重要。 URI應該始終被視為不透明的。 如果對公共物品和私人物品使用不同的方案,則必須確保公共物品永遠不會變成私人物品,反之亦然。 如果是這樣,則項目的URI會更改,這與更改數據庫中行的主鍵一樣。 標識符不應更改。 如果對公共項目和私有項目使用不同的URI方案,您正在做什么,就是將項目的隱私級別編碼到那里的標識符中。 如果您的問題域允許這樣做,則可以。

一個項目可以鏈接到另一個用戶,因此將有權更新它。 像/ Root / User / Operator / Items ....之類的東西,但是后來我意識到我正在創建太多地址。

這聽起來像您想要更改項目的隱私級別。 就像我之前說過的,一項應該恰好具有一個永遠不變的URI。 如果您在談論收集資源,那么您的方案可能就是這樣。 我不確定你在這里是什么意思。

最后:您需要的是身份驗證和授權。 如果用戶要訪問另一個用戶的私有項而不管其URI,則需要返回403 Forbidden。

暫無
暫無

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

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