我没有看到使用最新的V4 API对activities
端点进行批量操作的303响应。
来自API文档:
用X-Bulk标头提出一个具有true的X-bulk标头的请求。响应将永远是202个接受。
轮询响应的位置标题中提供的URL。此URL用于批量操作端点。
动作完成后,轮询URL将返回303参见其他响应。
在303的位置标题中下载来自URL的响应。
。
这是我在做的:
我将初始请求发布给活动端点,将X-BULK
标头设置为'true'
。
- 我收到
202 Accepted
响应,将Location
标头设置为投票URL。
我开始对Location
标头提供的URL进行轮询。
- 我收到了一些
200
的响应,并带有以下数据和标题:
数据:
{"data":{"id":26952539,"etag":"\"434fa52f83b8e0bb72677f60b8297866\""}}
标题:
{
'content-type': 'application/json; charset=utf-8',
'transfer-encoding': 'chunked',
connection: 'close',
vary: 'Accept-Encoding',
status: '200 OK',
'last-modified': 'Sat, 02 Dec 2017 22:17:13 GMT',
'x-ratelimit-limit': '50',
'x-ratelimit-reset': '1512253080',
'x-ratelimit-remaining': '45',
'x-request-id': '4674a764-c417-448c-af09-c6dae1cabe15',
etag: '"434fa52f83b8e0bb72677f60b8297866"',
'x-frame-options': 'SAMEORIGIN',
'cache-control': 'no-cache, private, no-store',
'x-xss-protection': '1; mode=block',
'x-api-version': '4.0.5',
'x-content-type-options': 'nosniff',
date: 'Sat, 02 Dec 2017 22:17:13 GMT',
'set-cookie':
[ 'XSRF-TOKEN=oQqTKV8XKRm9oiMuY1OFZ6qleZyRyvtcs9v52%2FWyeiVXxvVszHLiXsQkWelnUHs3ErSsH64ctIpehxErulAWHg%3D%3D; path=/; secure',
'_session_id=7babc5f94bc48ecd5d18d4b40c17d6ca; path=/; secure; HttpOnly' ],
server: 'nginx',
'strict-transport-security': 'max-age=31536000; includeSubdomains'
}
但是303
永远不会出现。以上几个200
S之后,我将获得有效载荷的另一个200
:
数据:
{
"data": [
{
"data": [ {id: 1...}, {id: 2...}, {id: 3...}, ... ],
"status": 200
}
],
"status": "completed",
"requested": 46,
"performed": 46
}
标题:
{
'x-amz-id-2': '1uiNt20Vd/X74JxKZKrt/hah7aof8xfhZlt7fhlDt8b3G2nA47Y8ZDaohb2drSF8ErniirRK2Es=',
'x-amz-request-id': '2B29557952779E29',
date: 'Sat, 02 Dec 2017 22:17:15 GMT',
'last-modified': 'Sat, 02 Dec 2017 22:17:14 GMT',
'x-amz-expiration': 'expiry-date="Wed, 06 Dec 2017 00:00:00 GMT", rule-id="Expiration rule (auto-generated)"',
etag: '"58e33e4eced83d145bf6dec9f72b97be-1"',
'x-amz-server-side-encryption': 'AES256',
'content-encoding': 'utf-8',
'x-amz-version-id': '2Ou7F__59Pz8WKOKZwFg_fOuhQjD5ro0',
'content-disposition': 'attachment; filename="activities 20171202.json";',
'accept-ranges': 'bytes',
'content-type': 'application/json',
'content-length': '9593',
server: 'AmazonS3',
connection: 'close'
}
看来,我可以通过测试status === 'completed'
进行充分解决此问题,甚至可以检查content-disposition
标头的存在。
我是在做错了什么可以禁止303
响应,还是我忽略的activities
端点有语义?
测试status === 'completed'
解决此问题是否足够?
注意:我正在为每个请求传递Authorization
标头,其中包括访问令牌。
谢谢!
这是CLIO API-V4的已知错误。目前最好的解决方案是:
测试 200
的有效载荷是否==='已完成'
我们正在努力解决缺乏303个响应。同时,我们将更新文档。
这是我一直在使用的解决方法,结果很好:
-
查询批量操作状态时使用
ignore_redirect
参数:/api/v4/bulk_actions/?ignore_redirect = true
-
使用
?fields=Response_Url
参数获取响应的实际URL。 -
从
Response_Url
属性下载结果。
我从来没有这些方法失败。