在查询字符串中的REST URL中传递数据与请求正文的经验法则是什么?
即:你正在创建一个添加曲棍球运动员的服务.你可以选择:
PUT /players
{ "name": Gretzky }
Run Code Online (Sandbox Code Playgroud)
要么
PUT /players?name=Gretzky
Run Code Online (Sandbox Code Playgroud)
如果您传递了大量数据,则需要使用选项#1,因为URL长度有限制.但除此之外,为什么不使用查询字符串来传递数据呢?
更新:删除了您可以在浏览器中测试选项#2的注释.实现(duh)您只能在浏览器中执行GET-s.
Dar*_*ler 32
根据HTTP对PUT的定义,您的第一个请求是使用仅包含一个玩家名称的新列表覆盖玩家列表.它没有添加到玩家列表中.
第二种选择对我来说并没有多大意义.在没有身体的情况下进行PUT与PUT的含义并不完全一致.
考虑到POST的标准定义之一是附加到现有资源,我不确定为什么你不会这样做
POST /players
{ "name": Gretzky }
Run Code Online (Sandbox Code Playgroud)
如果您确定所有玩家名称都是唯一的,那么您可以像这样使用PUT:
PUT /player/Gretzky
{ "name": Gretzky }
Run Code Online (Sandbox Code Playgroud)
当您决定在HTTP上执行REST时,您同意以RFC2616中定义的方式使用HTTP.这就是统一接口约束的含义.只是为了迂腐,没有REST URL这样的东西,你不能在浏览器中测试任何一个选项,因为没有javascript,你不能在浏览器中做PUT.
归档时间: |
|
查看次数: |
55733 次 |
最近记录: |