Skip to content

Repository files navigation

goapi

一个基于 Go 的轻量 API 聚合服务,当前主要提供两类能力:

  • Bilibili 相关接口:头像、公开收藏夹、IP 归属地、直播流解析、视频信息与直链
  • 通用小工具接口:随机文案、访问者信息

项目默认使用 Hertz 启动,也支持通过 gin build tag 切到 Gin。

特性

  • 纯 Go,启动简单
  • Bilibili 路由按模块挂载,便于继续扩展
  • 响应缓存已独立到仓库根目录 cache/
  • 支持文件缓存和进程内存缓存两种后端
  • 内置接口目录页和健康检查

环境要求

  • Go 1.22+

快速开始

  1. 创建配置文件 data/config.json
{
  "bili": {
    "Cookie": "SESSDATA=...; bili_jct=...; DedeUserID=..."
  }
}
  1. 启动服务
go run .

默认监听 127.0.0.1:8080

如需覆盖监听地址,可设置:

HOST=0.0.0.0 PORT=8080 go run .

如需使用 Gin:

go run -tags gin .

缓存

/bili/ 路由组默认启用缓存,缓存 key 基于请求 URI 生成。

  • 默认后端:文件缓存,目录为 data/cache/
  • 可选后端:内存缓存,设置 CACHE_DRIVER=memory

示例:

CACHE_DRIVER=memory go run .

当前各模块 TTL:

  • face:1 天
  • ip:1 天
  • fav:10 分钟
  • live:20 秒
  • video:5 分钟

只缓存成功 JSON 响应和 302 重定向响应。

主要接口

系统

  • GET /:接口目录页
  • GET /healthz:健康检查

Other

  • GET /other/comment
  • GET /other/visinfo

别名:

  • /o/cmt
  • /o/vi

Bilibili

  • GET /bili/face/:uid
  • GET /bili/face/:uid.:ext
  • GET /bili/fav/:media_id
  • GET /bili/ip/:addr
  • GET /bili/live/:cid
  • GET /bili/video/info?aid=...|bvid=...
  • GET /bili/video/url?aid=...|bvid=...&cid=auto&otype=json

短别名:

  • /b/fc/:uid
  • /b/fc/:uid/:ext
  • /b/fv/:media_id
  • /b/ip/:addr
  • /b/lv/:cid
  • /b/v/i
  • /b/v/u

更详细的接口说明见 API.md

项目结构

.
├── bili/          # Bilibili 模块
├── cache/         # 缓存中间件与存储实现
├── common/        # 公共类型
├── other/         # 通用工具接口
├── web/           # Web 抽象层
├── main.go        # 程序入口
└── all.go         # 路由装配

开发说明

  • 默认 Web 引擎为 Hertz,web_engine_hertz.go 生效
  • 使用 -tags gin 时切到 web_engine_gin.go
  • 前端静态资源和接口详情页模板已内嵌到二进制

测试

可用下面的命令跑当前有效测试:

env GOCACHE=$(pwd)/.cache/go-build GOMODCACHE=$(pwd)/.cache/gomod go test ./cache ./web/... ./bili/... ./other/...

About

使用Go+Hertz编写的高性能API服务

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages