2017-09-17 34 views
0

我正在尝试从我正在编写的命令行应用程序创建存储库。我正在使用node.js向Bitbucket 2.0 api发送一个post请求,但即使我成功创建了repo,它似乎并不尊重我创建repo的设置(例如is_private = true,has_wiki = true ,language = PHP)。我不确定我做错了什么。我的猜测是这是我格式化身体的方式?下面是我使用的代码:使用Bitbucket 2.0 api和node.js创建存储库

 var dataString = '{"has_wiki": true, "is_private": true}'; 

     request({ 
      url: 'https://api.bitbucket.org/2.0/repositories/' + username + '/' + _.kebabCase(answers.reponame), 
      method: 'POST', 
      headers: {'Authorization': 'Bearer ' + prefs.ginit.token}, 
      body: dataString 
     }, function (err, res) { 
      status.stop(); 

      if (err) { 
       console.log(err); 
       reject(new Error('Couldn\'t create remote repo.')); 
      } 

      let json = JSON.parse(res.body); 

      if(res.statusCode == 400) { 
       reject(new Error(json.error.message)); 
      } 

      if (res.statusCode == 200) { 
       console.log(chalk.green('\n' + json.name + ' created sucessfully.')); 
       console.log(chalk.green('You can view it here: ' + json.links.html.href + '\n')); 

       resolve(json); 
      } 

     }); 

API文档是here。任何人都可以帮忙?提前致谢!

+0

你试过了'var dataString = {has_wiki:true,is_private:true};'? –

+0

谢谢你回到我身边。如果我尝试传递您的建议,则存储库已成功创建,但它不会兑现传入的值:( – 5k313t0r

回答

0

我能够根据this question找到答案。我需要以不同的方式传递存储库设置。通过形式键而不是身体。

request({ 
    url: 'https://api.bitbucket.org/2.0/repositories/' + username + '/' + _.kebabCase(answers.reponame), 
    method: 'POST', 
    headers: {'Authorization': 'Bearer ' + prefs.ginit.token}, 
    form: { 
     "scm": "git", 
     "name": answers.reponame, 
     "is_private": answers.visibility === 'private' ? true : false, 
     "description": answers.description, 
     "language": answers.language, 
    } 
}, function (err, res) { 
    status.stop(); 

    if (err) { 
     console.log(err); 
     reject(new Error('Couldn\'t create remote repo.')); 
    } 

    let json = JSON.parse(res.body); 

    if(res.statusCode == 400) { 
     reject(new Error(json.error.message)); 
    } 

    if (res.statusCode == 200) { 
     console.log(chalk.green('\n' + json.name + ' created sucessfully.')); 
     console.log(chalk.green('You can view it here: ' + json.links.html.href + '\n')); 

     resolve(json); 
    } 

});