wqyblog_api_go/README.md

177 lines
4.2 KiB
Markdown
Raw Permalink Normal View History

# 微博客 RESTful API 文档
## 简介
本 API 提供了一个用于管理博客文章的接口,支持使用 Markdown 格式存储内容,并且支持分页查询。后端基于 Go 语言开发,支持 MySQL
和 PostgreSQL 数据库。
## 基本信息
- **Base URL**: `https://wqyblog-cn-api-eqvsnqpylk.cn-shanghai.fcapp.run/api`
- **Content-Type**: `application/json`
- **Authorization**: 使用 JWT
进行身份验证。在所有需要身份验证的请求中,必须在请求头中包含 `Authorization: Bearer {token}`
## 提示
- 在使用此 API 时,请确保使用 HTTPS 来保护数据传输的安全性。
- 案例网站https://wqyblog.cn/
## 测试认证密码
- **用户名**: `admin`
- **密码**: `123456@321`
## 认证
### 1. 用户登录
**描述**: 生成一个 JWT用于后续的 API 调用。
- **URL**: `/auth/login`
- **方法**: `POST`
- **请求体**:
```json
{
"username": "admin",
"password": "your_secure_password"
}
```
- **响应**:
```json
{
"token": "jwt_token"
}
```
- **说明**: 成功登录后,返回 JWT 令牌,用于后续请求的身份认证。
## 博文管理
### 2. 获取博文列表
**描述**: 获取博客文章列表,支持分页。
- **URL**: `/posts`
- **方法**: `GET`
- **请求参数**:
- `page` (可选): 页码,默认值为 `1`
- `limit` (可选): 每页显示的记录数量,默认值为 `10`
- **响应**:
```json
{
"page": 1,
"limit": 10,
"data": [
{
"ID": 1,
"CreatedAt": "2024-08-20T12:00:00Z",
"UpdatedAt": "2024-08-20T12:00:00Z",
"DeletedAt": null,
"title": "First Post",
"content": "Markdown content here..."
}
]
}
```
- **说明**: 返回分页后的博文列表。
### 3. 获取单个博文
**描述**: 根据 `id` 获取指定的博客文章。
- **URL**: `/posts/:id`
- **方法**: `GET`
- **响应**:
```json
{
"ID": 1,
"CreatedAt": "2024-08-20T12:00:00Z",
"UpdatedAt": "2024-08-20T12:00:00Z",
"DeletedAt": null,
"Title": "First Post",
"Content": "Markdown content here..."
}
```
- **说明**: 返回指定 `id` 的博文详情。如果该 `id` 对应的博文不存在,返回 `404` 错误。
### 4. 创建博文
**描述**: 创建一篇新的博客文章。
- **URL**: `/posts`
- **方法**: `POST`
- **请求体**:
```json
{
"title": "New Post Title",
"content": "Markdown content here..."
}
```
- **响应**:
```json
{
"ID": 3,
"CreatedAt": "2024-08-22T12:00:00Z",
"UpdatedAt": "2024-08-22T12:00:00Z",
"DeletedAt": null,
"title": "New Post Title",
"content": "Markdown content here..."
}
```
- **说明**: 创建一篇新的博文,并返回创建的博文信息。
### 5. 更新博文
**描述**: 更新指定 `id` 的博客文章。
- **URL**: `/posts/:id`
- **方法**: `PUT`
- **请求体**:
```json
{
"title": "Updated Post Title",
"content": "Updated markdown content..."
}
```
- **响应**:
```json
{
"ID": 1,
"CreatedAt": "2024-08-20T12:00:00Z",
"UpdatedAt": "2024-08-22T13:00:00Z",
"DeletedAt": null,
"title": "Updated Post Title",
"content": "Updated markdown content..."
}
```
- **说明**: 更新指定 `id` 的博文。如果该 `id` 对应的博文不存在,返回 `404` 错误。
### 6. 删除博文
**描述**: 删除指定 `id` 的博客文章。
- **URL**: `/posts/:id`
- **方法**: `DELETE`
- **响应**:
```json
{
"message": "Post deleted successfully"
}
```
- **说明**: 删除指定 `id` 的博文。如果该 `id` 对应的博文不存在,返回 `404` 错误。
## 错误处理
API 在发生错误时会返回以下格式的错误响应:
```json
{
"error": "Error description"
}
```
- **401 Unauthorized**: 需要有效的 JWT 令牌,但令牌未提供或无效。
- **404 Not Found**: 请求的资源不存在(如博文不存在)。
- **400 Bad Request**: 请求参数无效或缺失。