我今天与同事讨论过使用REST URL中的查询字符串.拿这两个例子:
1. http://localhost/findbyproductcode/4xxheua
2. http://localhost/findbyproductcode?productcode=4xxheua
Run Code Online (Sandbox Code Playgroud)
我的立场是应该按照示例1设计URL.这更清晰,我认为在REST中是正确的.在我看来,如果产品代码不存在则从示例1返回404错误是完全正确的,而示例2返回404将是错误的,因为页面应该存在.他的立场是,它并不重要,他们都做同样的事情.
由于我们都没有找到具体的证据(诚然,我的搜索并不广泛),我想知道其他人对此的看法.
我有一个REST URI用于资源列表,例如:
http://foo.com/group/users
Run Code Online (Sandbox Code Playgroud)
这些用户中的每一个都有一个序列号,我想公开一种方法,为集合中的所有用户重新编号这些值,并使访问列表的每个人都可以使用此更改.由于这是对整个集合的一个动作,我不知道如何实现这一点.
我可以设想一个类似于URL http://foo.com/group/users?sequence=normalize但是对于整个列表既不是PUT也不是POST真的有意义,除非我使用新数字作为消息数据提交整个集合.
如何以RESTful方式更新整个集合,而无需重新发送集合中的所有更新资源?
的HTTP/1.1标准规定,如果一个POST在创建一个资源的操作结果,那么该响应应该包括一个Location与新的资源的地址头部.
如果在源服务器上创建了资源,则响应应该是201(已创建)并包含描述请求状态的实体,并引用新资源和Location头(请参阅第14.30节).
在第14.30节,
对于201(已创建)响应,Location是请求创建的新资源的位置.
现在假设我的API允许POST通过将数组批量创建资源到集合资源URL.例如:
POST /books
[
{
"name": "The Colour of Magic",
"published": "1983"
},
{
"name": "The Light Fantastic",
"published": "1986"
}
]
Run Code Online (Sandbox Code Playgroud)
由于\book\{bookId}已经创建了两个资源,Location在这种情况下标题的值应该是多少?
Http在多个新资源创建后发布的问题?是类似的,但它询问响应实体,而不是标题(并且没有答复).
rest http http-status-codes restful-url restful-architecture
考虑两个资源之间的以下关系
显然,一个学院不是一流的资源.
现在我需要端点来执行以下操作.
POST /faculties/PUT /college/1/facultiesGET /college/1/faculties:相关院系列表.每个都会包含一个自我网址/faculties/1.DELETE /college/1/faculties/1:网址看起来更好,但如何公开这个网址?PUT /college/1/faculties 接受这所大学院系的完整列表.DELETE /sectors/1:看起来不错,但需要照顾缓存/faculties/1/sectors.在这种情况下,什么是更好的方法?我已经阅读了关于公开会员资源的内容,但是通过这种方法,如果一所大学有10个院系,则需要10个单独的http电话才能从会员资格中获取所有这些资源.
而且,这只是完整关系树的一小部分.为了进一步扩展,系统说
此外,在RESTful架构中,客户端永远不应该填充URL.
有什么建议吗?