HTTP SEARCH 方法是否标准化?
Is the HTTP SEARCH method standardized?
我正在考虑如何实现用于搜索的 REST API 端点。在我看来,对于如何实现搜索选项,我有四种选择,每种都各有利弊:
- 使用带有查询字符串参数的 GET 端点
- 使用带有负载的 GET 端点(例如,JSON 负载)
- 使用 POST 端点和负载
- 使用带有负载的 SEARCH 端点
为完整起见,以下是我认为的优缺点:
- 使用查询字符串参数获取端点
- Pro - 准确的动词,符合标准
- Con - 有限的期权结构(仅 key/values)和 URL 大小限制
- GET 带有负载的端点(例如,JSON 负载)
- Pro - 准确的动词,没有大小限制
- 缺点 - HTTP 规范表明 GET 请求没有有意义的有效负载,并且某些框架可能不支持它 (relevant question)
- POST 具有负载的端点
- Pro - 符合标准,无大小限制
- Con - 搜索是幂等的,而 POSTing 不是。基本上,这是错误的动词。
- 带有负载的搜索端点
- Pro - 准确的动词,没有大小限制
- 缺点 - 是一个模糊的(非标准的?)HTTP 动词
关于哪一个最好,可以进行冗长、细致和自以为是的讨论,但讨论不是这个问题的目的。相反,我问:SEARCH 动词只是晦涩难懂且很少使用但仍然是官方方法,还是非标准方法?
我找到了 this draft 的方法,但关于它的官方文档并不多。草案回应了我在上面提出的四难困境中的一些要点。在我看来,该方法仍然只是草稿,不能称为“标准”,但我对如何阅读这些文件并不太熟悉。
在功能上,我想我的问题是:我可以依靠自吹自擂的符合标准的软件来处理 SEARCH 方法吗?如果他们不处理它,我是否可以诉诸他们声称的标准合规性以迫使他们处理它?进一步归结,它是一个可靠的动词吗?
SEARCH 在 RFC 5323 的 IETF 标准轨道上定义。也就是说,目前只适用于WebDAV,很少有服务器支持。
我正在考虑如何实现用于搜索的 REST API 端点。在我看来,对于如何实现搜索选项,我有四种选择,每种都各有利弊:
- 使用带有查询字符串参数的 GET 端点
- 使用带有负载的 GET 端点(例如,JSON 负载)
- 使用 POST 端点和负载
- 使用带有负载的 SEARCH 端点
为完整起见,以下是我认为的优缺点:
- 使用查询字符串参数获取端点
- Pro - 准确的动词,符合标准
- Con - 有限的期权结构(仅 key/values)和 URL 大小限制
- GET 带有负载的端点(例如,JSON 负载)
- Pro - 准确的动词,没有大小限制
- 缺点 - HTTP 规范表明 GET 请求没有有意义的有效负载,并且某些框架可能不支持它 (relevant question)
- POST 具有负载的端点
- Pro - 符合标准,无大小限制
- Con - 搜索是幂等的,而 POSTing 不是。基本上,这是错误的动词。
- 带有负载的搜索端点
- Pro - 准确的动词,没有大小限制
- 缺点 - 是一个模糊的(非标准的?)HTTP 动词
关于哪一个最好,可以进行冗长、细致和自以为是的讨论,但讨论不是这个问题的目的。相反,我问:SEARCH 动词只是晦涩难懂且很少使用但仍然是官方方法,还是非标准方法?
我找到了 this draft 的方法,但关于它的官方文档并不多。草案回应了我在上面提出的四难困境中的一些要点。在我看来,该方法仍然只是草稿,不能称为“标准”,但我对如何阅读这些文件并不太熟悉。
在功能上,我想我的问题是:我可以依靠自吹自擂的符合标准的软件来处理 SEARCH 方法吗?如果他们不处理它,我是否可以诉诸他们声称的标准合规性以迫使他们处理它?进一步归结,它是一个可靠的动词吗?
SEARCH 在 RFC 5323 的 IETF 标准轨道上定义。也就是说,目前只适用于WebDAV,很少有服务器支持。