发送一个http请求到一个graphql api时“parsingJSON的问题”

我试图发送一个HTTP请求到Githubs graphql API(V4)。 我的猜测是我的查询格式是错误的。 下面的代码用于向api发送POST请求。

app.get('/fetch-data', function(req, res, next) { const access_token = settings.dev.TOKEN; const query = {query: { viewer: { 'login': 'muckbuck' } }}; const options = { uri: 'https://api.github.com/graphql', method: 'POST', headers: { 'Accept': 'application/json', 'Authorization': "Bearer " + access_token, 'User-Agent': 'request', 'contentType': "application/graphql", }, data: query }; function callback(error, response, body) { console.log(response.body) if (!error && response.statusCode == 200) { console.log(body); console.log('lol'); } } request(options, callback); }); 

我得到的错误消息:

 {"message":"Problems parsing JSON","documentation_url":"https://developer.github.com/v3"} 

我相信你的GraphQL是畸形的, query键应该包含一个string,而不是一个复杂的结构。 另请参阅GitHub API文档中的这个例子 。

您也可以按照GraphQL介绍的build议,将Content-Type设置为application/jsonapplication/graphql似乎不是注册的媒体types ,似乎改变了 GraphQL 的行为 。