我一直在研究如何实施以下内容:
我正在开发一个 RESTful Web API(使用 .Net Core 2.2)。我需要创建一个端点,消费客户端可以在其中向 API 发送一些文本,API 替换此文本中的一些标记,并将文本返回给消费客户端。
我认为客户端应该简单地执行 GET 请求,并在正文中包含文本。回复将是令牌替换后的新文本。然而,根据我的研究,似乎不应该在 GET 请求的正文中添加任何带有语义的内容。我不确定需要由 API 替换的具有某些标记的任意文本是否符合语义?我还看到它说“你不应该使用 GET 请求的正文来改变响应”。我想我在那里遇到了麻烦,因为取决于进入他体内的物质,会影响反应。
因此,我一直在努力找出执行此操作的正确方法。如果有人有指点,我将不胜感激。
谢谢。
我认为客户端应该简单地执行 GET 请求,并在正文中包含文本。回复将是令牌替换后的新文本。然而,根据我的研究,似乎不应该在 GET 请求的正文中添加任何带有语义的内容。
右 - RFC 7231
GET 请求消息中的有效负载没有定义的语义;在 GET 请求上发送有效负载正文可能会导致某些现有实现拒绝该请求。
在基本 HTTP 中,您有多种选择。一种是在 URI 本身中包含文档的表示
/?your_document_as_a_query_string
/your/document/as/path/segments
Run Code Online (Sandbox Code Playgroud)
对于较短的文档,这种方法可能没问题;但实现并不需要支持无限长的标识符,因此您可能会发现中间组件拒绝您的请求,或者裁剪传输中的 URI。
实现目标的一个安全机制是使用POST,而不是GET。POST 支持消息正文,因此您可以将空白表单发送到服务器,并在响应中接收编辑后的版本。
POST是HTTP的通配符方法,它可以表示任何内容。在规范中,响应正文包括“操作状态或从操作获得的结果的表示”。
您可能还认为响应重复了请求正文的大量内容,并考虑从服务器获取模板值的映射,然后在客户端上应用模板的可能性。
| 归档时间: |
|
| 查看次数: |
10698 次 |
| 最近记录: |