【问题标题】:Post request body is empty on server side Meteor (Error 503)服务器端 Meteor 上的发布请求正文为空(错误 503)
【发布时间】:2020-06-04 02:08:02
【问题描述】:

我正在使用 Axios 向 API 端点发送数据。在控制台的Network 一侧,请求正文具有正确的数据。在Meteor 服务器端,params 和 body 都是空的,并在控制台上抛出 503 错误。

我阅读了类似的问题并确保将content-type 设置为application\json,我尝试将mode 设置为no-cors,我正在调用本地端点。

客户端代码

const modifyPackage = () => {

            const requestContent = {
                "filePath": package.file.path,
                "data": data
            };
            const requestConfig = {
                headers: {
                    "Content-Type": "application/json"
                }
            }

            axios.post('/modifyPackage',requestContent,requestConfig)
            .then((response) => {
                console.log(response);
            }).catch ((err) => {
                console.log(err);
            });
        }   
        modifyPackage();

服务器端代码

  Picker.middleware( bodyParser.urlencoded( { extended: false } ) );
  Picker.middleware( bodyParser.json() );

  Picker.route('/modifyPackage',(params, req,res,next) => {
    console.dir("## BODY ##");
    console.dir(req.body);
    if (req.method == "POST") {
      const modifiedContent = req.body.data;
      const pathString = req.body.filePath;
      console.dir(pathString);
      console.dir(modifiedContent);

      fs.writeFile(pathString, modifiedContent, (err,data) => {
        if (data) {
          console.dir(data);
        }
        res.end();
      });
    } else {
      console.dir("Not Post")
      res.end("No Response");
    }
  });

【问题讨论】:

  • 如果params 如您所说为空,则无法访问其上的属性,如:const modifiedContent = params.body.data;
  • 如果我错了,请纠正我,但params 不会引用路径参数吗?即/path/:param1/:param2。另外,你肯定不想使用no-cors 模式
  • @Chase @Phil 是的,你们都是对的。参数不应该包含任何数据。我只是打印所有可能的东西。问题是req.body 为空

标签: javascript node.js meteor axios


【解决方案1】:

503错误服务器端错误

const modifiedContent = req.body.data;
const pathString = req.body.filePath;

【讨论】:

  • 这会返回 undefined 错误,因为 req.body 是空的
【解决方案2】:

我不认识皮克。您可以使用内置的 Meteor Webapp 包。

import { WebApp } from 'meteor/webapp';
import connectRoute from 'connect-route';

WebApp.connectHandlers.use(connectRoute((router) => {
  router.post('/modifyPackage/:someParam/:otherParam', (req, res, next) => {
    // some logic here.

    res.writeHead(200);
    res.end('some data');
  });
}));

【讨论】:

  • 我在使用 WebApp 时遇到了一些问题,这与使用什么中间件无关。
猜你喜欢
  • 2017-12-03
  • 2020-02-10
  • 2016-02-27
  • 2023-03-25
  • 1970-01-01
  • 2020-09-17
  • 2019-08-25
  • 1970-01-01
  • 2020-01-09
相关资源
最近更新 更多