使用没有值的键查询字符串

时间:2011-04-16 17:22:11

标签: api http url rest query-string

如果我使用没有参数值的查询字符串设计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?editpage-X?delete链接都会触发GET请求,但实际上不会编辑或删除该页面。相反,它们会显示一个带有{的页面{1}},<form>可以编辑,或page-X 真正删除page-X? confiramtion对话框。实际的编辑/删除请求将是POST或删除请求。与<form>显示包含修改host/api/edit?page=path/to/page的页面的方式相同。 /编辑。

请注意,<form>不是通常格式化查询字符串的方式。相反,它们通常是这样形成的:?action

此外,有时我会使用这样的网址:

?key=value;key2=v2;key3=v3

也就是说,我包含一个没有值的查询字符串参数(http://host/path/to/page?delete;user=spammer )和一个带有值(delete)的参数(为了删除发布的所有注释垃圾邮件发送者

我的Web框架可以很好地处理user=spammer等查询字符串。所以我想,我最想知道的是,你能想到客户方面的问题吗?或任何问题,我应该决定使用另一个Web框架吗? (你知道你使用的框架是否提供了没有参数值的查询字符串的信息吗?)

(我从阅读http://labs.apache.org/webarch/uri/rfc/rfc3986.html的理解是我使用的查询字符串格式很好,但是对于所有客户端和服务器框架来说,这有什么关系。)

(我目前使用的是Lift-Web框架。我也测试了Play Framework,并且可以获得无值查询字符串参数,因此从我的观点来看,Play和Lift-Web似乎都没问题。)


以下是关于没有值的查询字符串的相关问题。但是,它处理的ASP.NET函数在某些情况下返回?replyAccess Query string parameters with no values in ASP.NET

亲切的问候,Kaj-Magnus

1 个答案:

答案 0 :(得分:4)

没有值的查询参数没有问题,但是将操作放入URI,特别是破坏性的是。

你是否认真考虑过“宁静”的设计,并且让GET成为一种破坏性的行为?