2017-09-17 106 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); 
    } 

});