# node_serverAPI **Repository Path**: ZuoWenTao/node_server-api ## Basic Information - **Project Name**: node_serverAPI - **Description**: 这是一个用于个人博客的API, NodeJS+Express,已部署到微信云托管上面, 这算是我第一个API接口项目 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2022-04-02 - **Last Updated**: 2025-10-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: Nodejs, Express, MySQL ## README # 1. 个人博客 API 接口文档 ## 1.1接口说明 - 接口基准地址:`http://http://127.0.0.1:3007` - 服务端已开启 CORS 跨域支持 - 使用 Token 认证 - 除了/api路径开头的 API ,其他API必须在请求头中使用 `Authorization` 字段提供 `token` 令牌 ### 1.1.1. 支持的请求方法 - GET(SELECT):从服务器取出资源(一项或多项)。 - POST(CREATE):在服务器新建一个资源。 - DELETE(DELETE):从服务器删除资源。 | *状态码* | *含义* | *说明* | | -------- | ------ | :------- | | 200 | OK | 请求成功 | | 400 | Error | 请求失败 | ## 1.2. 登录 ### 1.2.1. 登录验证接口 - 请求路径:api/login - 请求方法:post - 规则限制 ``` username=joi.string().alphanum().min(1).max(10).required() password=joi.string().pattern(/^[\S]{6,12}$/).required() ``` - 请求参数 | 参数名 | 参数说明 | 备注 | | -------- | -------- | ----------------------- | | username | 用户名 | 不能为空,最小1,最大10 | | password | 密码 | 不能为空,6-12位 | - 响应数据 ```json { "status": 200, "msg": "登录成功", "token": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MjgsInVzZXJuYW1lIjoid2VpbHVsdSIsInBhc3N3b3JkIjoiIiwibmlja25hbWUiOiLpkrHpkrHpkrEiLCJlbWFpbCI6IjIyMjIyMjJAcXEuY29tIiwidXNlcl9waWMiOiIiLCJpYXQiOjE2NTA0MzQ0MzcsImV4cCI6MTY1MTA4MjQzN30._KTIiTkw07GjgIn_lpT2Jwltn3a9J0aBzCBgNckbPCM" } ``` ## 1.3. 注册 ### 1.3.1. 注册接口 - 请求路径:api/reguser - 请求方法:post - 规则限制 ``` username=joi.string().alphanum().min(1).max(10).required() password=joi.string().pattern(/^[\S]{6,12}$/).required() ``` - 请求参数 | 参数名 | 参数说明 | 备注 | | -------- | -------- | -------- | | username | 用户名 | 不能为空 | | password | 密码 | 不能为空 | - 响应数据 ```json { "status": 200, "msg": "注册成功" } ``` ## 1.4. 更新个人信息 ### 1.4.1. 获取用户基本信息 - 请求路径:/my/userinfo - 请求方法:get - 响应数据 ```json { "status": 200, "msg": "获取用户信息成功", "data": { "id": 28, "username": "abc", "nickname": "jkjkjk", "email": "2222222@qq.com", "user_pic": "data:image/webp;base64,UklG......." } } ``` ### 1.4.2. 更新用户信息 - 请求路径:/my/userinfo - 请求方法:post - 规则限制 ```javascript const id=joi.number().integer().min(1).required() const nickname=joi.string().required() const email=joi.string().email().required() ``` - 请求参数 | 参数名 | 参数说明 | 备注 | | -------- | -------- | -------- | | id | 用户id | 不能为空 | | nickname | 昵称 | 不能为空 | | email | 邮箱 | 不能为空 | - - 响应数据 ```json { "status": 200, "msg": "更新用户信息成功" } ``` ### 1.4.3. 更新密码 - 请求路径:/my/updatepwd - 请求方法:post - 规则限制 ```javascript password=joi.string().pattern(/^[\S]{6,12}$/).required() ``` - 请求参数 | 参数名 | 参数说明 | 备注 | | ------ | -------- | -------- | | oldPwd | 旧密码 | 不能为空 | | newPwd | 新密码 | 不能为空 | - - 响应数据 ```json { "status": 200, "msg": "更新密码成功" } ``` ### 1.4.4. 更新头像 - 请求路径:/my/update/avatar - 请求方法:post - 规则限制 ```javascript avatar=joi.string().dataUri().required() ``` - 请求参数 | 参数名 | 参数说明 | 备注 | | ------ | -------------------- | -------- | | avatar | Base64格式的图片代码 | 不能为空 | - - 响应数据 ```json { "status": 200, "msg": "更新头像成功" } ``` ## 1.5. 文章的分类 ### 1.5.1. 获取文章分类 - 请求路径:/my/article/cates - 请求方法:get - 响应数据 ```json { "status": 200, "msg": "获取文章分类列表成功", "data": [ { "id": 1, "name": "语文", "alias": "yuwen", "is_delete": 0 }, { "id": 4, "name": "历史", "alias": "lishi", "is_delete": 0 } ] } ``` ### 1.5.2. 新增文章分类 - 请求路径:/my/article/addcates - 请求方法:post - 规则限制 ```javascript name=joi.string().required() alias=joi.string().alphanum().required() id=joi.number().integer().min(1).required() ``` - 请求参数 | 参数名 | 参数说明 | 备注 | | ------ | -------- | -------- | | alias | 别名 | 不能为空 | | name | 分类名称 | 不能为空 | - 分类名称和分类别名均不能和数据库存储的重复 - 响应数据 ```json { "status": 200, "msg": "新增成功" } ``` ### 1.5.3. 删除文章分类 - 请求路径:/my/article/deletecate/:id - 请求方法:delete - 请求参数 | 参数名 | 参数说明 | 备注 | | ------ | -------- | -------- | | id | 文章id | 不能为空 | - 分类名称和分类别名均不能和数据库存储的重复 - 响应数据 ```json { "status": 200, "msg": "删除成功" } ``` ### 1.5.4. 根据id获取文章分类 - 请求路径:/my/article/cates/:id - 请求方法:get - 请求参数 | 参数名 | 参数说明 | 备注 | | ------ | -------- | -------- | | id | 文章id | 不能为空 | - 分类名称和分类别名均不能和数据库存储的重复 - 响应数据 ```json { "status": 200, "msg": "获取成功", "data": { "id": 1, "name": "语文", "alias": "yuwen", "is_delete": 0 } } ``` ### 1.5.4. 根据id更新文章分类 - 请求路径:/my/article/updatecate - 请求方法:post - 规则限制 ```javascript name=joi.string().required() alias=joi.string().alphanum().required() id=joi.number().integer().min(1).required() ``` - 请求参数 | 参数名 | 参数说明 | 备注 | | ------ | ------------ | -------- | | id | 文章id | 不能为空 | | name | 文章分类名称 | 不能为空 | | alias | 别名 | 不能为空 | - 响应数据 ```json { "status": 200, "msg": "更新分类成功" } ``` ## 1.6. 文章的分类 ### 1.6.1. 获取文章分类 - 请求路径:/my/article/get - 请求方法:get - 响应数据 ```json { "status": 200, "msg": "查询文章成功", "data": [ { "id": 35, "title": "你好", "content": "bsp;你好

