Google API returns 400 BadRequest 批量请求
Google API returns 400 BadRequest for batch request
我正在尝试向 GMail API using request 发送 nodejs 的沐浴请求。问题是即使我生成了与文档中相同的查询,gmail 总是以 400 BadRequest
响应
这些是我的 headers 形式 json
{ 'Content-Type': 'multipart/mixed; boundary=c2db2692-8877-4159-bf02-03e6c5d3ffbf',
authorization: 'Bearer MY_TOKEN',
'content-length': 231 }
body 内容示例
--c2db2692-8877-4159-bf02-03e6c5d3ffbf
Content-Type: application/http
Content-ID: <item1:12930812@barnyard.example.com>
GET /gmail/v1/users/sneg0k32@gmail.com/messages/14c6c0c43e9bb16b
--c2db2692-8877-4159-bf02-03e6c5d3ffbf--
对于为什么会发生这种情况有什么建议吗? Request 生成额外的几个空格并使 headers 变为小写,但我不确定这是否是问题所在。
nodejs代码示例
request({
method: 'POST',
uri: 'https://www.googleapis.com/batch',
auth: {
bearer: key
},
headers: {
'Content-Type': 'multipart/mixed'
},
multipart: _.map(queries, function(query) {
return {
'Content-Type': 'application/http',
'Content-ID': "<item1:12930812@barnyard.example.com>",
body: 'GET ' + query
}
})
}, function(error, response, body) {
console.log(response.request.headers)
_.map(response.request.body, function(chunk) {
console.log(chunk.toString())
})
console.log(body)
})
更新: 这显然是我如何调用节点、通过 HTTPTester 发送相同请求并且一切正常的问题
UPD2:决定使用 bachelor,但是我还没有弄清楚是什么导致了这个问题的简单请求
很难解决这样的问题。我很可能会说这取决于空间。我有一个类似的问题,因为请求 body 由于其结构而被视为无效。
大写或小写 headers 应该不会造成问题。
如果有帮助,我已经创建了一个节点模块来创建批处理请求:https://www.npmjs.com/package/batchelor。放心使用吧。
我正在尝试向 GMail API using request 发送 nodejs 的沐浴请求。问题是即使我生成了与文档中相同的查询,gmail 总是以 400 BadRequest
响应这些是我的 headers 形式 json
{ 'Content-Type': 'multipart/mixed; boundary=c2db2692-8877-4159-bf02-03e6c5d3ffbf',
authorization: 'Bearer MY_TOKEN',
'content-length': 231 }
body 内容示例
--c2db2692-8877-4159-bf02-03e6c5d3ffbf
Content-Type: application/http
Content-ID: <item1:12930812@barnyard.example.com>
GET /gmail/v1/users/sneg0k32@gmail.com/messages/14c6c0c43e9bb16b
--c2db2692-8877-4159-bf02-03e6c5d3ffbf--
对于为什么会发生这种情况有什么建议吗? Request 生成额外的几个空格并使 headers 变为小写,但我不确定这是否是问题所在。
nodejs代码示例
request({
method: 'POST',
uri: 'https://www.googleapis.com/batch',
auth: {
bearer: key
},
headers: {
'Content-Type': 'multipart/mixed'
},
multipart: _.map(queries, function(query) {
return {
'Content-Type': 'application/http',
'Content-ID': "<item1:12930812@barnyard.example.com>",
body: 'GET ' + query
}
})
}, function(error, response, body) {
console.log(response.request.headers)
_.map(response.request.body, function(chunk) {
console.log(chunk.toString())
})
console.log(body)
})
更新: 这显然是我如何调用节点、通过 HTTPTester 发送相同请求并且一切正常的问题
UPD2:决定使用 bachelor,但是我还没有弄清楚是什么导致了这个问题的简单请求
很难解决这样的问题。我很可能会说这取决于空间。我有一个类似的问题,因为请求 body 由于其结构而被视为无效。
大写或小写 headers 应该不会造成问题。
如果有帮助,我已经创建了一个节点模块来创建批处理请求:https://www.npmjs.com/package/batchelor。放心使用吧。