golang与Coinpaprika API交互的加密货币数据插件库coinpaprika-go的使用

Golang与Coinpaprika API交互的加密货币数据插件库coinpaprika-go的使用

概述

coinpaprika-go是一个用于与Coinpaprika API交互的Golang客户端库。Coinpaprika提供全面的加密货币市场数据,包括币种价格、交易量、市值、历史最高价等信息。

快速开始

基本使用示例

package main

import (
	"fmt"

	"github.com/coinpaprika/coinpaprika-api-go-client/coinpaprika"
)

func main() {
	// 创建客户端实例
	paprikaClient := coinpaprika.NewClient(nil)

	// 获取所有币种的行情数据
	tickers, err := paprikaClient.Tickers.List(nil)
	if err != nil {
		panic(err)
	}

	// 遍历并打印币种信息
	for _, t := range tickers {
		if t.Name == nil || t.Symbol == nil || t.Rank == nil {
			continue
		}

		fmt.Println("Name:", *t.Name)
		fmt.Println("Symbol:", *t.Symbol)
		fmt.Println("Rank:", *t.Rank)
		fmt.Println("----")
	}
}

设置自定义HTTP客户端

// 创建自定义HTTP客户端,设置10秒超时
customClient := &http.Client{Timeout: 10 * time.Second}
// 使用自定义客户端创建Coinpaprika客户端
paprikaClient := coinpaprika.NewClient(customClient)

设置API密钥访问Pro API

// 使用API密钥创建客户端
paprikaClient := coinpaprika.NewClient(nil, coinpaprika.WithAPIKey("your_api_key_goes_here"))

功能实现状态

全局功能

  • [x] 获取市场概览数据

币种功能

  • [x] 列出所有币种
  • [x] 根据ID获取币种信息
  • [x] 获取币种的Twitter时间线
  • [x] 获取币种事件
  • [x] 获取币种相关的交易所
  • [x] 获取币种的市场数据
  • [x] 获取最新OHLCV数据
  • [x] 获取历史OHLCV数据

人物功能

  • [x] 根据ID获取人物信息

标签功能

  • [x] 列出所有标签
  • [x] 根据ID获取标签信息

行情功能

  • [x] 获取所有币种的行情数据
  • [x] 获取特定币种的行情信息
  • [x] 获取特定币种的历史行情数据

交易所功能

  • [x] 列出所有交易所
  • [x] 根据ID获取交易所信息
  • [x] 列出交易所的市场数据

搜索功能

  • [x] 搜索工具

价格转换功能

  • [x] 价格转换器

许可证

coinpaprika-go采用MIT许可证发布。


更多关于golang与Coinpaprika API交互的加密货币数据插件库coinpaprika-go的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于golang与Coinpaprika API交互的加密货币数据插件库coinpaprika-go的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


使用coinpaprika-go与Coinpaprika API交互

coinpaprika-go是一个用于与Coinpaprika加密货币数据API交互的Golang库。下面我将介绍如何使用这个库来获取加密货币数据。

安装

首先安装coinpaprika-go库:

go get github.com/coinpaprika/coinpaprika-api-go-client/v2/coinpaprika

基本使用

初始化客户端

package main

import (
	"context"
	"fmt"
	"log"

	"github.com/coinpaprika/coinpaprika-api-go-client/v2/coinpaprika"
)

func main() {
	// 创建客户端实例
	client := coinpaprika.NewClient(nil)
	
	// 如果需要设置API密钥(某些端点需要)
	// client.SetAPIKey("your-api-key")
	
	// 上下文用于请求超时控制
	ctx := context.Background()
}

获取全球市场数据

func getGlobalMarketData(client *coinpaprika.Client, ctx context.Context) {
	global, err := client.Global.Get(ctx)
	if err != nil {
		log.Fatalf("Error getting global data: %v", err)
	}

	fmt.Printf("Market Cap USD: %.2f\n", *global.MarketCapUSD)
	fmt.Printf("24h Volume USD: %.2f\n", *global.Volume24HUSD)
	fmt.Printf("BTC Dominance: %.2f%%\n", *global.BitcoinDominancePercentage)
	fmt.Printf("Active Cryptocurrencies: %d\n", *global.CryptocurrenciesNumber)
}

获取加密货币列表

