Skip to content

API 文档

DNS-Go 提供完整的 RESTful API,支持域名管理、解析记录、上游配置等所有功能。

基础信息

  • 基础 URL: http://localhost:8085/api/v1
  • 认证方式: JWT Token
  • 请求格式: JSON
  • 响应格式: JSON

认证

所有 API 请求(除登录外)都需要在请求头中携带 JWT Token:

http
Authorization: Bearer <your-jwt-token>

获取 Token

bash
curl -X POST http://localhost:8085/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{
    "username": "admin",
    "password": "admin123",
    "captcha_id": "",
    "captcha_code": ""
  }'

响应:

json
{
  "code": 200,
  "message": "success",
  "data": {
    "token": "eyJhbGciOiJIUzI1NiIs...",
    "expires_at": "2025-01-01T12:00:00Z"
  }
}

响应格式

成功响应

json
{
  "code": 200,
  "message": "success",
  "data": { }
}

错误响应

json
{
  "code": 400,
  "message": "请求参数错误",
  "data": null
}

状态码

状态码说明
200成功
400请求参数错误
401未授权
403禁止访问
404资源不存在
500服务器内部错误

API 列表

认证相关

方法路径说明
POST/auth/login用户登录
POST/auth/logout用户登出
POST/auth/refresh刷新 Token
GET/auth/captcha获取验证码

域名管理

方法路径说明
GET/domains获取域名列表
POST/domains创建域名
GET/domains/:id获取域名详情
PUT/domains/:id更新域名
DELETE/domains/:id删除域名
POST/domains/import批量导入
GET/domains/export批量导出

解析记录

方法路径说明
GET/domains/:id/records获取记录列表
POST/domains/:id/records创建记录
GET/records/:id获取记录详情
PUT/records/:id更新记录
DELETE/records/:id删除记录

上游管理

方法路径说明
GET/upstreams获取上游列表
POST/upstreams创建上游
GET/upstreams/:id获取上游详情
PUT/upstreams/:id更新上游
DELETE/upstreams/:id删除上游

策略管理

方法路径说明
GET/strategies获取策略列表
POST/strategies创建策略
GET/strategies/:id获取策略详情
PUT/strategies/:id更新策略
DELETE/strategies/:id删除策略

查询日志

方法路径说明
GET/logs/query获取查询日志
GET/logs/stats获取统计信息
DELETE/logs/clear清理日志

系统监控

方法路径说明
GET/monitor/system系统资源
GET/monitor/dnsDNS 统计
GET/monitor/cache缓存统计

用户管理

方法路径说明
GET/users获取用户列表
POST/users创建用户
GET/users/:id获取用户详情
PUT/users/:id更新用户
DELETE/users/:id删除用户
PUT/users/:id/password修改密码

分页参数

列表接口支持分页:

参数类型说明默认值
pageint页码1
page_sizeint每页数量20
keywordstring搜索关键词-

响应包含分页信息:

json
{
  "code": 200,
  "message": "success",
  "data": {
    "list": [],
    "total": 100,
    "page": 1,
    "page_size": 20
  }
}

示例代码

Python

python
import requests

BASE_URL = "http://localhost:8085/api/v1"

# 登录
response = requests.post(f"{BASE_URL}/auth/login", json={
    "username": "admin",
    "password": "admin123"
})
token = response.json()["data"]["token"]

headers = {"Authorization": f"Bearer {token}"}

# 获取域名列表
response = requests.get(f"{BASE_URL}/domains", headers=headers)
domains = response.json()["data"]["list"]

# 创建域名
response = requests.post(f"{BASE_URL}/domains", headers=headers, json={
    "name": "example.com",
    "description": "示例域名"
})

JavaScript

javascript
const BASE_URL = 'http://localhost:8085/api/v1';

// 登录
const login = async () => {
  const response = await fetch(`${BASE_URL}/auth/login`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      username: 'admin',
      password: 'admin123'
    })
  });
  const data = await response.json();
  return data.data.token;
};

// 使用 Token 请求
const getDomains = async (token) => {
  const response = await fetch(`${BASE_URL}/domains`, {
    headers: { 'Authorization': `Bearer ${token}` }
  });
  return await response.json();
};

Swagger 文档

启动服务后,可以访问 Swagger UI 查看完整 API 文档:

http://localhost:8085/swagger/index.html

基于 MIT 许可发布