如何在 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 中向图像添加文本?

如何在 React native redux 的 reducer 中向数组添加元素?

如何在文本输入中向右移动文本(React Native)

我如何在javascript中向url请求添加变量,更具体地说,expo和react native

在 React Native 中向数组添加新对象