在查询字符串与请求正文中的 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/