在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:digitalocean/godo开源软件地址:https://github.com/digitalocean/godo开源编程语言:Go 100.0%开源软件介绍:GodoGodo is a Go client library for accessing the DigitalOcean V2 API. You can view the client API docs here: http://godoc.org/github.com/digitalocean/godo You can view DigitalOcean API docs here: https://docs.digitalocean.com/reference/api/api-reference/ Installgo get github.com/digitalocean/[email protected] where X.Y.Z is the version you need. or go get github.com/digitalocean/godo for non Go modules usage or latest version. Usageimport "github.com/digitalocean/godo" Create a new DigitalOcean client, then use the exposed services to access different parts of the DigitalOcean API. AuthenticationCurrently, Personal Access Token (PAT) is the only method of authenticating with the API. You can manage your tokens at the DigitalOcean Control Panel Applications Page. You can then use your token to create a new client: package main
import (
"github.com/digitalocean/godo"
)
func main() {
client := godo.NewFromToken("my-digitalocean-api-token")
} If you need to provide a ExamplesTo create a new Droplet: dropletName := "super-cool-droplet"
createRequest := &godo.DropletCreateRequest{
Name: dropletName,
Region: "nyc3",
Size: "s-1vcpu-1gb",
Image: godo.DropletCreateImage{
Slug: "ubuntu-20-04-x64",
},
}
ctx := context.TODO()
newDroplet, _, err := client.Droplets.Create(ctx, createRequest)
if err != nil {
fmt.Printf("Something bad happened: %s\n\n", err)
return err
} PaginationIf a list of items is paginated by the API, you must request pages individually. For example, to fetch all Droplets: func DropletList(ctx context.Context, client *godo.Client) ([]godo.Droplet, error) {
// create a list to hold our droplets
list := []godo.Droplet{}
// create options. initially, these will be blank
opt := &godo.ListOptions{}
for {
droplets, resp, err := client.Droplets.List(ctx, opt)
if err != nil {
return nil, err
}
// append the current page's droplets to our list
list = append(list, droplets...)
// if we are at the last page, break out the for loop
if resp.Links == nil || resp.Links.IsLastPage() {
break
}
page, err := resp.Links.CurrentPage()
if err != nil {
return nil, err
}
// set the page we want for the next request
opt.Page = page + 1
}
return list, nil
} Some endpoints offer token based pagination. For example, to fetch all Registry Repositories: func ListRepositoriesV2(ctx context.Context, client *godo.Client, registryName string) ([]*godo.RepositoryV2, error) {
// create a list to hold our registries
list := []*godo.RepositoryV2{}
// create options. initially, these will be blank
opt := &godo.TokenListOptions{}
for {
repositories, resp, err := client.Registry.ListRepositoriesV2(ctx, registryName, opt)
if err != nil {
return nil, err
}
// append the current page's registries to our list
list = append(list, repositories...)
// if we are at the last page, break out the for loop
if resp.Links == nil || resp.Links.IsLastPage() {
break
}
// grab the next page token
nextPageToken, err := resp.Links.NextPageToken()
if err != nil {
return nil, err
}
// provide the next page token for the next request
opt.Token = nextPageToken
}
return list, nil
} VersioningEach version of the client is tagged and the version is updated accordingly. To see the list of past versions, run DocumentationFor a comprehensive list of examples, check out the API documentation. For details on all the functionality in this library, see the GoDoc documentation. ContributingWe love pull requests! Please see the contribution guidelines. |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论