6

对于我正在创建的 RESTful API,我需要一些功能来获取资源,但如果它不存在,则创建它然后返回它。我认为这不应该是 GET 请求的默认行为。我可以在我提供给 GET 请求的某个参数上启用此功能,但它似乎有点脏。

要点是我只想为此做一个请求,因为这些请求将通过可能具有慢速互联网连接的移动设备完成,所以我想尽可能限制需要完成的请求。

我不确定这是否适合 RESTful 世界,但如果不适合,它会让我失望,因为这意味着我必须对 REST 的想法进行一些修改。

有谁知道这样做的 RESTful 方式,或者其他与 REST 理念不冲突的美丽方式?

4

2 回答 2

2

作为创作的一部分,客户是否需要提供任何信息?如果是这样,那么您确实需要将 GET 和 POST 分开,否则您需要使用每个 GET 发送该信息,这将非常难看。

相反,如果您在没有任何附加信息的情况下发送 GET,那么如果在返回之前它不存在,那么后端没有理由无法创建资源。根据创建资源所需的时间量,您可能想要考虑异步并按照其他答案使用 202,但这意味着您的客户端必须处理(但)另一个响应代码,因此可能会更好只是等待资源完成并返回。

于 2013-09-24T10:27:37.553 回答
0

很简单:

  1. 请求:HEAD,检查响应代码:404 或 200。如果需要正文,请使用 GET。
  2. 它不可用,执行 PUT 或 POST,服务器应以 204 和 Location 标头响应新创建资源的 URL。
于 2013-09-24T08:20:03.293 回答