使用http状态202进行异步操作

2023-12-19

我正在为接受用户贡献数据的服务编写 REST API。我希望所有操作保持完全异步,这包括 PUT、POST、DELETE 甚至 GET 请求。我的想法是接收请求,对其进行足够的处理以确保它是有效的请求,然后传递 HTTP 202 接受的响应以及数据最终可用的 url 和令牌,以便后续请求可以与处理后的数据相匹配。如果请求无效,我将发送 HTTP 400。

然后,客户端将负责在将来的某个时间检查我向他们提供的 url 并传递令牌。如果数据可用,我会返回正常的 200 或 201,但如果我仍在处理请求,我将发送另一个 202,指示处理尚未完成。如果处理数据时出现错误,我将根据需要发送 4xx 或 5xx 状态。

我想这样做的原因是这样我可以将所有有效请求转储到请求池中,并让工作人员从队列中提取并处理可用的请求。由于我不知道池大小或可用工作人员数量,因此我无法确定是否可以足够快地获取请求以满足 Google App Engine 的 30 秒限制。

我的问题是:我是否通过以这种方式处理请求来破坏 REST?例如,浏览器似乎需要立即响应请求。对于我的 HTML 页面,我计划使用结构化页面进行响应,然后使用 AJAX 来处理数据请求。

我最感兴趣的是以这种方式使用 REST 处理数据的任何意见或经验。


我认为你的解决方案很好,Http status 202 is the 正确的反应 http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html在这种特定情况下使用表明请求已被接受处理,但处理尚未完成.

我要稍微改变一下你的工作流程是Http status的后续请求。

