json - 如何在 React Native 中向 API 发出 POST 请求?
问题描述
我正在尝试向 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);
});
}
解决方案
使用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',
}
}
);
推荐阅读
- javascript - 带有自定义项目符号的自动图像滑块
- javascript - 模拟内部 axios.create()
- rrdtool - 更新现有 RRD 文件中的值
- algorithm - 合并已排序的 n 个列表
- sql - 在 SQL Server 中将 '2018-07-02 00:01:22.000' 转换为 '02-Jul-18'
- linux - 我如何在 CentOS7 中静态分配 ip
- python - 在我将参数作为python pandas中的dict传递后,read_sql查询返回一个空数据帧
- html - Django REST 可浏览 API 模板更改
- sql - 更改某些列的默认权限
- android - 如何禁用 RecyclerView 单击侦听器但滚动工作