在典型的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请求。
类似于get请求,我们可以在按钮点击时post请求。
postdata=()=>{ const postObject={ //值 } Axios.post(‘url’, postObject).then(response=>{ //process the response}); }
与get类似,我们也可以在完成post request时获得承诺。还有其他http方法可以用相同的方式执行。
deleteData=()=>{ Axios.delete(‘url’).then(response=>{}); }
在then方法之后有catch方法。
Axios.get(‘url’).then(response=>{}).catch(error=>{ //我们可以将状态更新为错误以在屏幕上显示有意义的消息 });
有时我们需要一个通用的过程,例如在进行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 命令来实现此目的,并在成功读取后发布实际代码。如果有错误,则抛出该错误,如果没有数据,则该过程以负值退出以指示失败。