Clio API:批量操作不返回303状态代码

时间:2017-12-02 22:46:50

标签: node.js express npm-request clio-api

对于使用activities端点的最新v4 api,我没有看到针对批量操作的303响应。

来自The API Documentation:

  
      
  1. 使用值为true的X-BULK标头向操作发出请求。响应始终为202 Accepted。

  2.   
  3. 轮询响应的Location标头中提供的URL。此URL用于批量操作端点。

  4.   
  5. 一旦操作完成,轮询URL将返回303请参阅其他响应。

  6.   
  7. 从303的位置标题中的URL下载响应请参阅其他回复。

  8.   

这就是我正在做的事情:

我向活动端点发出初始请求,并将X-BULK标头设置为'true'

  • 我收到202 Accepted响应,其中Location标头设置为投票网址。

我开始从Location标题中查询提供的网址。

  • 我收到了一些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中的几个后,我得到了另一个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标头,其中包括访问令牌。

谢谢!

2 个答案:

答案 0 :(得分:2)

这是Clio API-V4的已知错误。 目前最好的解决方案是:

测试200的有效负载状态==='已完成'

我们正在努力解决缺乏303响应的问题。与此同时,我们将更新文档。

答案 1 :(得分:2)

这是我一直在使用的解决方法,效果非常好:

  1. 查询批量操作状态时使用ignore_redirect参数:

    / API / V4 / bulk_actions /?ignore_redirect =真

  2. 使用?fields=Response_Url参数获取响应的实际网址。

  3. Response_Url属性下载结果。

  4. 我从来没有让这些方法失败。