#javascript #api
#javascript #API
Вопрос:
Я пытаюсь подключиться (Laravel API) к (React native app), я тестирую API в postman, и он работает на 100% нормально, но при загрузке в react native app я получаю следующую ошибку!
ошибка
[Unhandled promise rejection: TypeError: Network request failed]
- node_moduleswhatwg-fetchdistfetch.umd.js:527:17 in setTimeout$argument_0
- node_modulesreact-nativeLibrariesCoreTimersJSTimers.js:135:14 in _callTimer
- node_modulesreact-nativeLibrariesCoreTimersJSTimers.js:387:16 in callTimers
- node_modulesreact-nativeLibrariesBatchedBridgeMessageQueue.js:425:19 in __callFunction
- node_modulesreact-nativeLibrariesBatchedBridgeMessageQueue.js:112:6 in __guard$argument_0
- node_modulesreact-nativeLibrariesBatchedBridgeMessageQueue.js:373:10 in __guard
- node_modulesreact-nativeLibrariesBatchedBridgeMessageQueue.js:111:4 in callFunctionReturnFlushedQueue
* [native code]:null in callFunctionReturnFlushedQueue
и в приложении это отображается следующим образом:
там есть мой app.js код (только функция выборки ):
myfun = async()=>{
await fetch('http://127.0.0.1:8000/api/login',{
method:'POST',
headers:{
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({"email":email, "password": passowrd})
}).then(res => res.json())
.then(resData =>{
alert(resData);
console.log(resData);
});
}
Комментарии:
1.
http://http://
…?2. отловите ошибку .. используйте try catch внутри async или myfun().catch()
3. Помимо опечатки, если ваше приложение react-native не запущено на том же компьютере, что и ваш API, вы не захотите его использовать
127.0.0.1
. Вам нужно будет подключиться к IP-адресу вашего сервера в любой сети, которую совместно используют два устройства4. Проверьте URL еще раз, у него два http. Также проверьте, развернут ли вызываемый вами API на 127.0.0.1 (на вашем локальном компьютере)
5. Добавьте заголовок CORS в серверный API
Ответ №1:
Возможно, это немного запоздало, но чтобы помочь другим: при выборке вы должны добавить свой IPv4-адрес (обычно начинается с 192)
затем замените
await fetch('http://127.0.0.1:8000/api/login'
с
await fetch('http://192.xxx.x.xx:8000/api/login'
И в laravel запускает ваш порт с того же хоста (в вашем терминале):
php artisan serve --host 192.xxx.x.xx --port="8000"
У меня это сработало 🙂
Комментарии:
1. После развертывания на сервере. Вернет ту же ошибку или нет?