Skip to content

API 文档

IPAM 提供 RESTful API 接口,支持标准的 HTTP 方法和 JSON 数据格式。

API 概览

基础信息

项目内容
基础 URLhttp://localhost:8080/api
数据格式JSON
认证方式JWT Token
字符编码UTF-8

请求格式

http
GET /api/ip-addresses HTTP/1.1
Host: localhost:8080
Authorization: Bearer <token>
Content-Type: application/json

响应格式

json
{
  "success": true,
  "data": {},
  "message": "操作成功"
}

标准响应码

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

认证

登录

http
POST /api/login
Content-Type: application/json

{
  "username": "admin",
  "password": "admin123"
}

响应:

json
{
  "success": true,
  "data": {
    "token": "eyJhbGciOiJIUzI1NiIs...",
    "expire": "2024-01-16T10:30:00Z",
    "user": {
      "id": 1,
      "username": "admin",
      "role": "admin"
    }
  }
}

使用 Token

在请求头中添加 Authorization:

http
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...

分页查询

列表接口支持分页查询:

http
GET /api/ip-addresses?page=1&page_size=20

响应:

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

分页参数

参数类型默认值说明
pageint1页码
page_sizeint20每页数量

错误处理

错误响应格式

json
{
  "success": false,
  "error": {
    "code": "INVALID_PARAMETER",
    "message": "请求参数错误",
    "details": {
      "ip": "IP地址格式不正确"
    }
  }
}

错误码列表

错误码说明
INVALID_PARAMETER请求参数错误
UNAUTHORIZED未授权
FORBIDDEN禁止访问
NOT_FOUND资源不存在
ALREADY_EXISTS资源已存在
INTERNAL_ERROR内部服务器错误

资源接口

IP 地址管理

方法路径说明
GET/api/ip-addresses获取 IP 列表
GET/api/ip-addresses/:id获取 IP 详情
POST/api/ip-addresses创建 IP
PUT/api/ip-addresses/:id更新 IP
DELETE/api/ip-addresses/:id删除 IP
PUT/api/ip-addresses/:id/allocate分配 IP
PUT/api/ip-addresses/:id/release释放 IP

子网管理

方法路径说明
GET/api/subnets获取子网列表
POST/api/subnets创建子网
PUT/api/subnets/:id更新子网
DELETE/api/subnets/:id删除子网

网关管理

方法路径说明
GET/api/gateways获取网关列表
POST/api/gateways创建网关
PUT/api/gateways/:id更新网关
DELETE/api/gateways/:id删除网关

网络区域管理

方法路径说明
GET/api/network-areas获取网络区域列表
POST/api/network-areas创建网络区域
PUT/api/network-areas/:id更新网络区域
DELETE/api/network-areas/:id删除网络区域

单位管理

方法路径说明
GET/api/units获取单位列表
POST/api/units创建单位
PUT/api/units/:id更新单位
DELETE/api/units/:id删除单位

部门管理

方法路径说明
GET/api/departments获取部门列表
POST/api/departments创建部门
PUT/api/departments/:id更新部门
DELETE/api/departments/:id删除部门

项目管理

方法路径说明
GET/api/projects获取项目列表
POST/api/projects创建项目
PUT/api/projects/:id更新项目
DELETE/api/projects/:id删除项目

用户管理

方法路径说明
GET/api/users获取用户列表
POST/api/users创建用户
PUT/api/users/:id更新用户
DELETE/api/users/:id删除用户
PUT/api/users/:id/reset-password重置密码

导入导出

方法路径说明
GET/api/full-export全量导出
POST/api/full-import/preview导入预览
POST/api/full-import执行导入
GET/api/full-import/template下载模板

监控接口

方法路径说明
GET/api/monitoring/status获取监控状态
GET/api/monitoring/stats获取监控统计
POST/api/monitoring/scan手动触发扫描

探针接口

方法路径说明
POST/api/probe/report-mac-results上报扫描结果
POST/api/probe/validate-api-key验证 API 密钥

示例代码

cURL

bash
# 登录
curl -X POST http://localhost:8080/api/login \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"admin123"}'

# 获取 IP 列表
curl -X GET http://localhost:8080/api/ip-addresses \
  -H "Authorization: Bearer <token>"

# 创建子网
curl -X POST http://localhost:8080/api/subnets \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "办公网段",
    "cidr": "192.168.1.0/24",
    "gateway_id": 1,
    "network_area_id": 1
  }'

Python

python
import requests

# 登录
response = requests.post('http://localhost:8080/api/login', json={
    'username': 'admin',
    'password': 'admin123'
})
token = response.json()['data']['token']

# 获取 IP 列表
headers = {'Authorization': f'Bearer {token}'}
response = requests.get('http://localhost:8080/api/ip-addresses', headers=headers)
ip_list = response.json()['data']['list']

JavaScript

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

// 获取 IP 列表
const getIPAddresses = async (token) => {
  const response = await fetch('http://localhost:8080/api/ip-addresses', {
    headers: { 'Authorization': `Bearer ${token}` }
  });
  return await response.json();
};

Swagger 文档

系统提供 Swagger UI 接口文档:

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

Swagger 文档包含所有接口的详细说明、请求参数和响应示例。

基于 MIT 许可发布