file.mock.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /*
  2. * @Author: helin3
  3. * @Date: 2024-03-25 13:52:07
  4. * @LastEditors: helin3
  5. * @LastEditTime: 2024-03-27 16:46:42
  6. * @Description: 定义模拟文件上传与下载API接口
  7. *
  8. * 模拟接口文件路径遵循规范:`/mock/[模块名]/[功能名].mock.js`
  9. * 更详细的文档请参考:https://github.com/pengzhanbo/vite-plugin-mock-dev-server
  10. */
  11. import { createReadStream } from 'node:fs';
  12. import { defineMock, backend } from '@/../mock/shared/utils.js';
  13. /**
  14. * 模拟API配置集合
  15. */
  16. export default defineMock([
  17. /**
  18. * 模拟文件下载API
  19. * @param {string} url - 下载请求地址:'/api/demo/file/download'
  20. * @param {Array<string>} method - 请求方法:'GET', 'POST'
  21. * @param {string} type - 预设的文件类型:'temp.txt'
  22. * @return {ReadableStream} 返回一个读取指定文件的流
  23. */
  24. {
  25. url: `${backend.demoService}/api/demo/file/download`,
  26. method: ['GET', 'POST'],
  27. type: 'temp.txt',
  28. headers: {
  29. 'Content-Disposition': 'attachment;filename="temp.txt"',
  30. },
  31. body: () => {
  32. // 返回一个指向根目录下mock/demo/download/temp.txt文件的可读流
  33. return createReadStream('./mock/demo/data/temp.txt');
  34. },
  35. },
  36. /**
  37. * 模拟文件上传API
  38. * @param {string} url - 上传请求地址:'/api/demo/file/upload'
  39. * @param {string} method - 请求方法:'POST'
  40. * @param {function} body - 处理上传请求体的回调函数,返回上传成功的模拟响应数据
  41. * @return {Object} 包含上传结果信息的对象,包括状态码、提示信息以及上传文件的原始名称列表
  42. */
  43. {
  44. url: `${backend.demoService}/api/demo/file/upload`,
  45. method: 'POST',
  46. body(req) {
  47. const { body } = req;
  48. // 模拟处理上传请求并返回上传成功的响应数据
  49. return {
  50. code: 0,
  51. msg: '上传成功',
  52. files: body.files.map((file) => file.originalFilename),
  53. };
  54. },
  55. },
  56. ]);