Не удалось отправить запрос с React native - PullRequest
0 голосов
/ 06 сентября 2018

Пытался внедрить nodemailer в мой проект RN, но я изо всех сил стараюсь сделать базовый пост-запрос. Чего мне не хватает?

код РН:

const sendEmail = (_email, _topic, _text) => {
    return dispatch => {
        fetch('http://MY_IP/api/sendEmail', {
            method: 'POST',
            headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json'
            },
            body: JSON.stringify({
                email: _email,
                topic: _topic,
                text: _text
            })
        })
            .then((res) => res.json())
            .then((res) => {
                console.log('here is the response: ', res);
            })
            .catch((err) => {
                console.error('here is the error: ', err);
            })
    }
}

Сервер:

const express = require('express');
const app = express();

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

const PORT = process.env.PORT || 5000;
app.listen(PORT);

Я получаю req.body не определено.

Если мне нужно опубликовать больше кода или добавить package.json, пожалуйста, дайте мне знать

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Лучше использовать пакет axios, его легко отправить почтовый запрос в API.

Ссылка на пакет: https://www.npmjs.com/package/axios

Например:

  axios.post('/http://MY_IP/api/sendEmail', {
    email: _email,
    topic: _topic,
    text: _text
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });
0 голосов
/ 06 сентября 2018

Я думаю, что ваш код RN в порядке, но в коде сервера отсутствует пакет парсера тела. Установите зависимость "npm install body-parser --save" в "package.json", после чего ваш код сервера должен выглядеть следующим образом

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

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

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

const PORT = process.env.PORT || 5000;
app.listen(PORT);

Надеюсь, это поможет.

...