mm.config.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. const api = require(`./api/index.js`)
  2. const { wrapApiData } = require(`./util.js`)
  3. /**
  4. * 配置说明请参考文档:
  5. * https://hongqiye.com/doc/mockm/config/option.html
  6. * @type {import('mockm/@types/config').Config}
  7. */
  8. module.exports = async (util) => {
  9. const joi = await util.tool.generate.initPackge(`joi`)
  10. return {
  11. plugin: [util.plugin.validate, util.plugin.apiDoc],
  12. guard: false,
  13. port: 8100,
  14. testPort: 8105,
  15. replayPort: 8101,
  16. watch: [`./api/`],
  17. proxy: {
  18. '/': `http://www.httpbin.org/`, // 后端接口主域
  19. '/anything/intercept': [`origin`, `127.0.0.1`], // 修改接口返回的数据
  20. },
  21. api: {
  22. // 在其他文件里的 api
  23. ...api(util).api,
  24. 'post /api/login': util.side({
  25. tags: [`admin`],
  26. summary: `根据用户名获取 token`,
  27. schema: {
  28. body: joi
  29. .object({
  30. username: joi
  31. .string()
  32. .default(`李蕾`)
  33. .required()
  34. .description(`用户名`),
  35. })
  36. .description(`用户信息`),
  37. },
  38. async action(req, res) {
  39. const { username } = req.body
  40. res.json({
  41. status: 200,
  42. message: `欢迎 ${username}, 登录成功`,
  43. token: `tokentoken`,
  44. })
  45. },
  46. }),
  47. // 当为基本数据类型时, 直接返回数据, 这个接口返回 {"msg":"ok"}
  48. '/api/1': { msg: `ok` },
  49. // 也可以像 express 一样返回数据
  50. '/api/2'(req, res) {
  51. res.send({ msg: `ok` })
  52. },
  53. // 一个只能使用 post 方法访问的接口
  54. 'post /api/3': { msg: `ok` },
  55. // // 一个 websocket 接口, 会发送收到的消息
  56. // 'ws /api/4' (ws, req) {
  57. // ws.on('message', (msg) => ws.send(msg))
  58. // },
  59. // 一个下载文件的接口
  60. '/file'(req, res) {
  61. res.download(__filename, `mm.config.js`)
  62. },
  63. // 获取动态的接口路径的参数 code
  64. '/status/:code'(req, res) {
  65. res.json({ statusCode: req.params.code })
  66. },
  67. // 使用 mockjs 生成数据
  68. '/user'(req, res) {
  69. const json = util.libObj.mockjs.mock({
  70. 'data|3-7': [
  71. {
  72. userId: `@id`,
  73. userName: `@cname`,
  74. },
  75. ],
  76. })
  77. res.json(json)
  78. },
  79. },
  80. static: [],
  81. resHandleReplay: ({ req, res }) => wrapApiData({ code: 200, data: {} }),
  82. resHandleJsonApi: ({ req, res: { statusCode: code }, data }) =>
  83. wrapApiData({ code, data }),
  84. }
  85. }