我们有 REST API。我试图找出使用一些特殊字符进行 Get 的最佳方法。
目前,我们有这样的东西:http : //myhost.com/api/book/name=HarryPotter
上面的 URL 工作得很好,但是当查询参数中包含某些特殊字符时会变得复杂,例如 '&' 或 '/',这将导致“没有找到匹配请求路径的操作...被找到,HTTP 方法:GET,ContentType :/,接受:/,”
例如:http://myhost.com/api/book/name=Dark/Thirty。
这会将“Dark/Thirty”中的“/”视为 URL 分隔符。
能够搜索此类查询的最佳实践是什么。使用 JSON 是更好的做法,如果是,我应该使用 GET 还是 POST?我相信它应该是 POST,因为查询参数中的任何斜杠都被视为 Url 分隔符。
意思是:即使这对于 GET 也会失败。http://myhost.com/api/book/search= {"name"="Dark/Thirty"}
由于这实际上不是 POST,我不想使用它。因为我只是列出符合我搜索条件的书籍,而不是修改或添加任何内容。
解决类似问题的任何指导方针?
这个链接值得一读。本质上,如果您Dark/Thirty是一个标识符(即唯一标识资源),则修改它(以可预测的模式),使其不具有特殊字符;例如,DarkThirty或dark-thirty。但是,如果它是一个搜索词,那么最好不要将其设为 RESTful,而只是将其作为普通参数传递;这就是他们的目的。
GET和之间的区别POST不在于其中的人物是什么,而在于目标是什么。GET用于获取东西:它应该没有副作用。页面的搜索或检索应该是GET. POST影响服务器的更改。您不太可能需要执行一项操作,既需要发送比 URL 允许的更多数据,同时又不对服务器进行任何更改,而只是呈现一个新页面(允许 Shazam 或 TinEye 等例外情况)。
处理GET参数中的特殊字符是URL编码的工作;如果您有http://myhost.com/api/search?q=Dark%FThirty进行搜索,那么您的网站也同样好。据我了解,REST 有两个主要驱动因素:人类友好性和 SEO 友好性。搜索也不需要。根据我的理解,REST 的存在是为了识别资源;查询的搜索结果不是资源。
总而言之,我会选择:
| 归档时间: |
|
| 查看次数: |
27720 次 |
| 最近记录: |