golang访问BreweryDB API的插件库brewerydb的使用

Golang访问BreweryDB API的插件库brewerydb的使用

简介

brewerydb是一个用于访问BreweryDB API的Go语言库。

安装

首先导入brewerydb库:

import "github.com/naegelejd/brewerydb"

使用方法

创建客户端

使用你的BreweryDB API密钥创建一个新的Client

client := brewerydb.NewClient("<your API key>")

示例代码

获取随机啤酒

// 获取任意随机啤酒(酒精度8%)
beer, _ := client.Beer.Random(&brewerydb.RandomBeerRequest{ABV: "8"})
fmt.Println(beer.Name, beer.Style.Name)

获取特定年份建立的啤酒厂

// 获取1983年建立的所有啤酒厂
bs, err := client.Brewery.List(&brewerydb.BreweryListRequest{Established: "1983"})
if err != nil {
    panic(err)
}
for _, b := range bs {
    fmt.Println(b.Name, b.Website)
}

查询啤酒成分

// "Dragon's Milk里面有什么?"
bl, _ := client.Search.Beer("Dragon's Milk", nil)

var beerID string
for _, beer := range bl.Beers {
    if beer.Name == "Dragon's Milk" {
        beerID = beer.ID
    }
}
if beerID == "" {
    panic("Dragon's Milk not found")
}

ingredients, _ := client.Beer.ListIngredients(beerID)
adjuncts, _ := client.Beer.ListAdjuncts(beerID)
fermentables, _ := client.Beer.ListFermentables(beerID)
hops, _ := client.Beer.ListHops(beerID)
yeasts, _ := client.Beer.ListYeasts(beerID)

fmt.Println("Dragon's Milk:")
fmt.Println("  Ingredients:")
for _, ingredient := range ingredients {
    fmt.Println("    " + ingredient.Name)
}
fmt.Println("\n  Adjuncts:")
for _, adjunct := range adjuncts {
    fmt.Println("    " + adjunct.Name)
}
fmt.Println("  Fermentables:")
for _, fermentable := range fermentables {
    fmt.Println("    " + fermentable.Name)
}
fmt.Println("  Hops:")
for _, hop := range hops {
    fmt.Println("    " + hop.Name)
}
fmt.Println("  Yeasts:")
for _, yeast := range yeasts {
    fmt.Println("    " + yeast.Name)
}

开发状态

该库目前正在开发中。欢迎提出设计变更建议或报告问题。

许可证

该库使用BSD风格的许可证。


更多关于golang访问BreweryDB API的插件库brewerydb的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于golang访问BreweryDB API的插件库brewerydb的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


使用Golang访问BreweryDB API的brewerydb插件库

BreweryDB是一个提供啤酒厂、啤酒和相关信息的API服务。在Golang中,我们可以使用第三方库brewerydb来方便地访问这个API。

安装brewerydb库

首先,使用go get命令安装brewerydb库:

go get github.com/brewerydb/brewerydb-go

基本使用方法

1. 初始化客户端

要使用BreweryDB API,你需要先获取API密钥,然后初始化客户端:

package main

import (
	"fmt"
	"log"

	"github.com/brewerydb/brewerydb-go"
)

func main() {
	// 替换为你的BreweryDB API密钥
	apiKey := "your-api-key-here"
	
	// 创建客户端
	client, err := brewerydb.New(apiKey)
	if err != nil {
		log.Fatal(err)
	}
	
	// 现在可以使用client调用各种API方法
}

2. 获取啤酒信息

func getBeerInfo(client *brewerydb.Client, beerID string) {
	beer, err := client.Beer.Get(beerID)
	if err != nil {
		log.Printf("获取啤酒信息失败: %v", err)
		return
	}
	
	fmt.Printf("啤酒名称: %s\n", beer.Name)
	fmt.Printf("描述: %s\n", beer.Description)
	fmt.Printf("酒精度: %.1f%%\n", beer.ABV)
	fmt.Printf("IBU: %d\n", beer.IBU)
}