", "cover_img": "data:image/jpeg;base64,/9j/4QCORXhpZg", "pub_date": "2022-04-18 11:40:54", "state": "已发布", "is_delete": 1, "cate_id": 13, "author_id": 32 } ] } ``` ### 1.5.2. 发布文章 - 请求路径:/my/article/add - 请求方法:post - 规则限制 ```javascript title=joi.string().required() cate_id=joi.number().integer().min(1).required() content=joi.string().required().allow('') state=joi.string().valid('已发布','草稿').required() cover_img=joi.required() id=joi.number().integer().min(1).required() ``` - 请求参数 | 参数名 | 参数说明 | 备注 | | --------- | -------------------- | -------- | | title | 标题 | 不能为空 | | cate_id | 文章分类id | 不能为空 | | content | 文章内容 | 不能为空 | | state | 文章状态 | 不能为空 | | cover_img | base64格式的图片代码 | 不能为空 | - 响应数据 ```json { "status": 200, "msg": "新增文章成功" } ``` ### 1.5.3. 修改文章 - 请求路径:/my/article/update/:id - 请求方法:post - 规则限制 ```javascript title=joi.string().required() cate_id=joi.number().integer().min(1).required() content=joi.string().required().allow('') state=joi.string().valid('已发布','草稿').required() cover_img=joi.required() id=joi.number().integer().min(1).required() ``` - 请求参数 | 参数名 | 参数说明 | 备注 | | --------- | -------------------- | -------- | | title | 标题 | 不能为空 | | cate_id | 文章分类id | 不能为空 | | content | 文章内容 | 不能为空 | | state | 文章状态 | 不能为空 | | cover_img | base64格式的图片代码 | 不能为空 | - 响应数据 ```json { "status": 200, "msg": "修改文章成功" } ``` ### 1.5.4. 删除文章 - 请求路径:/my/article/delete/:id - 请求方法:delete - 响应数据 ```json { "status": 200, "msg": "删除文章成功" } ``` ###