正如你所说,202 response应该返回一个Location header指定客户端应该用来监视其先前请求的状态的 URL。
调用这个检查我的进程的状态URL,如果进程挂起,我不会返回 202,而是返回:

  1. 200 OK当请求的进程仍处于待处理状态时。响应应描述流程的待处理状态。
  2. 201 Created当处理完成时。 GET/PUT/POST 情况下的响应应包含请求/创建/更新资源的位置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用http状态202进行异步操作 的相关文章

  • 如何从Windows服务公开restful接口?

    我编写了一个公开restful接口的wcf服务 现在我使用iis作为wcf服务主机 除了暴露其余部分之外 我还需要对我的应用程序执行一些操作 为此 我必须将我的应用程序作为 Windows 服务运行 但是使用iis作为主机不会使我的wcf服
  • 将文件和关联数据发布到 RESTful Web 服务(最好以 JSON 形式)

    在一个应用程序中 我正在开发 RESTful API 我们希望客户端以 JSON 形式发送数据 该应用程序的一部分要求客户端上传文件 通常是图像 以及有关图像的信息 我很难在单个请求中追踪这种情况是如何发生的 是否可以将文件数据 Base6
  • ReST 代理对象生成器

    第三方公司写了一套ReST服务 我已经让所有代码正常工作 但事后看来 为了消除一些跑腿工作 我认为有人可能知道一个代码生成器 它连接到 ReST 服务并计算出需要创建和生成哪些请求和响应对象这些的代码 我在谷歌上看了一下 但没有看到任何合适
  • 寻找在 Ruby on Rails 中构建安全 REST API 的建议

    我正开始为我正在从事的项目构建 REST API 这促使我对使用 RoR 构建 API 的最佳方法进行了一些研究 我很快发现 默认情况下 模型是向世界开放的 只需在 URL 末尾添加 xml 并传递适当的参数即可通过 URL 进行调用 那么
  • 使用哪个 HTTP 状态代码来拒绝由于乐观锁定失败而导致的 PUT

    假设我想实现某种乐观锁定并使用 ETag 来指示最新的资源状态 这意味着 客户将使用If Match标题时PUT等待更新 根据HTTP规范 http www w3 org Protocols rfc2616 rfc2616 sec14 ht
  • 向 JMeter REST 请求添加身份验证

    我今天花了大部分时间试图让它发挥作用 但仍然没有成功 我有一个简单的案例 我只想向我的网络服务发送一个 GET 请求 但无论我做什么 我都无法对其进行身份验证 我尝试过授权管理器 Cookie 管理器 标头管理器的各种组合 但无济于事 我把
  • 如何保护 RESTful Web 服务的安全?

    我必须实施安全RESTful Web 服务 https www ibm com developerworks webservices library ws restful 我已经使用谷歌做了一些研究 但我陷入困境 Options TLS H
  • 使用 authlogic_api 进行 Rails REST API 访问

    我正在为 Steam 游戏编写 Rails 后端 API 该游戏只能通过 REST 调用访问 因此不需要特定于用户的身份验证 我正在努力实施authlogic api 插件 http github com phurni authlogic
  • Laravel 中的 PATCH Ajax 请求

    是否可以向 Laravel 发出 Ajax PATCH 请求 或者我是否仅限于 POST Laravel 在输入隐藏字段中使用 PATCH 但是 我没有使用表单元素 只是在单击时 通过 Ajax 请求 应该部分更新记录的按钮 这条路线会是什
  • WCF 服务契约将被 XML 和 Json 序列化

    我如何创建要加入的服务合同XmlSerializer 格式也WebMessageFormat Json在 WCF RESTful 服务中 我需要的是从 ASP Net 1 1 的代码后面调用 CallADSWebMethod 操作契约 该契
  • 找不到可接受的代表

    我是 Spring Boot 的新手 我可能会犯一些愚蠢的错误 所以提前对此类问题表示歉意 我正在尝试编写接受以下 JSON 的 POST API id null a 1 3 b somestring mapJson monday 10 0
  • 使用 Spring RestTemplate 时忽略 SSL 证书验证

    我正在使用 Spring RestTemplate 发出 HTTPS 请求 并且我想忽略 SSL 证书 这是我创建restTemplate请求的代码 TrustStrategy acceptingTrustStrategy X509Cert
  • 为移动应用程序创建 API - 身份验证和授权

    Overview 我正在寻找为我的应用程序创建一个 REST API 最初 主要目的是供移动应用程序 iPhone Android Symbian 等 使用 我一直在研究基于 Web 的 API 的身份验证和授权的不同机制 通过研究其他实现
  • 在 C# 控制台应用程序中使用 HttpClient 使用 WEB API

    我使用 MySQL 数据库在 Visual Studio 2015 中创建了一个 Web API API 运行完美 所以我决定做一个控制台client http www c sharpcorner com article web api w
  • Azure API Manager 将所有内容公开,摆脱 Ocp-Apim-Subscription-Key

    我有一些通过 Azure API 管理代理的 REST API 出于某种原因 我希望将其公开以应对所有请求 从开发人员的角度来看 我想摆脱在标头 或请求 中设置密钥 Ocp Apim Subscription Key XXXXXXXXXXX
  • 如何在没有 baseUrl 的情况下设置 Retrofit

    我的 apiPath 是完全动态的 我有包含 ipAddress 和 SSLprotocol 等字段的项目 基于它们我可以构建我的网址 private String urlBuilder Server server String proto
  • 当前用于验证 Http 请求(REST、Xml over Http)的标准是什么?

    该标准应解决以下身份验证挑战 例如 重放攻击 中间的人 明文攻击 字典攻击 暴力攻击 被假冒服务器欺骗 我已经研究过 Amazon Web Services 这是一种可能性 更重要的是 似乎有两种最常见的方法 使用 apiKey 它的编码方
  • RESTful API,如果查询字符串不够长怎么办?

    我们有产品资源集合 products 我们希望过滤此集合以仅返回具有特定列表之一的成员class id的 例如 GET products classes 100 101 102 这应该返回具有列出的任何类的产品成员的集合 我们遇到的问题是
  • 如何从 Android 调用 RESTful 方法?

    我尝试了两种不同的方法来从 Android 调用简单的 REST 方法 所述 REST 方法 适用于其他客户端 仅返回一个 int val 例如 17 以下两次尝试都是基于我在网上找到的代码 有一种是这样的 公共无效onFetchBtnCl
  • 在 Angular 中让多个调用等待同一个 Promise

    我在一个页面上有多个使用相同服务的控制器 为了举例 我们将服务称为 USER 第一次调用 USER getUser 时 它会发出 http 请求来获取有关用户的数据 调用完成后 它将数据存储在 USER data 中 如果再次调用 USER

