api-reference-guide
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseAPI Reference Guide Creator
API参考指南创建者
Эксперт в создании комплексной документации по API, которую разработчики обожают использовать.
一位擅长撰写开发人员喜爱的全面API文档的专家。
Основные принципы
核心原则
- Подход "разработчик прежде всего": Пишите с точки зрения того, кто внедряет API
- Ясность важнее краткости: Предоставляйте достаточно деталей
- Последовательность: Используйте единообразные паттерны
- Полнота: Покрывайте все endpoint'ы, параметры, ответы и крайние случаи
- Тестируемость: Включайте рабочие примеры
- “开发者优先”理念: 从API实现者的角度进行撰写
- 清晰重于简洁: 提供足够的细节信息
- 一致性: 使用统一的格式规范
- 完整性: 覆盖所有Endpoint、参数、响应及边缘情况
- 可测试性: 包含可运行的示例代码
Структура справочника
参考手册结构
- Обзор — Назначение API, базовый URL, стратегия версионирования
- Аутентификация — Методы, токены, заголовки, примеры
- Endpoint'ы — Сгруппированные по ресурсам
- Обработка ошибок — Стандартные коды ошибок и ответы
- Ограничения частоты запросов — Лимиты, заголовки
- SDK и библиотеки — Доступные клиентские библиотеки
- Журнал изменений — История версий
- 概述 — API用途、基础URL、版本控制策略
- 认证 — 认证方法、令牌、请求头、示例
- Endpoints — 按资源进行分组
- 错误处理 — 标准错误码及响应示例
- 请求频率限制 — 限制规则、请求头说明
- SDK与库 — 可用的客户端库介绍
- 变更日志 — 版本更新历史
Документация аутентификации
认证文档
bash
undefinedbash
undefinedAPI Key Authentication
API Key Authentication
curl -X GET "https://api.example.com/v1/users"
-H "Authorization: Bearer YOUR_API_KEY"
-H "Content-Type: application/json"
-H "Authorization: Bearer YOUR_API_KEY"
-H "Content-Type: application/json"
```javascript
// JavaScript SDK Example
const client = new APIClient({
apiKey: 'your-api-key',
baseURL: 'https://api.example.com/v1'
});curl -X GET "https://api.example.com/v1/users"
-H "Authorization: Bearer YOUR_API_KEY"
-H "Content-Type: application/json"
-H "Authorization: Bearer YOUR_API_KEY"
-H "Content-Type: application/json"
```javascript
// JavaScript SDK Example
const client = new APIClient({
apiKey: 'your-api-key',
baseURL: 'https://api.example.com/v1'
});Формат документации endpoint'ов
Endpoint文档格式
GET /users/{id}
GET /users/{id}
Получить конкретного пользователя по ID.
Параметры:
| Параметр | Тип | Место | Обязательный | Описание |
|---|---|---|---|---|
| id | string | path | да | Уникальный ID пользователя |
| include | string | query | нет | Связанные ресурсы через запятую |
Пример запроса:
bash
curl -X GET "https://api.example.com/v1/users/12345?include=profile,settings" \
-H "Authorization: Bearer YOUR_API_KEY"Ответ (200 OK):
json
{
"id": "12345",
"email": "user@example.com",
"created_at": "2023-01-15T10:30:00Z",
"profile": {
"first_name": "John",
"last_name": "Doe"
}
}获取指定ID的用户信息。
参数:
| 参数 | 类型 | 位置 | 是否必填 | 描述 |
|---|---|---|---|---|
| id | string | path | 是 | 用户唯一ID |
| include | string | query | 否 | 以逗号分隔的关联资源 |
请求示例:
bash
curl -X GET "https://api.example.com/v1/users/12345?include=profile,settings" \
-H "Authorization: Bearer YOUR_API_KEY"响应(200 OK):
json
{
"id": "12345",
"email": "user@example.com",
"created_at": "2023-01-15T10:30:00Z",
"profile": {
"first_name": "John",
"last_name": "Doe"
}
}POST /users
POST /users
Создать новый аккаунт пользователя.
Тело запроса:
json
{
"email": "string (обязательный)",
"password": "string (обязательный, минимум 8 символов)",
"profile": {
"first_name": "string (опциональный)",
"last_name": "string (опциональный)"
}
}Ответ (201 Created):
json
{
"id": "12346",
"email": "newuser@example.com",
"created_at": "2024-01-15T14:30:00Z"
}创建新用户账户。
请求体:
json
{
"email": "string (必填)",
"password": "string (必填,最少8个字符)",
"profile": {
"first_name": "string (可选)",
"last_name": "string (可选)"
}
}响应(201 Created):
json
{
"id": "12346",
"email": "newuser@example.com",
"created_at": "2024-01-15T14:30:00Z"
}Документация ошибок
错误文档
json
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid request parameters",
"details": [
{
"field": "email",
"message": "Email address is required"
}
],
"request_id": "req_1234567890"
}
}HTTP коды состояния:
| Код | Статус | Описание |
|---|---|---|
| 200 | OK | Успешный запрос |
| 201 | Created | Ресурс создан |
| 400 | Bad Request | Ошибки валидации |
| 401 | Unauthorized | Неверный/отсутствующий токен |
| 403 | Forbidden | Недостаточно прав |
| 404 | Not Found | Ресурс не найден |
| 429 | Too Many Requests | Превышен лимит запросов |
| 500 | Internal Server Error | Ошибка сервера |
json
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid request parameters",
"details": [
{
"field": "email",
"message": "Email address is required"
}
],
"request_id": "req_1234567890"
}
}HTTP状态码:
| 代码 | 状态 | 描述 |
|---|---|---|
| 200 | OK | 请求成功 |
| 201 | Created | 资源已创建 |
| 400 | Bad Request | 验证错误 |
| 401 | Unauthorized | 令牌无效/缺失 |
| 403 | Forbidden | 权限不足 |
| 404 | Not Found | 资源不存在 |
| 429 | Too Many Requests | 请求次数超限 |
| 500 | Internal Server Error | 服务器内部错误 |
Примеры на разных языках
多语言示例
Python
Python
python
import requests
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
response = requests.get(
'https://api.example.com/v1/users/12345',
headers=headers
)
print(response.json())python
import requests
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
response = requests.get(
'https://api.example.com/v1/users/12345',
headers=headers
)
print(response.json())Node.js
Node.js
javascript
const fetch = require('node-fetch');
const response = await fetch('https://api.example.com/v1/users/12345', {
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);javascript
const fetch = require('node-fetch');
const response = await fetch('https://api.example.com/v1/users/12345', {
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);Go
Go
go
req, _ := http.NewRequest("GET", "https://api.example.com/v1/users/12345", nil)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()go
req, _ := http.NewRequest("GET", "https://api.example.com/v1/users/12345", nil)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()Типы данных и схемы
数据类型与Schema
yaml
User:
type: object
properties:
id:
type: string
description: Unique user identifier
example: "usr_1234567890"
email:
type: string
format: email
description: User's email address
created_at:
type: string
format: date-time
description: ISO 8601 timestamp
status:
type: string
enum: [active, inactive, suspended]
description: Current account statusyaml
User:
type: object
properties:
id:
type: string
description: Unique user identifier
example: "usr_1234567890"
email:
type: string
format: email
description: User's email address
created_at:
type: string
format: date-time
description: ISO 8601 timestamp
status:
type: string
enum: [active, inactive, suspended]
description: Current account statusПродвинутые возможности
高级功能
Фильтрация
过滤
GET /users?filter[status]=active&filter[role]=adminGET /users?filter[status]=active&filter[role]=adminПагинация
分页
GET /users?page=2&limit=20
Response headers:
X-Total-Count: 150
X-Page: 2
X-Per-Page: 20
Link: <https://api.example.com/v1/users?page=3>; rel="next"GET /users?page=2&limit=20
Response headers:
X-Total-Count: 150
X-Page: 2
X-Per-Page: 20
Link: <https://api.example.com/v1/users?page=3>; rel="next"Сортировка
排序
GET /users?sort=-created_at,emailМинус означает сортировку по убыванию.
GET /users?sort=-created_at,email减号表示降序排序。
Выбор полей
字段选择
GET /users?fields=id,email,created_atGET /users?fields=id,email,created_atИдемпотентность
幂等性
bash
curl -X POST "https://api.example.com/v1/payments" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Idempotency-Key: unique-request-id-123" \
-d '{"amount": 1000}'bash
curl -X POST "https://api.example.com/v1/payments" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Idempotency-Key: unique-request-id-123" \
-d '{"amount": 1000}'Rate Limiting Headers
请求频率限制头
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1640995200X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1640995200Лучшие практики
最佳实践
- Используйте последовательное именование (snake_case или camelCase)
- Включайте реалистичные примеры данных
- Показывайте примеры как успешных, так и ошибочных ответов
- Документируйте опциональные и обязательные параметры
- Включайте информацию об ограничениях частоты
- Используйте OpenAPI/Swagger спецификации
- Добавляйте уведомления о deprecation
- Тестируйте все примеры кода перед публикацией
- 使用统一的命名规范(snake_case或camelCase)
- 包含真实的示例数据
- 同时展示成功与错误响应示例
- 记录可选及必填参数
- 包含请求频率限制相关信息
- 使用OpenAPI/Swagger规范
- 添加弃用通知
- 发布前测试所有代码示例