如何在 React Native 中向 API 发出 POST 请求?
Posted
技术标签:
【中文标题】如何在 React Native 中向 API 发出 POST 请求?【英文标题】:How do i make a POST request to an api in React Native? 【发布时间】:2020-10-18 07:35:13 【问题描述】:我正在尝试向 api 发出 Post 请求,但由于某种原因,我在此过程中收到了 400 条反馈。由于我是这方面的初学者,我真的不知道我在哪里弄错了。我知道 400 错误与不正确的语法有关,但我不确定这里的情况。我还查看了其他相关帖子,但没有一个有助于解决我的问题。我也一遍又一遍地阅读了文档,但仍然看不到我在哪里犯了错误。如果您能帮我指出问题,我将不胜感激。
myPostRequest()
var mybody =
"amount": "5.0",
"currency": "EUR",
"externalId": "6547864",
"payer": "partyIdType": "MSISDN","partyId": "0977948551"
mybody = JSON.stringify(mybody);
var token = "mytoken";
//POST request
fetch('https://sandbox.momodeveloper.mtn.com/collection/v1_0/requesttopay',
method: "POST",
headers:
'Authorization': 'Bearer '+token,
'X-Reference-Id': 'f9b8b0a-XXXXXXXXXX',
'X-Target-Environment': 'sandbox',
'Ocp-Apim-Subscription-Key': '14d2a71dXXXXXXXXX',
,
body: mybody,
)
.then((responseJson) =>
alert(JSON.stringify(responseJson));
console.log(responseJson);
)
.catch((error) =>
alert(JSON.stringify(error));
console.error(error);
);
【问题讨论】:
【参考方案1】:使用axios/apisauce
而不是fetch
apisauce
示例:
import create from 'apisauce';
const api = create(
baseURL: `http://example.com`,
);
const response = await api.post('/path/to/', body, headers );
在你的情况下:
import create from 'apisauce';
const api = create(
baseURL: `https://sandbox.momodeveloper.mtn.com`,
);
const response = await api.post(
'/collection/v1_0/requesttopay',
"amount": "5.0",
"currency": "EUR",
"externalId": "6547864",
"payer": "partyIdType": "MSISDN", "partyId": "0977948551"
,
headers:
'Authorization': 'Bearer ' + token,
'X-Reference-Id': 'f9b8b0a-XXXXXXXXXX',
'X-Target-Environment': 'sandbox',
'Ocp-Apim-Subscription-Key': '14d2a71dXXXXXXXXX',
);
【讨论】:
您好,我已经尝试了您的建议,但仍然得到相同的响应。但是,当我尝试在 Postman 中发送具有相同参数的相同请求时,它可以在那里工作。我不知道为什么它专门在 React Native 中给了我这个 400 错误。 Вообще не понимаю.以上是关于如何在 React Native 中向 API 发出 POST 请求?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 React Native 中向 NavigatorIOS 添加右键?
如何在 React native redux 的 reducer 中向数组添加元素?