随机推荐

  • 是否可以使用 CRC 进行基本的纠错?

    我知道使用 CRC 的全部目的是进行错误检测 但我听到有人说它除了错误检测之外还可以用于进行基本的错误纠正 我很好奇是否是这样 如果是的话 它的威力有多大 我的意思是 我们通常将 CRC 称为能够执行 x 位检测 但我很好奇它是否能够执行
  • Java中如何从域名获取IP地址?

    我正在编写一个需要 IP 地址的应用程序 我有一个域名 我想知道如何从中获取 IP 地址 例如 www girionjava com 如何通过Java编程获取该网站的IP地址 谢谢 InetAddress giriAddress java
  • 箭头键输入代码在 tkinter 中不起作用

    以下是我的简短脚本 当按住这些箭头键时 它的意思是从右向左和向上打印 但我不知道为什么它不起作用 import Tkinter as tk right False left False up False def keyPressed eve
  • php-ga:如何识别自然流量?

    我正在做所有的 Google Analytics 服务器端工作 但 GA 仅跟踪直接或推荐 而且我不知道如何跟踪有机 这是一段可以直接获取或引用的代码 Campaign is used for the referrals If not in
  • 编译 create-react-app 时出现构建错误

    我是 Reactjs 的新手 正在开始学习它 我一直在尝试启动一个基本的 hello world 程序 但它在编译级别失败 使用 create react app hello world 创建了一个启动 hello word 程序 它给了我
  • 播放 YouTube 视频时出现错误“网络 [400] 出现问题”

    我正在使用 Android You tube API 播放 you Tube 视频 某些 URL 工作正常 但在某些 URL 中 我在屏幕上发现错误消息 显示 网络出现问题 400 点击重试 互联网已连接 请帮助我 提前致谢 This li
  • 如何在 Swift 中将十进制数转换为二进制数?

    如何在 Swift 中将 Int 转换为 UInt8 例子 我想将数字 22 转换为 0b00010110 var decimal 22 var binary UInt8 What should I write here 您可以将十进制值转
  • 我们如何从远程资源管理器中删除 ssh 目标

    远程资源管理器侧边栏有一个明显的图标 用于添加新目标 但我找不到用于删除或编辑目标的选项 就我而言 服务器的 IP 经常更改 因此它们只是继续在侧边栏中添加 现在有清理方法 目标是否存储在我可以手动编辑的文件中 您可以通过编辑删除或编辑它
  • 合并不同维度 r 的列表元素[重复]

    这个问题在这里已经有答案了 我有一个 df df data frame year c rep 2018 4 rep 2017 3 Area c 1 4 1 3 P 1 7 N 1 7 我想按年份将其拆分 然后再次将所有内容合并在一起 以便我
  • 绘制圆角矩形时出现透明度问题

    我正在尝试使用我在教程中找到的一些代码绘制带圆角的矩形 我稍作修改 Rounded rectangle algorithm copied from http ju outofmemory cn entry 18060 def round c
  • 使用 urllib2 时出现“TypeError: a float is required”

    我正在关注推特 API 文档 https dev twitter com docs auth application only auth发出仅限应用程序的请求 执行时发生错误第2步 获取不记名令牌 我不熟悉回溯中这些模块的详细信息 有人可以
  • 如果函数没有显式使用“ret”,为什么没有返回值

    我有以下程序 SECTION text main mov ebx 10 mov ecx 50 repeat inc ebx loop repeat mov eax ebx ret 当该程序运行时 它按预期返回 60 然而 如果你放弃了最后的
  • Cloudant 和 CouchOne 之间的区别?

    我想知道 Cloudant 和 CouchOne 之间有什么区别 好问题 我的快速回答 CouchOne 由 CouchDB Apache 项目的创始人 Damien Katz 领导 CouchOne 现在专注于缩小 couchdb 的规模
  • 如何提高填充大量树视图的性能?

    首先 我正在以问答方式回答我自己的问题 所以我不一定需要任何人来回答这个问题 这是我学到的东西 很多人都可以利用它 我有一个由许多不同节点组成的树视图 每个节点的后面都有一个对象Data属性 对象引用一个对象主列表中的不同层次结构级别 该列
  • 无法使用 Knockout JS 从 jquery 自动完成中选择/绑定项目

    当我终于能够从列表中添加和删除项目之后 看小提琴 http jsfiddle net spstieng THJE3 46 我继续实现 jQuery 自动完成 看完之后卢恩的例子 https stackoverflow com questio
  • 如何在jQuery中缓存$.post-request的结果?

    我有一个小的 jQuery 脚本 它通过查看 ID 来获取信息 防止多次请求相同数据的最佳方法是什么 例如 在 jQuery 中缓存的最佳实践是什么 我尝试过使用 post and ajax选项 cache 设置为 true 但请求发送多次
  • 使用 jQuery 的 .each() 函数将函数附加到多个幻灯片容器

    我在单页网站上有很多小的 jQuery Cycle 幻灯片 div 容器 例如 div class foo bar data value varies on each container img src directory img 0 jp
  • Unity3D - 如何制作纹理改变静音按钮/切换?

    我正在尝试在我的 Android 游戏菜单中制作一个静音按钮 因此当我按下该按钮时 纹理会从正在播放的扬声器符号更改为静音扬声器符号 我已经在 Photoshop 中制作了 因此 当音频播放时 它将有一个 扬声器 符号 但是当我按下它时 它
  • PHP for iPad 或其他解决方案

    这是一个棘手的问题 我正在为 iPad 开发一个网络应用程序 该应用程序将作为信息亭安装 该应用程序本质上是一个测验 不需要将数据存储在数据库中 但需要处理从一页到另一页的数据 从问题页到结果页 最初的解决方案是简单的 PHP 我现在获悉
  • 使用http状态202进行异步操作

    我正在为接受用户贡献数据的服务编写 REST API 我希望所有操作保持完全异步 这包括 PUT POST DELETE 甚至 GET 请求 我的想法是接收请求 对其进行足够的处理以确保它是有效的请求 然后传递 HTTP 202 接受的响应