Api Can';我不懂一些基本的休息知识
假设我的模型是: 用户:Api Can';我不懂一些基本的休息知识,api,http,rest,Api,Http,Rest,假设我的模型是: 用户: 身份证 绰号 我有一个收藏/users/ 我希望通过/Users/{id}而不是/Users/${昵称}检索用户,因为在一些更复杂的情况下,可能没有“逻辑唯一约束” 因此,我可以使用基本的JSON有效负载,例如: { id: 123, nickname: 'someUserName' } 这里没什么特别的 发布到/users/ 据我所知,用户是一个标识符。它是资源表示的一部分,因此应该在有效负载(?)中 如果我想自己在后端生成ID,比如使用DB序列,该怎
- 身份证
- 绰号
/users/
我希望通过/Users/{id}
而不是/Users/${昵称}
检索用户,因为在一些更复杂的情况下,可能没有“逻辑唯一约束”
因此,我可以使用基本的JSON有效负载,例如:
{
id: 123,
nickname: 'someUserName'
}
这里没什么特别的
发布到/users/ 据我所知,用户是一个标识符。它是资源表示的一部分,因此应该在有效负载(?)中 如果我想自己在后端生成ID,比如使用DB序列,该怎么办 然后我的有效载荷变成:
{
nickname: 'someUserName'
}
这是否恰当
这篇文章的输出应该是什么?没有什么?只是引用资源位置(包括ID)的头
上车/users/id 获取资源时,我们将其内容加载为JSON:
{
id: 123,
nickname: 'someUserName'
}
打开/users/id 据我所知,此方法上使用的有效负载应该“覆盖”资源内容。如果我们想要部分更新,我们会使用补丁 但如果我这样做了呢:
PUT /users/123
{
id: 456,
nickname: 'someUserName'
}
这是否意味着我们要更新资源的id
在URI和负载中同时使用id不是有点多余吗
实际上,我真的不知道如何处理
id
我不知道我是否应该在所有POST/PUT/DELETE操作中使用相同的资源表示
我不知道id是否应该是唯一(?)资源表示的一部分。
但是如果id不是表示的一部分,那么当我使用GET/users/
列出用户时,如果没有返回id,那么我不知道客户端如何获取用户id
有人能帮我吗?:) 首先如果不使用HATEOAS,就不是REST 我希望你能理解这一点,我会在最后再谈这一点 发布到/用户/ 在POST有效负载中不使用ID完全可以。如果存在ID,则会发出错误消息,以便开发人员理解他们做错了。
因此,如果用户资源中没有任何其他内容,那么只有昵称作为有效负载才是完全有效的 服务器的输出应包括三个重要内容:
201
)位置:/path/to/resource
)/users/是资源集合的一个示例
/users/{id}是单个资源的一个示例
您应该始终在每个响应中使用完全相同的表示。如果出于某种原因,只提供信息片段更合适,请添加指向完整资源表示的元数据(链接)。
除用户的第一次POST请求外,ID始终存在。 POST意味着资源的未来位置未知,必须由服务器提供。 这也意味着GET/users/应该返回每个资源的ID 和往常一样,API在请求中返回严格且宽容的消息。记录您的行为,以便用户可以学习 哈提奥斯 如果您实现HATEOAS(作为应用程序状态引擎的超媒体),REST的真正魅力就会显现出来。这部分意味着您应该使用有用的标记/链接组合来增强表示。这样,客户端就不再需要构造url了 用于用户表示的示例如下:
{
"_links:" {
"self": { "href": "http://yourrest/users/123" }
},
"id": "123"
"nickname": "someUserName"
}
使用HAL的一个很好的总结是由编写的(第一个条目完全没有zf,只解释HAL)。我将您的描述解释为,
id
不是资源的一部分,它是资源的唯一标识符。在这种情况下,它不应成为任何操作的有效载荷的一部分
POST/users
使用有效负载{“昵称”:“someone”}
将创建一个新资源,并在位置头中返回一个URL。该URL可能看起来像/users/123
,但从客户的角度来看,没有理由期望这样。它可能看起来像/something/other/完全是
GET/users/123
将(假设URL是由以前的帖子返回的)返回有效负载{“昵称”:“某人”}
PUT/users/123
将(与上面的假设相同)用PUT发送的有效负载替换资源,比如{“昵称”:“其他人”}
如果您希望客户端能够命名资源,那么您还可以让PUT/users/123
使用该URL创建一个新资源
我不知道重命名资源的常用REST方式。我认为,将旧URL作为查询部分或正文的一部分的帖子是有意义的
现在,假设我错了,您确实希望id
成为资源本身的一部分