# 测试 json-server **Repository Path**: plightfield/test-json-server ## Basic Information - **Project Name**: 测试 json-server - **Description**: 用以练习项目的 json-server - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-07-10 - **Last Updated**: 2023-08-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 全功能 json-server 服务器 仓库地址: https://gitee.com/plightfield/test-json-server 注意!!: 1. 数据结构由前端任意定义,传入什么,后端就会记录什么 2. 本项目只提供任意实体的 CURD,以及登录,注册,文件上传基础功能,其他功能需要在前端 自己实现,对于 js 开发能力是个不小的挑战 3. 默认 users 集合,记录用户数据,并默认了 admin 用户,密码为 123456 4. 按照标准 RESTFUL 要求,总数等描述信息,需要在返回头中获取 ## 使用流程 1. 安装依赖 ```bash npm install ``` 2. 设计数据结构 打开 config.json 配置文件 ```json { // 默认了一个用户名为 admin 的用户,作为超级管理员 "users": [ { "name": "admin", "password": "e10adc3949ba59abbe56e057f20f883e", "role": "admin" } ], // 集合数据,比如 teachers,students,courses 等 "others":[], // 实体数据,只能进行编辑,不能进行增删 "other":{} } ``` 3. 通过 config.json 重置数据库 ```bash npm run db ``` 此命令会创建或覆盖 db.json 文件,db.json 文件就是我们的数据库文件 开发中,如果需要修改数据: - 修改 db.json 可以直接修改数据 - 修改 config.json 可以修改数据结构,运行 npm run db 重置数据库 4. 启动服务器 ```bash npm start ``` 服务器会运行在 3000 端口,本机将 http://localhost:3000 作为基地址 若其他机器需要访问,则需要查询自己机器的 ip,并将 http://ip:3000 作为基地址 查询本机 ip 的方法: ```bash # Windows ipconfig # Mac ifconfig ``` ## 默认接口 | 方法 | 路径 | 参数 | 请求体 | 响应体 | 说明 | | -------- | -------- | -------- | ------ | ------ | ------ | | POST | /login | | json: {name,password} | json: {token, user} | 登录,返回 token 和用户信息 | | POST | /register | | json: {name,password} | string: message | 注册,返回提示信息 | | POST | /file | | multipart: {file: File} | string: path | 上传文件,返回文件路径 | 除默认接口外,其他接口都需要在请求头中添加 **Authorization** 字段,值为 **bearer token** 文件路径需要拼接基地址 ## 自定义接口 db.json 中,可以配置数组或对象,数组对应的是集合数据,对象对应的是实体数据 其中,集合数据可以进行增删改查,实体数据只能进行改查 ### 集合数据 以 ```json { "students":[] } ``` 为例: |请求方法|路径|参数|解释| |--------|--------|--------|--------| |GET|/students/1|无|获取 id 为 1 的学生| |GET|/students|无|获取所有学生| |GET|/students?_page=1&_limit=10|_page: 页码,_limit: 每页数量|分页获取学生| |GET|/students?name=张三|name: 属性名|根据属性名获取学生| |GET|/students?name_like=张|name_like: 属性名_like|根据属性名模糊查询学生| |GET|/students?_sort=name&_order=asc|_sort: 排序属性,_order: 排序方式(asc 正序,desc 倒序)|根据属性名排序学生| |GET|/students?_start=0&_end=10|_start: 开始索引,_end: 结束索引|根据索引范围获取学生| |GET|/students?age_gte=18&age_lte=20|age_gte: 属性名_gte,age_lte: 属性名_lte|根据属性名范围查询学生| |POST|/students|json: {name,age}|添加学生| |PUT|/students/1|json: {name,age}|修改学生| |PATCH|/students/1|json: {name,age}|修改学生(只提供修改的字段)| |DELETE|/students/1|无|删除学生| ### 实体数据 以 ```json { "student":{} } ``` 为例 |请求方法|路径|参数|解释| |--------|--------|--------|--------| |GET|/student|无|获取学生| |PUT|/student|json: {name,age}|修改学生| |POST|/student|json: {name,age}|修改学生|