如何通过postman在表单数据中访问expressjs控制器中的请求体?

xwbd5t1u  于 2023-08-05  发布在  Postman
关注(0)|答案(1)|浏览(121)

我有一个控制器,它是为了创建一个产品。请求还必须包含图像。因此,我使用Postman表单数据来传递值。但我根本无法得到这些值。请求正文始终未定义。如何克服这一点呢?


的数据
第一个月

import express from "express";

const app = express();
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use("/products", router);

字符串
router.js

import { Router } from "express";
const router = Router()
productRouter.post("/add", newproduct)
export default router;


product.controller.js

const newproduct = (req, res) => {
    try {
        console.log('body', req.body)
        // just for the sake i am explicitly returning some response
        res.status(201).json({ message: "Product created successfully" });
    } catch (error) {
         res.status(500).json(error)
    }
};


获取一个空对象,如



我使用表单数据选项卡只是因为文件上载。它不包括在 Postman 屏幕截图(未能附加),但这就是为什么我使用表单数据选项卡发送请求。我跟踪了Express + Postman, req.body is emptyReq.body is empty in express even i did everythingRequest body is empty when posting form-data .所有这些都主要是告诉让它raw和选择json和实际的解决方案也导致了空对象只有。我做错了什么?

cbeh67ev

cbeh67ev1#

要在Express中使用表单数据处理文件上传,您需要使用额外的中间件来正确解析表单数据。在您的例子中,您可以使用multer中间件。首先在项目中安装multer,然后像这样更新路由器

import { Router } from "express"
import multer from "multer"
import { newproduct } from "./product.controller.js"

const router = Router()
const upload = multer()

router.post("/add", upload.none(), newproduct) // Use upload.none() to handle form data

export default router

字符串

相关问题