【问题标题】:Nuxt server middleware post request not workingNuxt 服务器中间件发布请求不起作用
【发布时间】:2021-04-18 04:31:06
【问题描述】:

我在 Nuxt js (https://nuxtjs.org/docs/2.x/configuration-glossary/configuration-servermiddleware/) 的文档中看到我可以使用 express 扩展服务器中间件。 我用 GET 请求对其进行了测试,它可以工作,但是当我使用 POST 请求时,请求中没有正文。

/api/index.js:

const express = require('express');
const bodyParser = require('body-parser');
import Cities from './offline/cities';

const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

app.post('/findCity', function (req, res) {
  if (!req.body.input) {
    res.status(400).json();
    return;
  }
  res.status(200).json(Cities.filter(req.body.input, req.body.opt));
});

module.exports = { path: '/api', handler: app };

/nuxt.config.js:

serverMiddleware: [ '~/api/index.js' ],

mixin.js

async findCity(input, opt) {
   return (await this.$axios.post(process.env.DOMAIN_URL + '/api/findCity', { input, opt })).data;
}

在 chrome 开发工具中发送正文:

【问题讨论】:

    标签: javascript node.js express vue.js nuxt.js


    【解决方案1】:

    在您的/api/index.js 文件中,您可以通过这种方式获取请求数据:

    req.on('data', (data) => {
        console.log(data.toString())
    })
    

    仅使用data 你会得到一个可读的 Buffer 对象。添加.toString(),您就有了数据的“纯文本”表示。

    【讨论】:

      【解决方案2】:

      移除正文解析器

      我不知道这是否会直接解决原来的问题,但它是一种效率。在解决获取 req.body 问题时,它确实帮助了我。

      使用 Express +4.16,您不需要单独导入 body-parser,因为 .json.urlencoded 包含在 Express 基础中。

      更新日志: https://expressjs.com/en/changelog/4x.html#4.16.0

      一篇关于它的文章: https://medium.com/@mmajdanski/express-body-parser-and-why-may-not-need-it-335803cd048c

      这对我有用:

      const express = require('express')
      const app = express()
      app.use(express.urlencoded({extended: true}));
      app.use(express.json())
      
      app.all('/myAPIroute*', (req, res) => {
          console.log("Req body is: ", req.body)
      })
      
      module.exports = app
      

      【讨论】:

        猜你喜欢
        • 2017-04-23
        • 2021-05-11
        • 2019-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多