【发布时间】:2011-08-06 23:47:02
【问题描述】:
如果我用不带参数值的查询字符串设计我的 REST API,你能想到什么缺点?像这样:
http://host/path/to/page?edit
http://host/path/to/page?delete
http://host/path/to/page/+commentId?reply
而不是例如:
http://host/api/edit?page=path/to/page
http://host/api/delete?page=path/to/page
http://host/api/reply?page=path/to/page&comment=commentId
( 编辑: 任何page-X?edit 和page-X?delete 链接都会触发GET 请求,但不会实际编辑或删除页面。相反,它们会显示带有<form> 的页面,在其中page-X 可以编辑,或者<form> 带有真的删除页面-X? 确认对话框。实际的编辑/删除请求将是POST 或DELETE 请求。与@ 相同的方式987654330@ 显示带有编辑 <form> 的页面。/Edit.)
请注意,?action 通常不是查询字符串的格式。相反,它们通常格式如下:?key=value;key2=v2;key3=v3
此外,有时我会使用这样的 URL:
http://host/path/to/page?delete;user=spammer
也就是说,我将包含一个没有值的查询字符串参数 (delete) 和一个有值的参数 (user=spammer)(以便删除 垃圾邮件发送者发布的所有 cmets >)
我的 Web 框架可以很好地处理像 ?reply 这样的查询字符串。所以我想我最想知道的是,你能想到任何客户端问题吗?或者有什么问题,我应该决定使用另一个 Web 框架吗? (你知道你使用的框架是否提供了没有参数值的查询字符串的信息吗?)
(通过阅读http://labs.apache.org/webarch/uri/rfc/rfc3986.html,我的理解是,我使用的查询字符串格式很好,但这对所有客户端和服务器框架有什么影响。)
(我目前使用 Lift-Web 框架。我也测试过 Play Framework,并且可以获取无值查询字符串参数,所以从我的角度来看,Play 和 Lift-Web 似乎都还可以.)
这是一个关于没有值的查询字符串的相关问题。但是,它处理在某些情况下返回 null 的 ASP.NET 函数:Access Query string parameters with no values in ASP.NET
亲切的问候,Kaj-Magnus
【问题讨论】:
标签: api http url rest query-string