前后端异步通信的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,表示链接永久失效。

