HTTP动词表示';翻译';

HTTP动词表示';翻译';,http,httpverbs,Http,Httpverbs,我正在编写一个RESTWeb服务,它将文本从一种语言翻译成另一种语言。文本可以相当大,最多可达几兆字节 哪个HTTP动词最适合使用 我的第一个想法是使用GET,因为它可以为您提供给定文本的翻译。但4K URL长度限制不适用于大型文本。将消息正文与GET一起使用是不正确的 我的第二个想法是使用POST,这样我就可以在请求正文中传递文本。但它似乎不符合HTTP的精神。邮政是用来创造事物的;它更新服务器的状态,而在我的情况下,没有更新任何状态 你会用什么动词 注意:Google Translate使用

我正在编写一个RESTWeb服务,它将文本从一种语言翻译成另一种语言。文本可以相当大,最多可达几兆字节

哪个HTTP动词最适合使用

我的第一个想法是使用GET,因为它可以为您提供给定文本的翻译。但4K URL长度限制不适用于大型文本。将消息正文与GET一起使用是不正确的

我的第二个想法是使用POST,这样我就可以在请求正文中传递文本。但它似乎不符合HTTP的精神。邮政是用来创造事物的;它更新服务器的状态,而在我的情况下,没有更新任何状态

你会用什么动词


注意:Google Translate使用POST。

我正在学习POST,因为我将PUT、PATCH、DELETE等视为特定选项

GET应该是“适当的”,因为它的来源是“获取给定的资源”,例如,根据您解析的一些数据获取我的翻译


然而,我相信可以这样说,翻译不存在,只是生成的,因此您发布字符串,Web服务创建翻译并返回它。此外,正如您所提到的,GET请求被URL长度阻止

其余是关于“资源”。诸如“将本文翻译成日语”或“添加1到5”等计算操作通常不适合REST。在我看来,对于这样的操作,POST是一个通用动词。请阅读RFC中的POST定义,在-中找到-在HTTP请求正文中提供文本并在响应正文中接收翻译不会违反该定义中的任何内容。“资源”的名称应该是像
translations
这样的名词,而不是像
translation
这样的动词。你应该将一些东西发布到服务器上进行翻译。如果无法立即计算结果,则会发出一些令牌,稍后可以使用GET检索这些令牌。这正是我的观点<代码>发布要翻译的内容,是的,如果它不立即可用,您可以返回一个翻译资源,该资源将处于挂起状态,或者类似的状态。很好的一点,关于稍后的抓取-这将是一个GET请求,毫无疑问。