当前位置: 首页 > 编程笔记 >

在React.js中发出HTTP请求

丁翊歌
2023-03-14
本文向大家介绍在React.js中发出HTTP请求,包括了在React.js中发出HTTP请求的使用技巧和注意事项,需要的朋友参考一下

在典型的Web应用程序中,客户端通过浏览器发出http请求,而服务器在响应中发送带有数据的html页面。

但是在单页应用程序(SPA)中,我们只有一页,每当客户端向服务器发出http请求时,它通常都会以json / xml格式的数据进行响应。

为了发出http请求,我们有以下一些选项-

  • XmlHttpRequest

  • Axios

  • Windows获取

Axios易于处理响应和处理请求。

首先安装

npm install –save axios

使用之前将其导入jsx文件

import Axios from ‘axios’;

从组件生命周期发布中,我们观察到componentDidMount是产生副作用(如发出HTTP请求)的最佳位置。因为componentDidMount在组件的生存期内仅执行一次。一旦http请求完成,我们就可以异步更新状态,页面将使用该更新重新呈现。

Axios使用Promise以异步方式工作。

componentDidMount(){
   Axios.get(‘url’).then((response)=>{console.log(response)});
}

然后,函数仅包含一个函数,该函数的参数为promise的响应。然后,我们可以使用setState将数据更新为类的状态对象。

我们可以在componentDidMount中更新实际状态之前操纵数据。另外,我们可以在axios中发送查询参数。

根据状态的某些变化,如果我们要发出另一个http请求,则应使用componentDidUpdate。但是我们必须通过添加条件逻辑来确保它不会导致无限循环。使用id作为参数的示例,我们可以检查它是否不等于先前的id,然后可以在此处发出新的http请求。

发出post请求

类似于get请求,我们可以在按钮点击时post请求。

postdata=()=>{
   const postObject={
      //值
   }
   Axios.post(‘url’, postObject).then(response=>{ //process the response});
}

与get类似,我们也可以在完成post request时获得承诺。还有其他http方法可以用相同的方式执行。

deleteData=()=>{
   Axios.delete(‘url’).then(response=>{});
}

使用axios处理错误

在then方法之后有catch方法。

Axios.get(‘url’).then(response=>{}).catch(error=>{
   //我们可以将状态更新为错误以在屏幕上显示有意义的消息
});

全局在axios中添加拦截器

有时我们需要一个通用的过程,例如在进行http请求处理时添加身份验证数据或记录日志。

在index.js文件中,我们可以添加对所有axios配置可用的拦截器。

Index.js
Import axios from ‘axios’;
Axios.interceptors.request.use(request=>{
   //在即将到来的请求上添加逻辑
   return request;
});

确保在拦截器中也返回请求。我们可以添加错误逻辑,如下所示

Axios.interceptors.request.use(request=>{
   //在即将到来的请求上添加逻辑
   return request;
}, error=>{
   //添加特定于错误的逻辑
   return Promise.reject(error);
});

同样,我们可以添加拦截器来响应

Axios.interceptors. response.use(response=>{
   //在即将到来的响应上添加逻辑
   return response;
}, error=>{
   //添加特定于错误的逻辑
   return Promise.reject(error);
});

我们可以为axios进行其他全局配置,例如为所有请求设置bse网址。

在index.js文件中,添加以下行

Axios.defaults.baseURL=’your base url’;
 类似资料:
  • 问题内容: 我在iBooks中阅读了Apple的The Programming Language Swift ,但无法弄清楚如何在Swift中发出HTTP请求(例如cURL)。我需要导入Obj- C类还是只需要导入默认库?还是无法基于本机Swift代码发出HTTP请求? 问题答案: 您可以使用,而且还是因为你通常在Objective- C做。请注意,对于iOS 7.0和更高版本,它是首选。 使用

  • 我在iBooks上读过Apple的编程语言Swift,但不知道如何在Swift中发出HTTP请求(类似于cURL)。我需要导入Obj-C类还是只需要导入默认库?或者不可能基于本机Swift代码发出HTTP请求?

  • 我在iBooks中阅读了苹果公司的编程语言Swift,但不知道如何在Swift中发出HTTP请求(类似cURL的东西)。我需要导入Obj-C类还是只需要导入默认库?还是不能基于原生Swift代码进行HTTP请求?

  • 问题内容: 我正在尝试发出POST请求以检索有关一本书的信息。这是返回HTTP代码的代码:302,已移动 当我从浏览器尝试时,可以从以下页面进行操作:http : //www.bkstr.com/webapp/wcs/stores/servlet/BuybackMaterialsView?langId=-1&catalogId=10001&storeId=10051&schoolStoreId=1

  • 问题内容: 我才刚开始做出反应,我有点迷茫。我正在尝试制作一个登录页面并发出一个http发布请求。现在,我只是想使任何类型的HTTP请求都能正常工作,所以我使用了请求bin,并在文档中找到了针对npm软件包的这一基本操作(https://www.npmjs.com/package/redux -react-fetch ): 那么,写完一个动作之后,我该怎么办?我实际上如何让我的应用程序调用并使用该

  • 问题内容: 如何在node.js中使用数据发出出站HTTP POST请求? 问题答案: 这是一个使用node.js向Google Compiler API发出POST请求的示例: 我已经更新了代码,以显示如何从文件而不是硬编码的字符串发布数据。它使用async 命令来实现此目的,并在成功读取后发布实际代码。如果有错误,则抛出该错误,如果没有数据,则该过程以负值退出以指示失败。