gpt4 book ai didi

java - 需要有关设计的建议 与用户角色保持一致

转载 作者:行者123 更新时间:2023-12-01 09:47:23 25 4
gpt4 key购买 nike

我对 API 的静态设计感到困惑。

我有两个角色:最终用户和后端(管理员)。通过后端角色,我可以访问用户的任何资源

一个用户可以有多个订单。

所以我根据用户资源定义了

GET /users/{userID} -- get User Information
GET /users/{userID}/orders -- list user order list
POST /users/{userID}/orders -- user make an order

但是嗯..引用了一些网上文档,隐式的userID将在身份验证阶段后被识别,所以这里是使用order资源的不同设计:

GET /orders/ --list user order list by user account(backend can get all)
GET /orders/{orderID} --get orderID by userID
POST /orders/ -- user make an order.

有了这个定义,当后端用户想要按用户列出订单时。我应该使用哪种方法?

GET /orders?user={userID} (user as query parameter) -- List order with userID

或者

GET /users/{userID}/orders

请告诉我哪一个(用户订单资源)设计更好,为什么?谢谢,

最佳答案

哪种设计更好取决于用例。

例如,假设有两个用户:

  1. 爱丽丝 (userID=1)
  2. 鲍勃 (userID=2)

我们还假设 Alice 已经进行了身份验证,因此后端在某处有可用的 userID=1

  1. 如果 Alice 想要列出自己的订单,最短的方法是

    GET /orders

    并让后端用户获得可用的userID

  2. 假设该请求旨在检索经过身份验证的用户的订单。如果 Alice 尝试 /users/2/orders 会怎样 - 她是否可以查看 Bob 的订单?如果 Alice 多次输错并发出对 /users/2/ 的查询怎么办?

  3. 最后要考虑的事情 - 如果将来有更多属性需要搜索怎么办?如果 userID 从 future 的订单中删除(假设 future 有一个新关系,如用户 --> 购物车 --> 订单)怎么办?哪种 URI 方案更容易更新?

因此,没有简单的答案,这取决于您的用例。如果只是检索订单,我建议使用 {GET|POST}/orders 以获得最大的灵 active 和简单性。

关于java - 需要有关设计的建议 与用户角色保持一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37878094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com