Rest 哪一个端点应该表示与非相关元素的TRHREWAY多对多关系
很难把问题归纳成一行,但我希望我能在这里更好地解释自己: 我有以下型号: 用户Rest 哪一个端点应该表示与非相关元素的TRHREWAY多对多关系,rest,restful-architecture,restful-url,Rest,Restful Architecture,Restful Url,很难把问题归纳成一行,但我希望我能在这里更好地解释自己: 我有以下型号: 用户 身份证 消息 身份证 标签 身份证 用户消息类别 身份证 用户ID 消息ID 塔吉德 标签不是由用户创建的,可用的标签通过管理面板创建 我想创建一个端点,该端点返回消息的可用标记,但与该用户已经关联到该消息的标记 我似乎找不到一个标准的休息方式来做这个 附言:我想说清楚,我想: { tags:[ {id: 1, associated: false}, {id: 2, asso
- 身份证
- 身份证
- 身份证
- 身份证
- 用户ID
- 消息ID
- 塔吉德
标签
不是由用户
创建的,可用的标签
通过管理面板创建
我想创建一个端点,该端点返回消息的可用标记
,但与该用户
已经关联到该消息的标记
我似乎找不到一个标准的休息方式来做这个
附言:我想说清楚,我想:
{
tags:[
{id: 1, associated: false},
{id: 2, associated: true},
{id: 3, associated: false}
]
}
或者可能的方式是:
{
tags:[
associated:[
{id: 2},
{id: 1}
],
unassociated: [
{id: 3}
]
]
}
我也不知道是否应该由以下人员返回(我猜这是一个):
/users/1/消息/1/标签
或通过:
/tags
甚至通过:
消息/1/标签
编辑:更改了端点,因此URI是用复数名构建的。为什么不尝试使用类似于/tags?user=X&message=Y
?据我所知,标记不是消息或用户的直接子级,因此不需要是URL模式中的直接子级。
REST没有定义访问资源的实际模式,所以您可以像我写的GET参数一样使用它,或者像您建议的那样使用一个更像树的结构。
您可以做的最好的事情是通过类似的URL模式访问项目的每个REST资源,以使其更加用户友好
在我看来,您提出的第一个将结果格式化为JSON的解决方案是更好的解决方案
{
tags:
[
{id: 1, associated: false},
{id: 2, associated: true},
{id: 3, associated: false}
]
}
但这在很大程度上取决于您如何对项目的其他REST服务建模。如果需要,您还可以返回将标记与消息关联的用户,以提高可读性。您可以选择(注意复数名称):
/users/:用户id/消息/:消息id/标记
假设标记可以不包含消息而存在,您还可以支持端点返回所有可用标记:
/tags
什么是沟通?沟通和用户信息分类有什么区别?打字、沟通和信息是完全相同的。首先,在IMO中没有RESTfulURL,它只是一个URI。其次,最佳实践通常使用复数形式的资源名称。对于您的实际问题,标记是否可以不包含消息而存在?如果是这样,它就可以作为顶级资源,如果不是,那么它应该是消息的子资源。顺便说一句:我不喜欢计数器作为ID,好像你移动项目或插入新的项目之间的资源ID:2实际上是指向?因此,最好使用一些UUID作为ID。