# 吃啥-接口文档 Shuaib编写---2022.7.24 1. 执行错误返回结果实例: ```javascript { "code": 500, "msg": "系统异常!", "data": null } ``` 2. 静态资源存放相对路径为: /static 3. 传递请求体参数时请以对象的形式传递 4. 本系统已设置跨域,若出现跨域问题请使用代理服务器 5. 数据库信息录入不容易请务必不要随意修改删除破坏,想要测试可以先增加一个🥶 6. 使用方式 1. 在文件夹路径内执行命令 nmp install 2. 使用node命令执行 node app.js或使用pm2挂起 7. 第一次写接口文档,因工作量大我并未测试,如果发现问题可以联系我(QQ: 2631667689) 8. 系统脆弱请手下留情,请求频率别那么那么高 ## 一. 信息管理与权限控制子系统(管理员) ### 1.1 用户管理 #### 1. 添加用户 - 接口 请求类型:post 请求地址:121.37.102.50:3017/user - 请求体参数 | 参数名 | 数据类型 | 说明 | | :------: | :------: | ------------------------------------------- | | userId | String | 用户的唯一标识(255,不可重复,必填,主键) | | userPwd | String | 用户登录时所用的密码(13,必填) | | userName | String | 用户的昵称(10) | | userNumb | String | 用户的电话号码(登录账号)(12,不可重复,必填) | | userLike | String | 用户的喜好(40) | | userAdd | String | 用户的住址(50) | | userGend | String | 用户的性别(2,男或女或未知) | - 返回值示例 ```javascript { "code": 200, "msg": "更新成功!", "data": null } ``` #### 2. 查询所有用户 - 接口 请求类型:get 请求地址:121.37.102.50:3017/user - 请求体参数 无 - 返回值示例 ```javascript { "code": 200, "msg": "查询成功!", "data": [ { userAdd: "内蒙古自治区/呼和浩特市/玉泉区" userGend: "男" userId: "15899996666" userLike: "甜食" userName: "李宝" userNumb: "15899996667" userPwd: "2631667689zyx" }, ... ] } ``` #### 3. 查询单个用户 - 接口 请求类型:get 请求地址:121.37.102.50:3017/user/{id} - 请求体参数 无 - 返回值示例 ```javascript { "code": 200, "msg": "查询成功!", "data": [ { userAdd: "内蒙古自治区/呼和浩特市/玉泉区" userGend: "男" userId: "15899996666" userLike: "甜食" userName: "李宝" userNumb: "15899996667" userPwd: "2631667689zyx" } ] } ``` #### 4. 删除单个用户 - 接口 请求类型:delete 请求地址:121.37.102.50:3017/user/{id} - 请求体参数 无 - 返回值示例 ```javascript { "code": 200, "msg": "更新成功!", "data": null } ``` #### 5. 更新单个用户 - 接口 请求类型:put 请求地址:121.37.102.50:17/user - 请求体参数 | 参数名 | 数据类型 | 说明 | | :------: | :------: | ------------------------------------------- | | userId | String | 用户的唯一标识(255,不可重复,必填,主键) | | userPwd | String | 用户登录时所用的密码(13,必填) | | userName | String | 用户的昵称(10) | | userNumb | String | 用户的电话号码(登录账号)(12,不可重复,必填) | | userLike | String | 用户的喜好(40) | | userAdd | String | 用户的住址(50) | | userGend | String | 用户的性别(2,男或女或未知) | - 返回值示例 ```javascript { "code": 200, "msg": "更新成功!", "data": null } ``` ### 1.2 菜谱管理 注意:菜谱的食材组成(menuEle)必须是以|分隔的字符串 #### 1. 上传菜谱图片 - 接口 请求类型:post 请求地址:121.37.102.50:3017/menu/upload - 请求体参数 图片文件,建议使用element-ui upload图片上传组件 - 返回值示例 ```javascript { "code": 200, "msg": "菜谱图片上传成功", "data": "http://121.37.102.50:3017/static/imgs_menu/b38850190505d2244a886bf00.png" } ``` #### 2. 添加菜谱 - 接口 请求类型:post 请求地址:121.37.102.50:3017/menu - 请求体参数 | 参数名 | 数据类型 | 说明 | | :-------: | :------: | ----------------------------- | | menuName | String | 菜谱名称(50,必填) | | menuId | String | 菜谱的唯一标识(11,必填,主键) | | menuEle | String | 菜谱组成(100,必填,使用\|分隔) | | menuTaste | String | 菜谱口味(50,必填) | | menuCuis | String | 菜谱菜系(20,必填) | | menuBrief | String | 菜谱简介(255) | | menuLevel | Int | 菜谱制作难度(11,1-5) | | menuPut | String | 菜谱静态图片地址(255) | | menuPrice | Double | 菜谱价格(7,必填) | - 返回值示例 ```javascript { "code": 200, "msg": "更新成功!", "data": null } ``` #### 3. 查询所有菜谱 - 接口 请求类型:get 请求地址:121.37.102.50:3017/menu - 请求体参数 无 - 返回值示例 ```javascript { "code": 200, "msg": "查询成功!", "data": [ { menuBrief: "步骤1:把鸭腿,猪爪焯出来,鲜鲍鱼洗净,发干海参\n步骤2:金华火腿鲍鱼蒸熟,五花 肉焯水,冬菇冬笋,鸽子蛋煮好\n步骤3:炒鸭腿猪爪\n步骤4:再放入其他肉类加高 汤,冬菇和笋最后放\n步骤5:砂锅炖5个小时\n步骤6:收汁盛出\n步骤7:周围摆上西 兰花和鸽子(鹌鹑)蛋,滋补" menuCuis: "闽菜" menuEle: "海参|鱼翅|鲍鱼|花菇|文蛤|瑶柱|草虾|冬笋|猪爪" menuId: "0292ffe-4" menuLevel: 5 menuName: "佛跳墙" menuPrice: 68 menuPut: "http://121.37.102.50:3017/static/imgs_menu/b38850190505d2244a886bf00.png" menuTaste: "鲜香" }, ... ] } ``` #### 4. 查询单个菜谱 - 接口 请求类型:get 请求地址:121.37.102.50:3017/menu/{id} - 请求体参数 无 - 返回值示例 ```javascript { "code": 200, "msg": "查询成功!", "data": [ { menuBrief: "步骤1:把鸭腿,猪爪焯出来,鲜鲍鱼洗净,发干海参\n步骤2:金华火腿鲍鱼蒸熟,五花 肉焯水,冬菇冬笋,鸽子蛋煮好\n步骤3:炒鸭腿猪爪\n步骤4:再放入其他肉类加高 汤,冬菇和笋最后放\n步骤5:砂锅炖5个小时\n步骤6:收汁盛出\n步骤7:周围摆上西 兰花和鸽子(鹌鹑)蛋,滋补" menuCuis: "闽菜" menuEle: "海参|鱼翅|鲍鱼|花菇|文蛤|瑶柱|草虾|冬笋|猪爪" menuId: "0292ffe-4" menuLevel: 5 menuName: "佛跳墙" menuPrice: 68 menuPut: "http://121.37.102.50:3017/static/imgs_menu/b38850190505d2244a886bf00.png" menuTaste: "鲜香" } ] } ``` #### 5. 删除单个菜谱 - 接口 请求类型:delete 请求地址:121.37.102.50:3017/menu/{id} - 请求体参数 无 - 返回值示例 ```javascript { "code": 200, "msg": "更新成功!", "data": null } ``` #### 6. 更新单个菜谱 - 接口 请求类型:put 请求地址:121.37.102.50:3017/menu - 请求体参数 | 参数名 | 数据类型 | 说明 | | :-------: | :------: | ----------------------------- | | menuName | String | 菜谱名称(50,必填) | | menuId | String | 菜谱的唯一标识(11,必填,主键) | | menuEle | String | 菜谱组成(100,必填,使用\|分隔) | | menuTaste | String | 菜谱口味(50,必填) | | menuCuis | String | 菜谱菜系(20,必填) | | menuBrief | String | 菜谱简介(255) | | menuLevel | Int | 菜谱制作难度(11,1-5) | | menuPut | String | 菜谱静态图片地址(255) | | menuPrice | Double | 菜谱价格(7,必填) | - 返回值示例 ```javascript { "code": 200, "msg": "更新成功!", "data": null } ``` ### 1.3 食材管理 #### 1. 上传食材图片 - 接口 请求类型:post 请求地址:121.37.102.50:3017/ingredient/upload - 请求体参数 图片文件,建议使用element-ui upload图片上传组件 - 返回值示例 ```javascript { "code": 200, "msg": "食材图片上传成功", "data": "http://121.37.102.50:3017/static/imgs_ingredient/9b40f16431477b08e9019441f.png" } ``` #### 2. 添加食材 - 接口 请求类型:post 请求地址:121.37.102.50:3017/ingredient - 请求体参数 | 参数名 | 数据类型 | 说明 | | :--------: | :------: | ---------------------------- | | ingreName | String | 食材名称(50,必填) | | ingreId | String | 食材的唯一标识(11,必填,主键) | | ingreAdd | String | 食材产地(50) | | ingreAttr | String | 食材属性(50) | | ingrePut | String | 食材静态图片地址(255) | | ingrePrice | Double | 食材价格(10) | - 返回值示例 ```javascript { "code": 200, "msg": "更新成功!", "data": null } ``` #### 3. 查询所有食材 - 接口 请求类型:get 请求地址:121.37.102.50:3017/ingredient - 请求体参数 无 - 返回值示例 ```javascript { "code": 200, "msg": "查询成功!", "data": [ { ingreAdd: "北京市/北京城区/西城区" ingreAttr: "温" ingreId: "0271ee3-2" ingreName: "鸡肉" ingrePrice: 28 ingrePut: "http://121.37.102.50:3017/static/imgs_ingredient/9b40f16431477b08e9019441f.png" }, ... ] } ``` #### 4. 查询单个食材 - 接口 请求类型:get 请求地址:121.37.102.50:3017/ingredient/{id} - 请求体参数 无 - 返回值示例 ```javascript { "code": 200, "msg": "查询成功!", "data": [ { ingreAdd: "北京市/北京城区/西城区" ingreAttr: "温" ingreId: "0271ee3-2" ingreName: "鸡肉" ingrePrice: 28 ingrePut: "http://121.37.102.50:3017/static/imgs_ingredient/9b40f16431477b08e9019441f.png" } ] } ``` #### 5. 删除单个食材 - 接口 请求类型:delete 请求地址:121.37.102.50:3017/ingredient/{id} - 请求体参数 无 - 返回值示例 ```javascript { "code": 200, "msg": "更新成功!", "data": null } ``` #### 6. 更新单个食材 - 接口 请求类型:put 请求地址:121.37.102.50:3017/ingredient - 请求体参数 | 参数名 | 数据类型 | 说明 | | :--------: | :------: | ---------------------------- | | ingreName | String | 食材名称(50,必填) | | ingreId | String | 食材的唯一标识(11,必填,主键) | | ingreAdd | String | 食材产地(50) | | ingreAttr | String | 食材属性(50) | | ingrePut | String | 食材静态图片地址(255) | | ingrePrice | Double | 食材价格(10) | - 返回值示例 ```javascript { "code": 200, "msg": "更新成功!", "data": null } ``` ### 1.4 管理员管理 #### 1. 添加管理员 - 接口 请求类型:post 请求地址:121.37.102.50:3017/admin - 请求体参数 | 参数名 | 数据类型 | 说明 | | :------------: | :------: | -------------------------------------------------------- | | adminId | String | 管理员的唯一标识(255,不可重复,必填,主键) | | adminNumb | String | 管理员联系方式(11,不可重复,必填) | | adminName | String | 管理员的昵称(10) | | power | Int | 最高管理员(管理管理员)权限(1,必填,只有一位,手动录入为1) | | adminPass | String | 管理员登陆密码(13,必填) | | adminAcco | String | 管理员账号(7,必填,不可重复) | | menuAuth | Int | 管理菜谱权限(1,1->拥有权力或0->没有权力) | | ingredientAuth | Int | 管理食材权限(1,1->拥有权力或0->没有权力) | | userAuth | Int | 管理用户权限(1,1->拥有权力或0->没有权力) | - 返回值示例 ```javascript { "code": 200, "msg": "更新成功!", "data": null } ``` #### 2. 查询所有管理员 - 接口 请求类型:get 请求地址:121.37.102.50:3017/admin - 请求体参数 无 - 返回值示例 ```javascript { "code": 200, "msg": "查询成功!", "data": [ { adminAcco: "bd9e67f" adminId: "2ed90fe4-f561-44df-b586-3337c9be3220" adminName: "俊南" adminNumb: "15024930876" ingredientAuth: 0 menuAuth: 0 power: 0 userAuth: 1 }, ... ] } ``` #### 3. 查询单个管理员 - 接口 请求类型:get 请求地址:121.37.102.50:3017/admin/{id} - 请求体参数 无 - 返回值示例 ```javascript { "code": 200, "msg": "查询成功!", "data": [ { adminAcco: "bd9e67f" adminId: "2ed90fe4-f561-44df-b586-3337c9be3220" adminName: "俊南" adminNumb: "15024930876" ingredientAuth: 0 menuAuth: 0 power: 0 userAuth: 1 } ] } ``` #### 4. 删除单个管理员 - 接口 请求类型:delete 请求地址:121.37.102.50:3017/admin/{id} - 请求体参数 无 - 返回值示例 ```javascript { "code": 200, "msg": "更新成功!", "data": null } ``` #### 5. 更新单个用户 - 接口 请求类型:put 请求地址:121.37.102.50:3017/admin - 请求体参数 | 参数名 | 数据类型 | 说明 | | :------------: | :------: | -------------------------------------------------------- | | adminId | String | 管理员的唯一标识(255,不可重复,必填,主键) | | adminNumb | String | 管理员联系方式(11,不可重复,必填) | | adminName | String | 管理员的昵称(10) | | power | Int | 最高管理员(管理管理员)权限(1,必填,只有一位,手动录入为1) | | adminPass | String | 管理员登陆密码(13,必填) | | adminAcco | String | 管理员账号(7,必填,不可重复) | | menuAuth | Int | 管理菜谱权限(1,1->拥有权力或0->没有权力) | | ingredientAuth | Int | 管理食材权限(1,1->拥有权力或0->没有权力) | | userAuth | Int | 管理用户权限(1,1->拥有权力或0->没有权力) | - 返回值示例 ```javascript { "code": 200, "msg": "更新成功!", "data": null } ``` #### 6. 重置管理员密码 - 接口 请求类型:post 请求地址:121.37.102.50:3017/admin/password/{id} - 请求体参数 | 参数名 | 数据类型 | 说明 | | -------- | -------- | ------------------------ | | password | String | 管理员登陆密码(13,必填) | - 返回值示例 ```javascript { "code": 200, "msg": "更新成功!", "data": null } ``` #### 7. 管理员登录 - 接口 请求类型:get 请求地址:121.37.102.50:3017/admin/login/{adminAcco} - 请求体参数 无 - 返回值示例 ```javascript { "code": 200, "msg": "查询成功!", "data": [ { adminAcco: "bd9e67f" adminId: "2ed90fe4-f561-44df-b586-3337c9be3220" adminName: "俊南" adminNumb: "15024930876" ingredientAuth: 0 menuAuth: 0 power: 0 userAuth: 1 } ] } ``` ## 二. 用户端子系统 ### 2.1 菜谱相关 #### 1. 模糊查询菜谱 注意:模糊查询传递的keyword参数必须为以|分隔的字符串,系统将从菜谱名称(menuName), 菜谱组成(menuEle),菜谱口味 (menuTaste), 菜谱菜系(menuCuis)四个属性中进行模糊查询。 - 接口 请求类型:get 请求地址:121.37.102.50:3017/menu/searchlike/{keyword} - 请求体参数 无 - 返回值示例 ```javascript { "code": 200, "msg": "查询成功!", "data": [ { menuBrief: "步骤1:把鸭腿,猪爪焯出来,鲜鲍鱼洗净,发干海参\n步骤2:金华火腿鲍鱼蒸熟,五花肉焯水,冬菇冬笋,鸽子蛋煮好\n步骤3:炒鸭腿猪爪\n步骤4:再放入其他肉类加高汤,冬菇和笋最后放\n步骤5:砂锅炖5个小时\n步骤6:收汁盛出\n步骤7:周围摆上西兰花和鸽子(鹌鹑)蛋,滋补" menuCuis: "闽菜" menuEle: "海参|鱼翅|鲍鱼|花菇|文蛤|瑶柱|草虾|冬笋|猪爪" menuId: "0292ffe-4" menuLevel: 5 menuName: "佛跳墙" menuPrice: 68 menuPut: "http://121.37.102.50:3017/static/imgs_menu/b38850190505d2244a886bf00.png" menuTaste: "鲜香" }, ... ] } ``` #### 2. 根据多个菜谱Id查询多个菜谱和菜谱历史记录 注意:传递的id数据每一项必须为id字符串 - 接口 请求类型:post 请求地址:121.37.102.50:3017/menu/user/menuinfo - 请求体参数 | 参数名 | 数据类型 | 说明 | | ---------- | ------------ | -------------------- | | menuIdsArr | List(数组) | 需要查询的菜谱id数组 | - 返回值示例 ```javascript { "code": 200, "msg": "查询成功!", "data": [ count: 1 createTime: "2022-07-15 14:21:47" menuBrief: "步骤1:将苦瓜洗净一剖为二,刮去内瓤,切成薄片。\n步骤2:把薄如纸片的苦瓜放进烧滚的开水里,片刻后捞起。\n步骤3:放入少许盐,然后根据口味放入准备好的甜、酸、辣等调味品,拌匀后即可食用。" menuCuis: "粤菜" menuEle: "苦瓜|豆瓣酱|酱油|蒜泥" menuId: "a109fe9-6" menuLevel: 1 menuName: "凉拌苦瓜" menuPrice: 15 menuPut: "http://121.37.102.50:3017/static/imgs_menu/b58376487eec3b86d136d560e.png" menuTaste: "苦涩" modifyTime: "2022-07-15T06:22:07.000Z" recordId: "0620585b-6ee1-4604-9884-e906d9ba779a" userId: "1d57905f-6cfc-4b49-8c04-692ee6829a3b" ] } ``` ### 2.2 用户相关 #### 1. 修改密码 - 接口 请求类型:post 请求地址:121.37.102.50:3017/user/password{id} - 请求体参数 | 参数名 | 数据类型 | 说明 | | -------- | -------- | -------------------- | | password | String | 用户所需要修改的密码 | - 返回值示例 ```javascript { "code": 200, "msg": "更新成功!", "data": null } ``` #### 2. 用户登录 - 接口 请求类型:get 请求地址:121.37.102.50:3017/user/login/{userNumb} - 请求体参数 无 - 返回值示例 ```javascript { "code": 200, "msg": "查询成功!", "data": [ { userAdd: "内蒙古自治区/呼和浩特市/玉泉区" userGend: "男" userId: "15899996666" userLike: "甜食" userName: "李宝" userNumb: "15899996667" userPwd: "2631667689zyx" } ] } ``` #### 3. 忘记密码 注意:本系统只做学习使用,密码无任何价值 - 接口 请求类型:get 请求地址:121.37.102.50:3017/user/login/forgetpass/{number} - 请求体参数 无 - 返回值示例 ```javascript { "code": 200, "msg": "查询成功!", "data": [ { userPwd: "2631667689zyx" } ] } ``` #### 4. 用户注册 - 接口 请求类型:post 请求地址:121.37.102.50:3017/user/register - 请求体参数 | 参数名 | 数据类型 | 说明 | | -------- | -------- | ------------------------------------------- | | userId | String | 用户的唯一标识(255,不可重复,必填,主键) | | userPwd | String | 用户登录时所用的密码(13,必填) | | userNumb | String | 用户的电话号码(登录账号)(12,不可重复,必填) | - 返回值示例 ```javascript { "code": 200, "msg": "更新成功!", "data": null } ``` ### 2.3 菜谱历史记录相关 #### 1. 添加菜谱历史记录 - 接口 请求类型:post 请求地址:121.37.102.50:3017/record - 请求体参数 | 参数名 | 数据类型 | 说明 | | ---------- | -------- | -------------------------------------------- | | recordId | String | 菜谱历史记录唯一标识(255,不可重复,必填,主键) | | userId | String | 用户的唯一标识(255,不可重复,必填,外键) | | menuId | String | 菜谱的唯一标识(11,必填,外键) | | createTime | String | 菜谱历史记录创建时间(255,必填) | - 返回值示例 ```javascript { "code": 200, "msg": "更新成功!", "data": null } ``` #### 2. 删除单个菜谱历史记录 - 接口 请求类型:delete 请求地址:121.37.102.50:3017/record/{recordId} - 请求体参数 无 - 返回值示例 ```javascript { "code": 200, "msg": "更新成功!", "data": null } ``` #### 3. 查询单个用户的菜谱历史记录 - 接口 请求类型:get 请求地址:121.37.102.50:3017/record/{userId} - 请求体参数 无 - 返回值示例 ```javascript { "code": 200, "msg": "查询成功!", "data": [ { count: 1 createTime: "2022-07-15 14:21:47" menuId: "a109fe9-6" modifyTime: "2022-07-15T06:22:07.000Z" recordId: "0620585b-6ee1-4604-9884-e906d9ba779a" userId: "1d57905f-6cfc-4b49-8c04-692ee6829a3b" }, ... ] } ``` #### 4. 删除单个用户的菜谱历史记录 - 接口 请求类型:delete 请求地址:121.37.102.50:3017/record/user/{userId} - 请求体参数 无 - 返回值示例 ```javascript { "code": 200, "msg": "更新成功!", "data": null } ``` #### 5. 删除单个菜谱历史记录 - 接口 请求类型:delete 请求地址:121.37.102.50:3017/record/{recordId} - 请求体参数 无 - 返回值示例 ```javascript { "code": 200, "msg": "更新成功!", "data": null } ``` #### 6. 更新单个菜谱历史记录 注意:更新菜谱历史记录只对菜谱记录次数(count)加1 - 接口 请求类型:put 请求地址:121.37.102.50:3017/record/{recordId} - 请求体参数 无 - 返回值示例 ```javascript { "code": 200, "msg": "更新成功!", "data": null } ```