首页 > 解决方案 > Nodejs无法获取发布请求正文

问题描述

我创建了 nodejs api 和 react 应用程序,并将它们 docker 化。

当我尝试通过 api 发送发布请求时,请求正文变空。

我像这样创建了 api docker 容器:

FROM node:lts
# Create app directory
WORKDIR /app
# Install app dependencies
COPY package*.json ./

RUN npm install
# Copy app source code
COPY . .

#Expose port and start application
EXPOSE 4000
CMD [ "npm", "start" ]

我还创建了这样的反应应用容器:

FROM node:latest
WORKDIR /app
COPY package.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]

我仔细检查以在 nodejs 中表达 json 中间件:

app.use(express.urlencoded());
app.use(express.json());

我在反应应用程序中发送这样的帖子请求:

fetch(`${serviceUrl}/metrics`, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify(getPerfanalytics().values),
})

我可以看到请求运行良好,但请求正文始终为空。

这是我如何获得发布请求:

    export const saveMetric = (req, res) => {
        let params = req.body;
        console.log(params);
        if (typeof params === 'string') {
            params = JSON.parse(params)
        }
        new Metric(params).save().then(metric => {
            res.json({
                message: 'Metric saved',
                data: metric
            });
        }).catch((err) => {
            res.status(500);
            res.json({
                message: 'Metric saving error',
                error: err
            });
        }

);
}

我怎么解决这个问题?

谢谢

标签: node.jsreactjsdocker

解决方案


推荐阅读