我正在为我的应用程序开发REST API.
有了这个API,我可以做的东西一样更新使用PUT一个公司或个人的详细信息companies/1
和PUT persons/2
,families/3
,等等.
我想使用此API与其他应用程序进行常规同步.这将涉及数以十万计的REST API请求,其中大多数是此类更新.每个请求只需要很少的时间,但每个请求的延迟会占用相当多的时间.
有没有什么方法可以创建REST API,它可以将多个请求合并为一次.我可以很容易地想到使用一系列路径和formdata来做一个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--
Run Code Online (Sandbox Code Playgroud)
延迟只会随着一系列请求而增加。使用并行请求可以解决这个问题。
这里没有最佳实践。
PATCH /companies [{id:1, ...}, {id: 2, ...}, ...]
PATCH /resources [{id: 1, "rdf:type": "app:Company", ...}, {...}]
我不喜欢他们两个,但这只是一个意见......
归档时间: |
|
查看次数: |
4065 次 |
最近记录: |