0

对于作业(在 Signavio Workflow Accelerator 中),我需要使用 GitHub-API v3 将用户添加到 Github 上的组织。代码必须用我不太熟悉的 JavaScript 编写。

目前我收到以下错误代码:“SyntaxError:JSON 中位于 Request._callback 位置 1 的意外标记 o”。所以我感觉解析可能有问题。

var link = 'https://api.github.com/orgs/myorganization/memberships/' + githubUser
var token = 'mytoken'

request({url: link, method: 'put', headers: {'User-Agent': 'request'}, auth: {username: token}, JSON: true},
  function (response, body) {
    console.log(body)
    if(body !== undefined){
      body = JSON.parse(body)
      body['state'][0]['main']
      status = body['main']['state']
      status = body.main.state
    }
    else{
      status = 'error'
    }
  })

我不知道这是否有帮助,但是如果我使用 cURL 执行这个 put 请求,它会起作用,并且答案以:

    {
      "url": "https://api.github.com/orgs/myorganization/memberships/githubUser",
      "state": "pending",
  ...}

所以这个“状态”就是我想在上面的代码中读取的值。

已经感谢您的帮助!

4

1 回答 1

0

我和我的一个朋友一起工作,我们一起找到了一个可行的解决方案。因此,如果其他人也有同样的困难:这段代码很神奇!

var link = 'https://api.github.com/orgs/myorganization/memberships/' + githubUser
var token = 'mytoken'
  const options = {
      url: link,
      method: 'put',
      headers: {'User-Agent': 'request'}, auth: {username: token}
  }
  function callback(error, response, body) {
    console.log(error)
    if(!error && response.statusCode == 200){
      const info = JSON.parse(body)
      status = info['state'][0]['main']
      console.log(status)
      status = info['state']
      status = info.state
    }
    console.log(body)
  }
  request(options, callback)
于 2018-12-28T16:02:17.000 回答