You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为同一API路由的不同方法分别启用或禁用bodyparser

同一API路由中针对不同方法配置bodyParser的方案

因为全局已经把bodyParser设为false满足POST的文件上传需求,要给DELETE方法启用请求体解析,不用额外中间件的话,直接用Node.js原生的流处理手动读取并解析请求体就行,不用拆分路由。

修改后的代码如下:

const handler = async (req, res) => {
    if (req.method === "POST") {
        // 原有的multipart form图片上传逻辑,保持不变
        ...
    } else if (req.method === "DELETE") {
        // 手动读取请求体
        let rawBody = '';
        await new Promise((resolve, reject) => {
            req.on('data', chunk => rawBody += chunk.toString());
            req.on('end', resolve);
            req.on('error', reject);
        });

        // 根据请求的Content-Type解析body
        let parsedBody;
        try {
            // 如果是JSON格式请求
            parsedBody = JSON.parse(rawBody);
            // 如果是表单编码格式,替换成下面这行:
            // parsedBody = require('querystring').parse(rawBody);
        } catch (err) {
            return res.status(400).json({ error: '请求体格式无效' });
        }

        // 现在可以直接使用parsedBody里的变量了
        console.log(parsedBody);
        ...
    } else {
        res.status(405).json({
            data: null,
            error: "Method not allowed."
        });
        return;
    };
};

export const config = {
    api: {
        bodyParser: false,
    },
};

export default handler;

关键说明

  • 全局bodyParser: false保留,确保POST方法能处理multipart表单上传
  • DELETE方法通过原生的req数据流事件读取请求体,再根据实际的Content-Type选择解析方式(JSON或表单编码)
  • 全程不需要额外安装中间件,也不用拆分路由文件,完全贴合现有代码结构

内容的提问来源于stack exchange,提问作者Tjm92

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 04:16:06