V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
qq309187341
V2EX  ›  Vite

请教一个 vite 代理的问题

  •  
  •   qq309187341 · 352 天前 · 1445 次点击
    这是一个创建于 352 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我想通过 vite 代理的能力拦截某些接口请求,然后做一些其他的操作,比如本地文件写入等等。
    我通过 configure 方法拦截了对应的接口,但是因为这个接口是 post 请求,我要如何才能拿到其中的 body 内容,req.body 返回的是 undefined 。是不是需要使用 body-parser 插件解析一下?能不能写下如何操作?

    server: {
    port: 9900,
    proxy: {
    '/root': {
    target: 'http://192.168.3.216',
    changeOrigin: true,
    configure: (proxy, options) => {
    proxy.on('proxyReq', (proxyReq, req, res) => {
    console.log(req.body)
    })
    }
    },
    },
    },
    10 条回复    2023-04-12 14:53:33 +08:00
    zack5337
        1
    zack5337  
       352 天前 via iPhone
    post 请求 content-type 配置了吗
    xujianxing
        2
    xujianxing  
       352 天前
    可以自定义服务器,使用中间件
    qq309187341
        3
    qq309187341  
    OP
       352 天前
    @zack5337 配置了的。。。迷茫了,不知道怎么获取了
    qq309187341
        4
    qq309187341  
    OP
       352 天前
    @xujianxing 原来是使用 vite 的插件能力。
    server.middlewares.use(bodyParser.urlencoded({ extended: true }))
    server.middlewares.use(bodyParser.json())
    就能转化出来。但是发现因为插件功能会监听会与 vite 自身的反向代理有冲突,导致数据被转化后传递到后台他们无法解析了。
    zack5337
        5
    zack5337  
       352 天前 via iPhone
    @qq309187341 导入 body-parser ,直接使用解析 json()不行吗
    qq309187341
        6
    qq309187341  
    OP
       352 天前
    @zack5337 不知道怎么用 node 环境下使用 app.use(bodyParser.json())
    但是这个返回的 proxy 是个啥玩样,好像 proxy.use 也没有呀!!!
    zack5337
        7
    zack5337  
       352 天前
    @qq309187341 import bodyParser from 'body-parser';
    configure: (proxy) => {
    proxy.on('proxyReq', function (proxyReq, req, res, options) {
    bodyParser.json()(req, res, function () {
    if (req.body) {
    console.log(req.body);
    }
    });
    });
    },
    qq309187341
        8
    qq309187341  
    OP
       352 天前
    @zack5337 受教受教,还能这样写。可以解析出来了。但是再问一下大佬,我的 body 数据是多层对象嵌套,看了返回值,深层的对象变成 [object] 了。。。怎么解!!!
    qq309187341
        9
    qq309187341  
    OP
       352 天前
    @zack5337 [
    {
    parentKey: null,
    path: '/admin',
    key: 'mnojtb5cwxn',
    component: 'BasicLayout',
    type: 1,
    title: '控制台 2',
    meta: {
    icon: 'i-ep-add-location',
    keepAlive: false,
    hidden: false,
    title: '控制台 2',
    key: 'mnojtb5cwxn'
    },
    authBtns: [],
    children: [ [Object] ]
    },
    {
    parentKey: null,
    path: '/user',
    key: '24yh3krjj5d',
    component: 'BasicLayout',
    type: 1,
    title: '会员管理',
    meta: {
    icon: 'i-ep-aim',
    keepAlive: false,
    hidden: false,
    title: '会员管理',
    key: '24yh3krjj5d'
    },
    children: [ [Object], [Object] ]
    },

    里面的 children 变成[ [Object], [Object] ]了
    qq309187341
        10
    qq309187341  
    OP
       352 天前
    @zack5337 没事了,只是展示的问题,看了一下没有问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2939 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 14:03 · PVG 22:03 · LAX 07:03 · JFK 10:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.