很难将问题扼杀到一行,但我希望我能在这里更好地解释自己:
我有以下型号:
用户
讯息
代码
UsersMessagesCategories
Tags
由user
创建 NOT ,可通过管理面板创建tags
。
我想创建一个端点,为tags
返回 avaliable message
但是已经与user
关联的那些端点返回到message
已标记。
我似乎无法找到Rest标准的方法来实现这一目标。
PS:为了说清楚,我想:
{
tags:[
{id: 1, associated: false},
{id: 2, associated: true},
{id: 3, associated: false}
]
}
或许方式是:
{
tags:[
associated:[
{id: 2},
{id: 1}
],
unassociated: [
{id: 3}
]
]
}
我也不知道是否应该退回(我猜这就是那个):
/users/1/messages/1/tags
或通过:
/tags
甚至是:
messages/1/tags
编辑:更改了端点,以便使用多个名称构建URI。
答案 0 :(得分:1)
为什么不试试/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服务建模。如果您愿意,还可以返回将标记与消息相关联的用户,以提高可读性。
答案 1 :(得分:1)
你可以选择(记住复数名称):
/users/:user-id/messages/:message-id/tags
假设标签可以在没有消息的情况下存在,您还可以支持端点返回所有可用标记:
/tags