REST请求无法编码为GET(URL太长)
例:
网址:http://example.com/collection/a%20search%20term
方法: GET
响应: collection
所有项目与a search term
匹配。
问题:搜索项可能会很长,以至于打乱了Web服务器的最大URL长度。
我如何允许极长的搜索条件并保持RESTful?
为了获得灵感,我只看了谷歌翻译的API v2,它是“使用REST风格的调用风格”。
自然,要翻译的文本可能会很长。 因此,Google可以选择允许用POST
发送请求,但有一个转折点:
要使用POST
,必须使用X-HTTP-Method-Override
头来告诉Translate API将请求视为GET
(使用X-HTTP-Method-Override: GET
)。
所以可以将POST
请求语义转换为GET
请求。
(这个发现让我将x-http-method-override标签添加到我的问题中。)
REST不限制POST创建。 请注意将CRUD映射到HTTP方法,并假定它是RESTful。 POST是用于任何未通过HTTP标准化的操作的方法。
由于该标准没有对URI进行限制,因此可以认为这是一个破坏的实现,可以修复它。 只要解决方法与您的API松散耦合,您仍然是RESTful。 这意味着你的API不应该直接实现翻译或覆盖,而是在某种预处理器上正确地重写请求。 在某个地方应该清楚地记录这是由于实施失败,并且您预计它最终会过时。
如果查询长度超过最大长度(实际上浏览器为2000个字符,但对于其他访问REST API的方法可能会更高),这是一种难闻的气味。
如果用户可以传入那么多的数据,它应该放在请求主体/数据字段中,而不是在URL中。
链接地址: http://www.djcxy.com/p/12353.html