带有RESTful API的正文的HTTP GET请求

时间:2019-03-11 09:08:12

标签: rest api get

我一直在研究如何实现以下目标:

我正在开发RESTful Web API(使用.Net Core 2.2)。我需要创建一个端点,使用方可以在其中向使用方客户端发送一些文本,API替换此文本中的一些令牌,然后将文本返回给使用方客户端。

我认为客户端应该只用正文中的文本来执行GET请求。这样,答复将是替换令牌后的新文本。但是,从我的研究来看,似乎不应该在GET请求的主体中粘贴任何带有语义的内容。我不确定带有特定令牌且需要用API替换的任意文本是否符合语义?我也看到它在“您不应该使用GET请求的主体来更改响应”中指出。我想我在这里遇到麻烦,因为这取决于他的身体,会影响反应。

因此,我一直在努力找出执行此操作的正确方法。如果有人有指针,我将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:2)

  

我认为客户端应该只用正文中的文本来执行GET请求。这样,答复将是替换令牌后的新文本。但是,从我的研究来看,似乎不应该在GET请求的主体中粘贴任何语义。

右-RFC 7231

  

GET请求消息中的有效负载没有定义的语义;在GET请求上发送有效内容正文可能会导致某些现有实现拒绝该请求。

在基本HTTP中,您可以选择。一种是在URI本身中包含文档的表示形式

/?your_document_as_a_query_string
/your/document/as/path/segments

对于简短的文档,这种方法可能很好;但是不需要实现支持无限长的标识符,因此您可能会发现中间组件拒绝了您的请求,或者裁剪了传输中的URI。

实现目标的安全机制是使用POST,而不是GET。 POST支持消息正文,因此您可以将空白表单发送到服务器,并在响应中接收编辑后的版本。

POST是HTTP的通配符方法,可以表示任何含义。在规范中,响应includes的主体为“动作状态或结果的表示”。

您可能还考虑到响应重复了请求正文的许多内容,并考虑了从服务器获取模板值的映射,然后将模板应用于客户端的可能性。 / p>