Почему я получаю пустой объект при выполнении почтового запроса - PullRequest
0 голосов
/ 01 ноября 2019

Я пытался сделать пост-запрос на другой сервер localhost (потому что в проекте я использую webpack, и я не знаю, как управлять сервером webpack по умолчанию).

Это мой файл запроса поста.

    btn_bag[0].addEventListener('click', (e) => {
      e.preventDefault(),
      fetch('http://localhost:3000/get', {
        method:'POST',
        headers: {
          'Content-Type':'application/json;charset=utf-8'
        },
        body: JSON.stringify(order_pizza)
    })
      .then(console.log(order_pizza))
    })

Это мой сервер, когда я нажимаю на кнопку, консоль на сервере регистрируется {}, когда «order_pizza» (переменная, которую я публикую) не пуста. В чем проблема, помогите найти решение, пожалуйста.


    const express = require('express');
    const app = express();
    const bodyParser = require('body-parser');
    const fs = require('fs');
    const cors = require('cors');
    const urlencodedParser = bodyParser.urlencoded({extended: false})

    app.get('/', (req, res) => {
        res.send('hello')
    })
    app.use(cors({
        allowedOrigins: [
            'http://localhost:9000'
        ]
    }));
    app.get('/get', (req,res) => {
        console.log(req.body)
        res.send('get')})

    app.post('/get',urlencodedParser, (req,res) => {
    console.log(req.body)})

    app.listen(3000)

Ответы [ 2 ]

1 голос
/ 01 ноября 2019

попробуйте

const express = require('express');

const bodyParser = require('body-parser');

const app = express();

app.use(bodyParser.json());

app.use(bodyParser.urlencoded({extended: true}));

вам не нужно передавать urlencodedParser в вызове app.post api, надеюсь, это поможет

1 голос
/ 01 ноября 2019

В вашем внешнем интерфейсе не строковое тело, отправьте его как объект, как показано ниже. Также измените целевую конечную точку на /post

  btn_bag[0].addEventListener('click', (e) => {
  e.preventDefault(),
  fetch('http://localhost:3000/post', {
    method:'POST',
    headers: {
      'Content-Type':'application/json;charset=utf-8'
    },
    body: {order_pizza}
})
  .then(console.log(order_pizza))
})

. На вашем сервере измените URL-адрес конечной точки на /post, чтобы это имело смысл. И получить доступ к телу запроса, как показано ниже. И вам не нужно urlencodedParser в этой конечной точке

  app.post('/post', (req,res) => {
   console.log(req.body)})
  })

Также примените анализатор тела к вашему экспресс-приложению, как показано ниже

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...