JSONAPI 端点 URL 应该与资源的“类型”完全匹配
JSONAPI should the endpoint URL match exactly the `type` of a resource
我正在为我的网站构建一个 jsonapi,在查看各种前端组件时我遇到了
https://github.com/dixieio/redux-json-api/tree/master/docs
这似乎直接从资源类型
解析端点 URL
根据资源类型精确解析端点是 spec/recommendations 的一部分?我记得读过解释没有实际 type
命名约定的评论。
我的 API 有几个端点用于注册不同类型的用户
/registration/admin
/registration/customer
etc.
这些端点关联了不同的业务逻辑,但它们都是 return 一个 user
类型的对象。
具有多个端点 return 使用同一资源 type
是不是一个糟糕的设计?
我是否应该更改我的代码以引入其他类型,例如 registration/user
?
或者我应该向库提交补丁,以便它接受自定义端点 URLs 吗?
我无法具体说明您正在使用的框架,但您可以完全自由地选择您的 HTTP 资源代表什么。例如,如果客户可以是公司客户并且具有关联的发票和销售历史记录,但管理员永远只是个人并且无法进行交易,那么您可以充分考虑将资源分开。
您应该尽量避免的一件事是允许软件的限制决定您的 URI 结构。如果我正在创建此 API,并确定客户和管理员是不同类型的对象,我将在 /admins/new 和 /customers/new 处创建注册表单资源,这将使 POST 向 /admins 和 /customers 的集合资源请求。我根本不会有 /registration*。
解决您的个人问题:
我不明白你所说的“返回资源类型”是什么意思——你是在谈论响应中返回的表示,还是后端函数如何创建和返回实例class?
我不会为所有类型的用户添加额外的超类型。要么每种类型一个集合,要么所有类型一个。
如果在考虑以上所有因素并选择了您想要的 URI 后,您的软件无法处理您选择的结构,则有以下三种选择:
i) 选择功能更强大的软件
ii) 在传入的 URI 和传递给您的软件的 URI 之间创建一个映射。 Apache mod_rewrite 可以为您做到这一点
iii) 按照您的建议,使您已经在使用的软件功能更强大
选择最简单的选项。
我正在为我的网站构建一个 jsonapi,在查看各种前端组件时我遇到了 https://github.com/dixieio/redux-json-api/tree/master/docs 这似乎直接从资源类型
解析端点 URL根据资源类型精确解析端点是 spec/recommendations 的一部分?我记得读过解释没有实际 type
命名约定的评论。
我的 API 有几个端点用于注册不同类型的用户
/registration/admin
/registration/customer
etc.
这些端点关联了不同的业务逻辑,但它们都是 return 一个 user
类型的对象。
具有多个端点 return 使用同一资源
type
是不是一个糟糕的设计?我是否应该更改我的代码以引入其他类型,例如
registration/user
?或者我应该向库提交补丁,以便它接受自定义端点 URLs 吗?
我无法具体说明您正在使用的框架,但您可以完全自由地选择您的 HTTP 资源代表什么。例如,如果客户可以是公司客户并且具有关联的发票和销售历史记录,但管理员永远只是个人并且无法进行交易,那么您可以充分考虑将资源分开。
您应该尽量避免的一件事是允许软件的限制决定您的 URI 结构。如果我正在创建此 API,并确定客户和管理员是不同类型的对象,我将在 /admins/new 和 /customers/new 处创建注册表单资源,这将使 POST 向 /admins 和 /customers 的集合资源请求。我根本不会有 /registration*。
解决您的个人问题:
我不明白你所说的“返回资源类型”是什么意思——你是在谈论响应中返回的表示,还是后端函数如何创建和返回实例class?
我不会为所有类型的用户添加额外的超类型。要么每种类型一个集合,要么所有类型一个。
如果在考虑以上所有因素并选择了您想要的 URI 后,您的软件无法处理您选择的结构,则有以下三种选择:
i) 选择功能更强大的软件
ii) 在传入的 URI 和传递给您的软件的 URI 之间创建一个映射。 Apache mod_rewrite 可以为您做到这一点
iii) 按照您的建议,使您已经在使用的软件功能更强大
选择最简单的选项。