Initial commit: React + Django full-stack project setup
- Backend: Django 4.2 + DRF + JWT + GraphQL - Frontend: React 18 + MobX + styled-components - Deployment: Docker + Docker Compose + Nginx - Database: PostgreSQL support - Documentation: README, INIT, PROJECT_DOCS, TESTING
This commit is contained in:
163
TESTING.md
Normal file
163
TESTING.md
Normal file
@@ -0,0 +1,163 @@
|
||||
# API 测试指南
|
||||
|
||||
## 测试后端 API
|
||||
|
||||
### 1. 获取 Token (登录)
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:8000/api/auth/login/ \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"email": "your@email.com",
|
||||
"password": "your_password"
|
||||
}'
|
||||
```
|
||||
|
||||
响应示例:
|
||||
```json
|
||||
{
|
||||
"access": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
|
||||
"refresh": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
|
||||
"user": {
|
||||
"id": 1,
|
||||
"email": "your@email.com",
|
||||
"username": "your_username",
|
||||
"first_name": "First",
|
||||
"last_name": "Last"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 2. 刷新 Token
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:8000/api/auth/token/refresh/ \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"refresh": "your_refresh_token"
|
||||
}'
|
||||
```
|
||||
|
||||
### 3. 获取用户列表 (需要认证)
|
||||
|
||||
```bash
|
||||
curl -X GET http://localhost:8000/api/users/ \
|
||||
-H "Authorization: Bearer your_access_token"
|
||||
```
|
||||
|
||||
### 4. 获取当前用户
|
||||
|
||||
```bash
|
||||
curl -X GET http://localhost:8000/api/users/me/ \
|
||||
-H "Authorization: Bearer your_access_token"
|
||||
```
|
||||
|
||||
## GraphQL 测试
|
||||
|
||||
访问 http://localhost:8000/graphql/?graphiql
|
||||
|
||||
### 查询所有用户
|
||||
|
||||
```graphql
|
||||
query {
|
||||
allUsers {
|
||||
id
|
||||
email
|
||||
username
|
||||
firstName
|
||||
lastName
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 查询当前用户
|
||||
|
||||
```graphql
|
||||
query {
|
||||
me {
|
||||
id
|
||||
email
|
||||
username
|
||||
firstName
|
||||
lastName
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Postman 集合
|
||||
|
||||
你可以导入以下 Postman 集合来测试 API:
|
||||
|
||||
### 环境变量
|
||||
- `base_url`: http://localhost:8000
|
||||
- `access_token`: (登录后自动填充)
|
||||
|
||||
### 请求示例
|
||||
|
||||
**1. 登录**
|
||||
- Method: POST
|
||||
- URL: `{{base_url}}/api/auth/login/`
|
||||
- Body:
|
||||
```json
|
||||
{
|
||||
"email": "test@example.com",
|
||||
"password": "testpass123"
|
||||
}
|
||||
```
|
||||
- Tests (自动提取 token):
|
||||
```javascript
|
||||
var jsonData = pm.response.json();
|
||||
pm.environment.set("access_token", jsonData.access);
|
||||
```
|
||||
|
||||
**2. 获取用户**
|
||||
- Method: GET
|
||||
- URL: `{{base_url}}/api/users/`
|
||||
- Headers:
|
||||
```
|
||||
Authorization: Bearer {{access_token}}
|
||||
```
|
||||
|
||||
**3. 获取当前用户**
|
||||
- Method: GET
|
||||
- URL: `{{base_url}}/api/users/me/`
|
||||
- Headers:
|
||||
```
|
||||
Authorization: Bearer {{access_token}}
|
||||
```
|
||||
|
||||
## 自动化测试
|
||||
|
||||
### 后端测试
|
||||
|
||||
```bash
|
||||
cd backend
|
||||
python manage.py test
|
||||
```
|
||||
|
||||
### 前端测试
|
||||
|
||||
```bash
|
||||
cd frontend
|
||||
npm test
|
||||
```
|
||||
|
||||
## 常见错误
|
||||
|
||||
### 401 Unauthorized
|
||||
- Token 过期,使用 refresh_token 刷新
|
||||
- Token 格式错误,确保 `Bearer` 前缀存在
|
||||
- Token 被吊销
|
||||
|
||||
### 403 Forbidden
|
||||
- 权限不足,检查用户是否有相应权限
|
||||
- CSRF token 问题(开发环境可能遇到)
|
||||
|
||||
### 404 Not Found
|
||||
- 端点不存在,检查 URL 路径
|
||||
- 检查 Django 是否正确启动
|
||||
|
||||
### 500 Server Error
|
||||
- 检查 Django 日志
|
||||
- 检查数据库连接
|
||||
- 检查代码语法错误
|
||||
Reference in New Issue
Block a user