【问题标题】:Having same route require and not authentication?具有相同的路由要求而不是身份验证?
【发布时间】:2020-11-12 08:53:48
【问题描述】:

我对我的 RESTful 或通用 API 解决方案有疑问。

所以,情况是我需要以公共和私人方式提供相同的资源。这意味着,GET api/products?private=true 将返回当前用户拥有的产品并需要身份验证,而 GET api/products?private=true 将返回所有没有身份验证。

我知道这是不好的做法,但想听听您的意见。

谢谢

【问题讨论】:

    标签: rest api-design restful-authentication


    【解决方案1】:

    由于/api/products?private=true/api/products?private=false 是不同的url,从HTTP 的角度来看,这两个端点返回不同的结果并没有错。

    我认为通常查询参数用作资源的“修饰符”。因此,如果您有一个返回产品的资源,并且您有一个过滤此列表以返回子集的查询参数,我会说这是相当常见的。

    作为替代方案,您可以考虑使用 /products/my-products 之类的东西来创建 2 个更加不同的端点。

    【讨论】:

    • 当然。现在我意识到我的问题还不够清楚。我的意思是问拥有相同的路由(/products)、公开(意味着它不需要身份验证)和私有(它确实需要身份验证)是否是不好的做法,具体取决于查询参数。
    • @djoloho HTTP 没有路由的概念,只有 url 和路径。不同的 url 可以有不同的身份验证要求,所以不,我不认为这有什么问题。请注意,一旦客户端通过身份验证,他们可能会继续向您的整个域发送每个路径的身份验证信息。
    猜你喜欢
    • 2020-01-16
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 2019-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多