gpt4 book ai didi

REST - 获取特殊字符的最佳实践

转载 作者:行者123 更新时间:2023-12-01 02:21:41 34 4
gpt4 key购买 nike

我们有 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"="黑暗/三十"}

由于这实际上不是 POST,我不想使用它。因为我只是列出符合我搜索条件的书籍,而不是修改或添加任何内容。

解决类似问题的任何指导方针?

最佳答案

This link很好读。实质上,如果您的 Dark/Thirty是一个标识符(即唯一标识资源),然后修改它(以可预测的模式),使其不包含特殊字符;例如,DarkThirtydark-thirty .但是,如果它是一个搜索词,那么最好不要将其设为 RESTful,而将其作为普通参数传递;这就是他们的目的。
GET的区别和 POST不是里面有什么人物,而是目标是什么。 GET是为了得到东西:它应该没有副作用。搜索或检索页面应该是 GET . POST影响服务器的更改。您不太可能需要执行既需要发送比 URL 允许的更多数据的操作,同时又不对服务器进行任何更改,而只是呈现一个新页面(允许 Shazam 或 TinEye 等异常)。

处理 GET 参数中的特殊字符是 URL 编码的工作;如果您有 http://myhost.com/api/search?q=Dark%FThirty对于搜索,您的网站同样出色。据我所知,REST 有两个主要驱动因素:人性化和 SEO 友好性。搜索也不需要。据我了解,REST 的存在是为了识别资源;并且来自查询的搜索结果不是资源。

总而言之,我会选择:

  • http://myhost.com/api/book/dark-thirty (资源是书)
  • http://myhost.com/api/search?q=Dark%FThirty (资源是搜索过程,带参数)
  • 关于REST - 获取特殊字符的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19998641/

    34 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com