2016-03-15 249 views
0

我试图做一个批处理的HTTP请求(与流星/ HTTP服务器上)以下文的Gmail:Gmail的API返回400错误请求与批次请求

batchGetMessages = (accessToken, ids) => { 
    let userId = 'me'; 
    let url = `https://www.googleapis.com/batch`; 
    let boundary = `batch_message_request`; 
    let body = ``; 

    _.each(ids, (id) => { 
    body = `${body} 
    --${boundary} 
    Content-Type: application/http 

    GET /gmail/v1/users/${userId}/messages/${id.id}?format=metadata&fields=id%2Cpayload 
    ` 
    }); 

    body = `${body} 
    --${boundary}--` 

    let options = { 
    headers: { 
     'Authorization': `Bearer ${accessToken}`, 
     'Content-Type': `multipart/mixed; boundary="${boundary}"`, 
    }, 
    content: body, 
    }; 

    let data = HTTP.post(url, options); 
    console.log('data: ', data); 
} 

身体串风看起来像这个:

--batch_message_request 
Content-Type: application/http 

GET /gmail/v1/users/me/messages/15375be281102d3d?format=metadata&fields=id%2Cpayload 

--batch_message_request 
Content-Type: application/http 

GET /gmail/v1/users/me/messages/15366f87db6bdfeb?format=metadata&fields=id%2Cpayload 

--batch_message_request 
Content-Type: application/http 

GET /gmail/v1/users/me/messages/15365d62f152dea2?format=metadata&fields=id%2Cpayload 

--batch_message_request-- 

我的请求总是返回一个400错误请求错误。我检查了类似的问题,但一直没能得到这个工作尚未:

Generating HTTP multipart body for file upload in JavaScript

Gmail REST api batch support for getting messages

Batch request - 400 bad request response

任何帮助或建议,将不胜感激。谢谢!

回答

1

好吧,400 BadRequest错误似乎是由字符串模板中的换行符引起的。删除空格得到的一切工作:

... 
/* 
    the lack of whitespace is impotant in the folllowing string template: 
*/ 
    _.each(ids, (id) => { 
    body = `${body} 
--${boundary} 
Content-Type: application/http 

GET /gmail/v1/users/${userId}/messages/${id.id}? format=metadata&fields=id%2Cpayload` 
    }); 

    body = `${body} 
--${boundary}--`; 
... 

有可能保持你的代码的缩进,消除空白票友的方式,但我还没有找呢。

相关问题