rest - 在 REST Api 中发送和立即检索响应数据的方法
问题描述
我正在尝试为我们的一个客户构建一个小型 REST API,他希望使用这种 API。这是我第一次读到这个话题。我们的大部分服务都需要相当长的时间来完全处理客户订单。为此,客户端可以通过 POST xml 数据来创建资源,并稍后通过 GETting 相应的资源来检索结果(很多)。这很简单。
现在虽然我们想创建另一个服务,它通常会几乎立即评估结果,我真的不知道如何通过最佳实践来实现它。由于可以立即处理请求,因此我想避免使用两个请求来创建和检索资源。这似乎是不必要和费力的。
另一方面,对于这个问题似乎不存在一个合适的 HTTP 请求方法,因为 POST 请求不应该响应任何响应代码,而 GET 请求应该独立于它们的主体(今天似乎可以发送GET请求的body数据,不过这似乎是不好的做法,不应该影响响应。换句话说,服务器只允许使用包含在URL中的信息)。此外,由于数据包含非常敏感的信息,因此我无法在 GET-URL 中将数据作为查询参数发送 - 我们在我国对该主题有非常严格的法律,我学会了非常小心。
实施这种响应式工具的最佳实践是什么。REST API 可能是错误的选择吗?
谢谢
解决方案
POST 请求不应该响应任何响应代码
这不太对。
如果是导致创建的 POST,您应该使用 HTTP 201 状态代码并包含指向新资源 URL 的 Location 标头。
此外,POST 响应可能包含具有创建对象表示的主体:restful POST 响应的“最佳”实践。
所以方法 POST 就是你要找的。它创建新资源并返回正文中新创建对象的表示。
如果您的服务在创建后会修改对象,则取决于您如何处理。如果修改时间很短,可以等到对象被修改后,再返回准备使用的对象。否则,您可以返回字段不完整的对象。这两种方法都是 RESTful 的。
推荐阅读
- python - dash 子应用的导入包已经存在
- hadoop - 我正在尝试安装配置单元,但似乎我在网上找不到任何解决方案
- node.js - 将文件从服务器的硬盘驱动器移动到远程 SFTP 是 I/O 操作的一个示例?如果是这样,NodeJS 可以帮助加快这个过程吗?
- javascript - User_timing 谷歌分析数据未显示在分析仪表板上,即使从网站成功解雇
- python - 如何在熊猫中为不同的子集元素创建滚动平均列?
- google-cloud-platform - 使用 Google Cloud Platform 托管静态网站的 DNS_PROBE_FINISHED_NXDOMAIN
- google-sheets - 如何在 Google 表格中锁定 today() 函数
- python - 如何解决函数中的索引错误
- c - AVR 将 UART 输入放入循环缓冲区并再次取回它们
- reactjs - 使用 javascript 和 html5 从网页内的 RTMP url 流式传输音频