在查询字符串或请求正文中包含数据的 Restful URL?

标签 rest restful-url

在查询字符串与请求正文中的 REST URL 中传递数据的经验法则是什么?

即:您正在创建一项服务来添加曲棍球运动员。你可以去:

PUT /players 
{ "name": Gretzky }

或者
PUT /players?name=Gretzky

如果您要传递大量数据,则需要使用选项 #1,因为 URL 长度有限制。但除此之外,为什么不直接使用查询字符串来传递数据呢?

更新 :删除了您可以在浏览器中测试选项 #2 的注释。意识到(duh)您只能在浏览器中执行 GET-s。

最佳答案

根据 HTTP 对 PUT 的定义,您的第一个请求是用仅包含一个玩家名称的新列表覆盖玩家列表。它没有添加到玩家列表中。

第二个选项对我来说没有多大意义。没有body 做PUT 与PUT 的含义并不完全一致。

考虑到 POST 的标准定义之一是附加到现有资源,我不确定你为什么不这样做

POST /players 
{ "name": Gretzky }

如果您确定所有玩家名称都是唯一的,那么您可以像这样使用 PUT:
PUT /player/Gretzky
{ "name": Gretzky }

当您决定在 HTTP 上执行 REST 时,您同意以 RFC2616 中定义的方式使用 HTTP。这就是统一接口(interface)约束的含义。
只是为了迂腐,没有 REST URL 这样的东西,你不能在浏览器中测试任何一个选项,因为没有 javascript,你不能在浏览器中执行 PUT。

关于在查询字符串或请求正文中包含数据的 Restful URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1619302/

相关文章:

http - 自定义授权 HTTP header

java - MediaType.APPLICATION_JSON 返回类型给出 500 内部错误

rest - 通过 REST API 将证书从 Azure Key Vault 添加到 Azure 应用服务

angularjs - URI 中包含斜杠字符 '/' 的标识符

android - 如何从 url 保存 JSON 并在固定间隔(比如 5 分钟)后从 url 更新保存的文件

java - 使用 Java 创建一个 Restful API,返回 JSON 对象作为响应

java - 如何在发出 RESTful 请求时使用 Spring 3.0 mvc 将 XML 转换为对象

iOS 7+ 应用程序是否可以在应用程序处于非事件状态时通过网络发送数据?

javascript - 为什么我在获取视频数据时收到错误 404?

c# - 如何在 C# 中的 REST API 中获取 PDF 文件