【问题标题】:Making a Post request to Github API for creating issue is not working向 Github API 发出 Post 请求以创建问题不起作用
【发布时间】:2015-10-28 12:08:35
【问题描述】:

过去几天我一直在尝试向 github api 发出此帖子请求,但不幸的是,响应返回为“错误消息”

这是我们在节点中使用 https 请求在 post 请求中发送的一段代码 -

这是帖子数据

var issueData = JSON.stringify({
  "title":title,
  "body":comment
});

这是选项文件

var options = {
  host: 'api.github.com',
  path: '/repos/sohilpandya/katasohil/issues?access_token='+sessions.token,
  headers: {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0',
  },
  method: 'POST'
};

这是 https 请求

var requestaddIssue  = https.request(options, function(responseFromIssues){
  responseFromIssues.setEncoding('utf8');
  responseFromIssues.on('data', function(chunk){
    console.log('>>>>chunk>>>>>',chunk);
    issueBody += chunk;
  });
  responseFromIssues.on('end',function(issueBody){
    console.log(issueBody);
  });
});
requestaddIssue.write(issueData);
requestaddIssue.end();

我尝试了另一种方法,其中用户的身份验证令牌位于标头中

'Authentication': 'OAuth '+ sessions.token (where we are storing token inside sessions)

但块响应似乎总是在控制台日志中返回以下内容。

{
 "message": "Not Found",
 "documentation_url": "https://developer.github.com/v3/issues/#create-an-issue"
}

我在 apigee 中尝试过同样的方法,它似乎工作正常并返回正确的响应。希望有人可以在上面的代码中找到导致此错误消息错误的小错误。

【问题讨论】:

  • 您是否已将此用于处理任何其他请求?您是否也考虑过使用模块来创建像 request 这样的请求,或者甚至只使用 node-github
  • @GrimurD 我已经通过获取请求来检索一些用户数据。通常我确实使用请求模块,但试图分解它只是为了找到错误。
  • 您可能应该使用类似fiddler 的方式记录传出请求,以确保请求看起来正确。由于您收到了 404,因此该请求一定有问题。

标签: node.js github-api


【解决方案1】:

除了你发布的sn-ps中没有定义issueBody变量,代码是正确的。我尝试使用personal access token

出现您收到的错误是因为您需要添加具有打开问题的权限的scope

我尝试了 repopublic_repo 范围,它们都在工作。请注意,repo 可以访问私有存储库。在这里你可以看到list of scopes

如果您使用的是 OAuth,那么您应该有一个如下所示的 url:

https://github.com/login/oauth/authorize?client_id=<client-id>&scope=public_repo&redirect_uri=<redirect-uri>

【讨论】:

  • 谢谢!添加范围后似乎正在醒来。 :)
猜你喜欢
  • 1970-01-01
  • 2022-01-25
  • 2018-11-26
  • 2021-08-24
  • 1970-01-01
  • 1970-01-01
  • 2018-09-13
  • 1970-01-01
  • 2015-04-30
相关资源
最近更新 更多