我正在为我的应用程序开发 REST API。
使用此 API,我可以使用 PUT companies/1
执行诸如更新公司或个人详细信息之类的操作。和 PUT persons/2
, families/3
等。
我想使用这个 API 从其他应用程序进行定期同步。这将涉及对 REST API 的数十万个请求,其中大部分是此类更新。每个请求只需要很少的时间,但每个单独请求的延迟加起来相当长。
有什么方法可以创建可以将多个请求组合为一次的 REST API。我可以很容易地想到简单地使用一系列路径和表单数据执行 PUT,但似乎有人应该已经设计了一个更好的解决方案。
是否有将多个不同的 REST API 请求组合成单个请求以避免延迟的最佳实践,或者是否有更好的方法来处理此类情况?
最佳答案
Google 的 Gmail API 支持这一点,它有一个非常可靠、可重用的 API。
https://developers.google.com/gmail/api/guides/batch
长话短说,你的 API 有一个 POST /batch
端点,在请求正文中,您发送多个 HTTP 请求。响应将被类似地编码。
这需要服务器端和客户端逻辑,但非常通用且可重用。
例子:
POST /batch HTTP/1.1
Content-Type: multipart/mixed; boundary=batch_foobarbaz
Content-Length: total_content_length
--batch_foobarbaz
Content-Type: application/http
GET /farm/v1/animals/pony
--batch_foobarbaz
Content-Type: application/http
PUT /farm/v1/animals/sheep
Content-Type: application/json
Content-Length: part_content_length
If-Match: "etag/sheep"
{
"animalName": "sheep",
"animalAge": "5"
"peltColor": "green",
}
--batch_foobarbaz
Content-Type: application/http
GET /farm/v1/animals
If-None-Match: "etag/animals"
--batch_foobarbaz--
关于api - 将多个 REST API 请求合并为一个请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26383797/