вызовы react native api с использованием axios

#node.js #reactjs #react-native #axios

#node.js #reactjs #react-native #axios

Вопрос:

У меня есть серверная часть NodeJS, где я создал этот api

 app.post("/addInvoice", (req, res) => {
  let invoice = req.body;
  var sql =
    "INSERT INTO invoice (address, email, billnumber, price, status) VALUES(?, ?, ?, ?, 'sent');";
  mysqlConnection.query(
    sql,
    [
      invoice.address,
      invoice.customeremail,
      invoice.billnumber,
      invoice.totalprice,
    ],
    (err, rows, fields) => {
      if (!err) {
        res.send(rows);
      } else {
        res.send(err);
      }
    }
  );
});
  

когда я вызываю этот API с помощью post man, он работает отлично.

но теперь мне нужно вызвать его по кнопке buttonclick из моего приложения react-native.

 axios
      .post("http://localhost:3000/addInvoice", {
        address: address,
        customeremail: email,
        billnumber: invoicenumber,
        totalprice: totalPrice,
      })
      .then((response) => {
        alert(response);
      });
  

Я ничего не происходит, когда я отправляю это, и оповещение (ответ) ничего не возвращает.

в чем может быть проблема?

Комментарии:

1. попробуйте это: then((response) => {console.log(response); }).catch((ошибка)=> console.log(«ошибка», ошибка), что будет зарегистрировано???

2. в журнале ошибка [Ошибка: ошибка сети] @ZahraMirali

3. Я думаю, что это как-то связано с приложением, запущенным на моем мобильном телефоне -> следует использовать другой URL?

Ответ №1:

Ваш эмулятор (или телефон) — это отдельное устройство, которое не работает на том же IP (localhost или 127.0.0.1), что и ваш веб-браузер, postman или ваш сервер.

Для того, чтобы отправить запрос на ваш сервер с вашего эмулятора (или телефона), вам необходимо получить доступ к вашему серверу через IP-адрес вашего компьютера: в Windows получите свой IP-адрес, запустив ipconfig в командной строке или, возможно, здесь: системные настройки> Сеть> Дополнительно> TCP / IP> IPv4-адрес.

Вместо http://localhost:port вы должны использовать http://your_ip_address:port

Комментарии:

1. да, точно, но я сканирую QR-код и тестирую приложение на своем мобильном телефоне

2. хорошо, это сработало, я вместо этого ввел свой IP-адрес. Большое спасибо, но у меня вопрос, если я хочу отправить проект кому-то другому, он должен изменить URL во всем коде? или есть решение?

3. если он ваш коллега, и вы хотите отправить ему как бэкэнд, так и интерфейс, он может изменить IP-адрес, но если вы хотите отправить свое приложение кому-то для его тестирования, нет, он не должен менять IP, решение: 1. ваш компьютер должен быть включен, когда он тестирует вашприложение (в противном случае ваше приложение не сможет вызвать Api) 2. разверните серверную часть NodeJS на сервере и замените «localhost» на адрес сервера

4. еще раз здравствуйте, извините, что беспокою вас, но не могли бы вы помочь мне с еще одной небольшой проблемой в react native?

5. конечно, если я смогу ответить 🙂