大数跨境
0
0

异步 API 的设计

异步 API 的设计 驼马精英
2019-01-14
37
导读:网站的前后端通信,往往会有异步请求,这时应该怎么设计 API?

前后端异步通信的API设计标准

同步与异步API对比及设计详解

网站前后端通信中,异步请求是不可或缺的一部分。如何设计一个高效的API接口?以下是一个值得借鉴的设计方案。

一、同步API示例

在同步模式下,客户端发起资源创建请求:

POST https://api.service.io/stars
name='Death Star' 

服务器响应 201:

HTTP/1.1 201 Created
Location: /stars/12345

表明资源已成功创建,新资源的URL位于Location字段中。

二、异步API处理

当服务器无法即时响应时,将使用异步操作。客户端请求保持一致:

POST https://api.service.io/stars
name='Death Star' 

服务器返回 202:

HTTP/1.1 202 Accepted
Location: /queue/12345

202 Accepted表示请求已被接受但尚未处理,可从Location字段查询进度。此外,服务器可以提供额外信息(如预估完成时间、当前状态)。

三、查询进度

一段时间后,客户端查询任务状态:

GET https://api.service.io/queue/12345 

服务器响应 200:

HTTP/1.1 200 Ok 
<response>
 <status>PENDING</status>
 <eta>2 mins.</eta>
 <link rel="cancel" method="delete" href="/queue/12345" /> 
</response>

200 Ok确认请求成功,具体状态信息见响应体。

四、异步操作完成

若异步任务完成,用户希望直接跳转到新资源,服务器可返回 303:

HTTP/1.1 303 See Other 
Location: /stars/97865

303 see other引导客户端重定向至新资源地址。

五、清理查询链接

异步任务完成后,客户端可通过DELETE方法删除查询链接:

DELETE https://api.service.io/queue/12345 

服务器返回 204:

HTTP/1.1 204 No Content

此代码告知删除成功,再次访问该链接时将返回404 Not Found。若未主动删除,服务器可能自动清除链接,客户端再次请求时会收到410 Gone,表示链接永久失效。

【声明】内容源于网络
0
0
驼马精英
链接物流人,聚焦数字化
内容 926
粉丝 0
驼马精英 链接物流人,聚焦数字化
总阅读38.8k
粉丝0
内容926