func listCoins(client *coinpaprika.Client, ctx context.Context) {
	coins, err := client.Coins.List(ctx)
	if err != nil {
		log.Fatalf("Error listing coins: %v", err)
	}

	fmt.Println("Top 10 Cryptocurrencies:")
	for i, coin := range coins[:10] {
		fmt.Printf("%d. %s (%s) - Rank: %d\n", 
			i+1, *coin.Name, *coin.Symbol, *coin.Rank)
	}
}

获取特定加密货币详情

func getCoinDetails(client *coinpaprika.Client, ctx context.Context, coinID string) {
	coin, err := client.Coins.GetByID(ctx, coinID)
	if err != nil {
		log.Fatalf("Error getting coin details: %v", err)
	}

	fmt.Printf("Details for %s (%s):\n", *coin.Name, *coin.Symbol)
	fmt.Printf("Rank: %d\n", *coin.Rank)
	fmt.Printf("Price: $%.2f\n", *coin.PriceUSD)
	fmt.Printf("Market Cap: $%.2f\n", *coin.MarketCapUSD)
	fmt.Printf("24h Volume: $%.2f\n", *coin.Volume24HUSD)
}

获取历史价格数据

func getHistoricalData(client *coinpaprika.Client, ctx context.Context, coinID string) {
	// 获取过去7天的OHLC数据
	ohlc, err := client.Coins.GetOHLCByID(ctx, coinID, &coinpaprika.OHLCParams{
		Quote:    "usd",
		Interval: "1d",
		Limit:    7,
	})
	if err != nil {
		log.Fatalf("Error getting OHLC data: %v", err)
	}

	fmt.Println("Historical OHLC Data (USD):")
	for _, data := range ohlc {
		fmt.Printf("Date: %s - Open: %.2f, High: %.2f, Low: %.2f, Close: %.2f\n",
			data.TimeOpen.Format("2006-01-02"),
			*data.Open,
			*data.High,
			*data.Low,
			*data.Close)
	}
}

搜索加密货币

func searchCoins(client *coinpaprika.Client, ctx context.Context, query string) {
	results, err := client.Search.Query(ctx, query, nil)
	if err != nil {
		log.Fatalf("Error searching coins: %v", err)
	}

	fmt.Printf("Search results for '%s':\n", query)
	for _, coin := range results.Coins {
		fmt.Printf("- %s (%s) - Rank: %d\n", *coin.Name, *coin.Symbol, *coin.Rank)
	}
}

完整示例

package main

import (
	"context"
	"fmt"
	"log"

	"github.com/coinpaprika/coinpaprika-api-go-client/v2/coinpaprika"
)

func main() {
	client := coinpaprika.NewClient(nil)
	ctx := context.Background()

	// 获取全球市场数据
	getGlobalMarketData(client, ctx)

	// 获取加密货币列表
	listCoins(client, ctx)

	// 获取比特币详情 (比特币的ID通常是"btc-bitcoin")
	getCoinDetails(client, ctx, "btc-bitcoin")

	// 获取比特币历史数据
	getHistoricalData(client, ctx, "btc-bitcoin")

	// 搜索加密货币
	searchCoins(client, ctx, "ethereum")
}

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

高级用法

自定义HTTP客户端

import (
	"net/http"
	"time"
)

func customHTTPClient() {
	httpClient := &http.Client{
		Timeout: 10 * time.Second,
	}
	client := coinpaprika.NewClient(httpClient)
}

处理分页

func listCoinsWithPagination(client *coinpaprika.Client, ctx context.Context) {
	params := &coinpaprika.CoinsListParams{
		Limit:  100,
		Offset: 0,
	}

	for {
		coins, err := client.Coins.List(ctx, params)
		if err != nil {
			log.Fatalf("Error listing coins: %v", err)
		}

		if len(coins) == 0 {
			break
		}

		for _, coin := range coins {
			fmt.Printf("%s (%s)\n", *coin.Name, *coin.Symbol)
		}

		params.Offset += params.Limit
	}
}

注意事项

  1. Coinpaprika API有速率限制,免费版为每分钟10次请求
  2. 某些端点需要API密钥
  3. 所有返回的指针字段在使用前应该检查是否为nil
  4. 建议使用context来控制请求超时

通过coinpaprika-go库,你可以轻松地将Coinpaprika的丰富加密货币数据集成到你的Golang应用中,包括实时价格、历史数据、市场统计等信息。

回到顶部