如何通过使用GOLang调用REST API在BitBucket中创建REPOSITORY

时间:2018-01-18 03:07:38

标签: java rest go bitbucket

是否有任何来自BitBucket的REST API,可以从GoLang调用它,以便创建一个新的REPOSITORY。我可以获取现有的细节但不能创建新的细节。记住CURL不是必需的。请帮助,坚持一段时间。有没有办法通过JAVA呢?如果Java能做到,那么我认为GoLang应该能够做到。推荐!

2 个答案:

答案 0 :(得分:1)

仔细查看他们的documentation我发现了这个endpoint,它允许您使用他们的API创建回购。

可以使用任何语言调用REST API端点。

这是一个不错的tutorial,它解释了如何使用GO调用json API端点。

答案 1 :(得分:0)

谢谢你的帮助! 是的,我能够解决这个问题,同事指出了这个错误。 需要的东西: 1.您应该拥有bitBucket的完全访问权限。 2.您应该有正确的URL来连接REST API。注意:REST API URL与直接URL的URL不同,并且版本正确。

Go代码为::

import (
    "encoding/json"
    "bytes"
    "fmt"
    "io/ioutil"
    "net/http"
)

func main() {

    url:=fmt.Sprintf("https://<Server BitBucket>/rest/api/1.0/projects/<PROJECT WHERE REPO TO BE CREATED>/repos");
   jsonData := map[string]string{"name":"<REPONAME>","scmID":"git","forkable":"true"}  
    jsonValue,_:=json.Marshal(jsonData)
    req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonValue))
    req.Header.Set("Content-Type", "application/json")
        req.SetBasicAuth("<USERNAME>", "<PASSWORD>")
    fmt.Println("++",req)

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }

    defer resp.Body.Close()

    fmt.Println("response Status:", resp.Status)
    fmt.Println("response Headers:", resp.Header)
    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println("response Body:", string(body))
    }

这将响应为201,是的,它将被创建!!