3. 搜索啤酒

func searchBeers(client *brewerydb.Client, query string) {
	// 设置搜索参数
	params := &brewerydb.BeerRequest{
		Name:   query,
		WithBreweries: "Y", // 同时获取啤酒厂信息
	}
	
	// 执行搜索
	beers, err := client.Beer.List(params)
	if err != nil {
		log.Printf("搜索啤酒失败: %v", err)
		return
	}
	
	fmt.Printf("找到 %d 种啤酒:\n", len(beers))
	for _, beer := range beers {
		fmt.Printf("- %s (ID: %s)\n", beer.Name, beer.ID)
		if len(beer.Breweries) > 0 {
			fmt.Printf("  由 %s 酿造\n", beer.Breweries[0].Name)
		}
	}
}

4. 获取啤酒厂信息

func getBreweryInfo(client *brewerydb.Client, breweryID string) {
	brewery, err := client.Brewery.Get(breweryID)
	if err != nil {
		log.Printf("获取啤酒厂信息失败: %v", err)
		return
	}
	
	fmt.Printf("啤酒厂名称: %s\n", brewery.Name)
	fmt.Printf("描述: %s\n", brewery.Description)
	fmt.Printf("成立年份: %s\n", brewery.Established)
	fmt.Printf("网站: %s\n", brewery.Website)
	
	if brewery.Images != nil {
		fmt.Printf("图标: %s\n", brewery.Images.Icon)
		fmt.Printf("中等大小图片: %s\n", brewery.Images.Medium)
		fmt.Printf("大图: %s\n", brewery.Images.Large)
	}
}

5. 获取啤酒类别

func listBeerCategories(client *brewerydb.Client) {
	categories, err := client.Category.List()
	if err != nil {
		log.Printf("获取啤酒类别失败: %v", err)
		return
	}
	
	fmt.Println("啤酒类别:")
	for _, cat := range categories {
		fmt.Printf("- %s (ID: %s)\n", cat.Name, cat.ID)
	}
}

完整示例

下面是一个完整的示例程序,演示如何使用brewerydb库:

package main

import (
	"fmt"
	"log"
	"os"

	"github.com/brewerydb/brewerydb-go"
)

func main() {
	// 从环境变量获取API密钥
	apiKey := os.Getenv("BREWERYDB_API_KEY")
	if apiKey == "" {
		log.Fatal("请设置BREWERYDB_API_KEY环境变量")
	}
	
	// 创建客户端
	client, err := brewerydb.New(apiKey)
	if err != nil {
		log.Fatal(err)
	}
	
	// 1. 搜索特定啤酒
	fmt.Println("=== 搜索啤酒 ===")
	searchBeers(client, "IPA")
	
	// 2. 获取特定啤酒信息
	fmt.Println("\n=== 获取啤酒详情 ===")
	getBeerInfo(client, "c5Z8j2") // 使用实际存在的啤酒ID
	
	// 3. 获取啤酒厂信息
	fmt.Println("\n=== 获取啤酒厂信息 ===")
	getBreweryInfo(client, "Jt43j7") // 使用实际存在的啤酒厂ID
	
	// 4. 列出啤酒类别
	fmt.Println("\n=== 啤酒类别 ===")
	listBeerCategories(client)
}

// 上面定义的所有函数...

注意事项

  1. API限制:BreweryDB的免费API有调用限制(通常每天400次),注意不要超过限制。

  2. 错误处理:始终检查API调用返回的错误,因为网络问题或无效参数都可能导致失败。

  3. API密钥安全:不要将API密钥硬编码在代码中,最好使用环境变量或配置文件。

  4. 分页:对于返回大量结果的API调用,记得处理分页。

  5. 参数验证:在调用API前验证参数,避免无效请求。

通过brewerydb-go库,你可以轻松地将BreweryDB的功能集成到你的Golang应用中,获取丰富的啤酒和啤酒厂数据。

回到顶部