allinssl/frontend/apps/domain-management-backend/doc/api_rule.md

97 lines
4.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# API格式和规范
## 一、总体说明
### 1.1 文档目的
本文档旨在规范域名注册平台前后端接口对接标准,为前端开发人员和后端开发人员提供清晰的接口规范和调用指南,确保开发过程中的顺畅协作。
### 1.2 接口规范概述
域名注册平台统一使用POST请求方式接口返回JSON格式数据。所有接口均需遵循本文档规定的格式和规范。
| PS后端会严格验证参数的字段格式及其数据类型请严格按要求传递参数 |
| ------------------------------------------------------------------ |
#### 1.2.1 接口路径规则
接口路径设计遵循以下两种格式规则,与后端代码结构保持一致:
1. 标准模块接口:当服务文件直接位于模块目录下时
| Plain Text<br/>/api/v1/{模块}/{功能函数} |
| ---------------------------------------- |
示例:
- 后端文件service/admin/admin_service.py 中的 check 函数
- 对应接口:/api/v1/admin/check
2. 子模块接口:当服务文件位于模块的子目录下或需要进一步细分功能时
| Plain Text<br/>/api/v1/{模块}/{子模块}/{功能函数} |
| ------------------------------------------------- |
示例:
- 后端文件service/admin/config_service.py 中的 check 函数
- 对应接口:/api/v1/admin/config/check
或者
- 后端文件service/domain/registry_service.py 中的 list_registries 函数
- 对应接口:/api/v1/domain/registry/list_registries
### 1.3 通用请求/响应格式
#### 请求格式
用户密钥BT_DOMAIN_API_2024_a8f3d9e2c1b7f4a6
管理员密钥BT_ADMIN_API_2024_super_admin_key_9527
传参调整为使用 Content-Type: application/json JSON格式传参
| JSON<br/>POST /api/v1/{模块}/{功能函数} HTTP/1.1<br/>POST /api/v1/{模块}/{子文件名}/{功能函数} HTTP/1.1<br/>Host: api.domain.example.com<br/>X-API-Key: <br/>X-UID: {用户ID}<br/>Content-Type: application/json<br/><br/>{<br/> "参数1": "值1",<br/> "参数2": "值2",<br/> ...<br/>} |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
前端格式
| JavaScript<br/>Content-Type: application/json<br/>data=JSON.stringify(args)<br/><br/>示例:<br/>let args = {<br/> name:"test",<br/> sex:1<br/>}<br/><br/>let url = '/test/create_user.json'<br/>let query_data = JSON.stringify(args)<br/><br/>post(url,query_data,function(res){<br/> console.log(res)<br/>}) |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
#### 响应格式
| JSON<br/>{<br/> "status": true, // 请求是否成功<br/> "code": 0, // 状态码0表示成功其他值表示错误<br/> "message": "操作成功", // 状态描述<br/> "data": { // 返回的数据<br/> "key1": "value1",<br/> "key2": "value2"<br/> },<br/> "timestamp": 1628756942 // 服务器时间戳<br/>} |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
### 1.4 认证与授权机制
所有API请求需要包含以下认证信息
| PS如果没有特别标记一律需要添加KEY+UID方便后续溯源 |
| ------------------------------------------------------- |
1. X-API-Key: API密钥用于验证请求来源的合法性
2. X-UID: 用户ID用于识别请求用户身份
管理员接口额外需要:
- X-API-Key: 管理员登录后获取的令牌【默认写死】
### 1.5 错误码规范
| 错误码 | 描述 | 说明 |
| ------ | ------------ | ---------------------------- |
| 0 | 成功 | 请求处理成功 |
| 1001 | 参数错误 | 请求参数不符合要求 |
| 1002 | 认证失败 | API密钥无效或已过期 |
| 1003 | 权限不足 | 无权限执行请求的操作 |
| 2001 | 域名不可用 | 请求的域名已被注册或不可注册 |
| 2002 | 域名格式错误 | 域名格式不符合规范 |
| 3001 | 订单创建失败 | 订单创建过程中出现错误 |
| 3002 | 支付失败 | 支付处理过程中出现错误 |
| 4001 | 实名认证失败 | 实名认证信息验证失败 |
| 5001 | 资源不存在 | 请求的资源不存在 |