Извлечение почтовых данных в expressjs приводит к тому, что сервер 404 не найден - PullRequest
0 голосов
/ 31 мая 2019

Наличие интерфейса с моим собственным бэкэндом expressjs api. Экспресс v. 4.16.0

Использование fetch на интерфейсе реагирования для получения данных прекрасно работает.

 fetch('/desResData')
      .then(res => {....}

Как только я пытаюсь опубликовать некоторые данные с запросом, я получаю: "POST http://localhost:3000/desResData 404 (Not Found)" Код:

 fetch('/desResData',
      {
        method: 'POST',
        body: { product: "test" }, // tried JSON.stringify as well
        headers: {
          'Accept': 'application/json',
          'Content-Type': 'application/json'
        }
      }
    )
      .then(res => {....}

Грубо говоря, у меня может быть статическая связь от начала до конца, но я не могу параметризовать свои запросы.

ExpressJS:

router.get('/', async function (req, res, next) {

  console.log(req.body) // tried with using req and without using it

  findByProduct("product") // some async db operation // this part is working fine while fetching without any post parameters
    .then(data => {
       res.json()
      })

Ответы [ 2 ]

1 голос
/ 31 мая 2019

Вы должны написать router.post (не router.get) для обработки HTTP-запроса POST.

Обратите внимание, что метод вашей выборки - POST.Но вы написали router.get, который обрабатывает запрос, где метод равен GET.

Если запрос POST приходит для несуществующего маршрута, экспресс выдаст 404.Это применимо, даже если есть обработчик GET для того же маршрута.

(Подсказка: вы можете иметь отдельные обработчики GET, POST, PUT, DELETE и т. Д. Для одного и того же маршрута, используя .get, .post, .put, .delete и т. Д.)

0 голосов
/ 31 мая 2019

добавьте это в код вашего сервера:

app.use(function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS, HEAD');
    next();
});

в package.json вашего кода реакции:

"proxy": "http://localhost:serverport",  <-- server port will be port of your node-express server
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...