gpt4 book ai didi

api - REST API设计

转载 作者:可可西里 更新时间:2023-11-01 16:45:09 25 4
gpt4 key购买 nike

我正在编写一个 REST API,我需要一些反馈。我将拥有一个名为 Items 的资源。我希望它可以公开访问,也可以私有(private)(只有用户可以看到)。我的第一个想法是将 URL 放到公共(public)项目中,例如/Root/Items 公共(public)项目所在的位置,以及其他 URL,如/Root/User/Items 私有(private)项目所在的位置。一个项目可以链接到另一个用户,这样它就有权更新它。类似于/Root/User/Operator/Items .... 但后来我意识到我创建了太多地址。

我不喜欢将所有项目都放在 de/Root/Items url 中的想法,因为每个用户都会有不同的输出。并且仅将它放在/Root/user/Items 中将无法列出所有公共(public)项目(可以属于任何用户)。

知道我该如何设计吗?

最佳答案

在 RESTful 架构中,如果您像我期望的那样使用 HTTP,那么每个“事物”都应该有一个标识符,它是一个 URI。在您的情况下,每个项目都应该只有一个 URI。

My First idea was to put a URL to public items like /Root/Items where the public items will live, and other URL like /Root/User/Items where private items will live.

我假设您不仅在谈论将返回项目集合的集合资源。我假设您还将拥有单项资源。在您的方案中,单个项目的 URI 可以是/Root/Items/42 或/Root/User/Items/23。

如果可以帮助您完成所需的授权,您可以对公共(public)和私有(private)项目使用不同的 URI 方案。但无论如何,URI 在 REST 中并不重要。 URI 应始终被视为不透明的。如果您对公共(public)项和私有(private)项使用不同的方案,则必须确保公共(public)项永远不会变成私有(private)项,反之亦然。如果是这样的话,一个项目的 URI 就会改变,这就像你改变数据库中一行的主键一样。标识符不应更改。如果您对公共(public)项目和私有(private)项目使用不同的 URI 方案,您所做的就是将项目的隐私级别编码到那里的标识符中。如果您的问题域允许这样做,那没关系。

An Item can be linked to another user so it will have permission to update it. Something like /Root/User/Operator/Items .... but then i realize i'm creating too many addresses.

这听起来像是您想更改项目的隐私级别。正如我之前所说,一项应该只有一个 URI,该 URI 永远不会改变。如果你在谈论收集资源,你的方案可能是。我不确定你在这里的意思。

最后:您需要的是身份验证和授权。如果用户想要访问另一个用户的私有(private)项目,无论其 URI 为何,您都需要返回 403 Forbidden。

关于api - REST API设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8842317/

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