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
更多关于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)
}
// 上面定义的所有函数...
注意事项
-
API限制:BreweryDB的免费API有调用限制(通常每天400次),注意不要超过限制。
-
错误处理:始终检查API调用返回的错误,因为网络问题或无效参数都可能导致失败。
-
API密钥安全:不要将API密钥硬编码在代码中,最好使用环境变量或配置文件。
-
分页:对于返回大量结果的API调用,记得处理分页。
-
参数验证:在调用API前验证参数,避免无效请求。
通过brewerydb-go库,你可以轻松地将BreweryDB的功能集成到你的Golang应用中,获取丰富的啤酒和啤酒厂数据。