相关疑难解决方法(0)

REST资源URL中的查询字符串

我今天与同事讨论过使用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

70
推荐指数
3
解决办法
6万
查看次数

以REST方式更新整个资源集合

我有一个REST URI用于资源列表,例如:

http://foo.com/group/users
Run Code Online (Sandbox Code Playgroud)

这些用户中的每一个都有一个序列号,我想公开一种方法,为集合中的所有用户重新编号这些值,并使访问列表的每个人都可以使用此更改.由于这是对整个集合的一个动作,我不知道如何实现这一点.

我可以设想一个类似于URL http://foo.com/group/users?sequence=normalize但是对于整个列表既不是PUT也不是POST真的有意义,除非我使用新数字作为消息数据提交整个集合.

如何以RESTful方式更新整个集合,而无需重新发送集合中的所有更新资源?

rest http

16
推荐指数
2
解决办法
2万
查看次数

HTTP POST响应创建多个资源时的位置标头

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

9
推荐指数
2
解决办法
8310
查看次数

为一对多关系公开RESTful端点

考虑两个资源之间的以下关系

  • 学院有很多院系
  • 学院属于学院

显然,一个学院不是一流的资源.

现在我需要端点来执行以下操作.

  • 在这所大学这个农场建立一个新的教师队伍.在两个操作中执行此操作的一种可能方法.
    • POST /faculties/
    • PUT /college/1/faculties
  • 从这所大学中删除一名教员.再两次操作
    • GET /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.

有什么建议吗?

rest restful-architecture apiblueprint

9
推荐指数
1
解决办法
7998
查看次数