react使用axios進(jìn)行api網(wǎng)絡(luò)請(qǐng)求的封裝方法詳解
前言
最近寫react項(xiàng)目使用到axios進(jìn)行請(qǐng)求封裝,在這里記錄一下,希望可以幫助到初學(xué)的小伙伴
準(zhǔn)備工作
進(jìn)行請(qǐng)求需要使用axios,所以要先確定你已經(jīng)安裝完成了axios,查看package.json文件

如果沒(méi)有,請(qǐng)先安裝axios
npm install axios
開(kāi)始封裝axios
首先在src目錄下新建axios文件夾,這里我們新建兩個(gè)文件,分別是config.js和request.js
config.js
這個(gè)文件我們用來(lái)進(jìn)行基礎(chǔ)配置,區(qū)分開(kāi)發(fā)環(huán)境:
1.定義devBaseUrl開(kāi)發(fā)環(huán)境和proBaseUrl生產(chǎn)環(huán)境
2.使用process.env來(lái)區(qū)分開(kāi)發(fā)還是生產(chǎn)環(huán)境,它返回的是一個(gè)包含用戶的環(huán)境信息
3.最后設(shè)置一下timeout
const devBaseUrl = 'http://api.k780.com/' const proBaseUrl = 'http:xxx//xxxx.xx.com' export const BASE_URL = process.env.NODE_ENV === 'development' ? devBaseUrl : proBaseUrl export const TIMEOUT = 5000
request.js
存放對(duì)應(yīng)的封裝方法和攔截器:
1.首先導(dǎo)入axios和config中我們上面寫的BASE_URL, TIMEOUT
2.定義instance = axios.create({ }),里面存放對(duì)象
3.寫一個(gè)請(qǐng)求攔截器,在請(qǐng)求攔截器里面就可以做token驗(yàn)證之類的操作
import axios from 'axios'
import { BASE_URL, TIMEOUT } from './config'
const instance = axios.create({
baseURL: BASE_URL,
timeout: TIMEOUT
})
// 請(qǐng)求攔截器
instance.interceptors.request.use(config => {
console.log('被攔截做一些操作')
return config
}, err => {
return err
})
export default instance
進(jìn)行請(qǐng)求
做完上面的封裝之后,我們就可以進(jìn)行請(qǐng)求操作了,來(lái)到要使用的頁(yè)面
首先進(jìn)行導(dǎo)入剛剛寫的request文件:
import request from '../../axios/request'
我這里請(qǐng)求的是網(wǎng)上的一個(gè)天氣接口,地址已經(jīng)寫在了上面config.js文件中的devBaseUrl
對(duì)于api的請(qǐng)求,我們這里在componentDidMount()生命周期中進(jìn)行異步請(qǐng)求:
1.使用async await 進(jìn)行異步操作
2.使用data接收請(qǐng)求的結(jié)果,在request中寫請(qǐng)求需要的params參數(shù)
3.最后打印data看下結(jié)果,后面是使用setState修改值
async componentDidMount() {
const data = await request({
// 參數(shù)
params: {
app: 'weather.today',
weaId: 248,
appkey: 10003,
sign: 'b59bc3ef6191eb9f747dd4e83c99f2a4',
format: 'json'
}
})
console.log(data)
this.setState({weather: data.data.result.weather})
}
查看打印的結(jié)果:
可以看到請(qǐng)求到的data數(shù)據(jù),這樣就說(shuō)明請(qǐng)求成功啦

總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
React項(xiàng)目中fetch實(shí)現(xiàn)跨域接收傳遞session的解決方案
這篇文章主要介紹了React項(xiàng)目中fetch實(shí)現(xiàn)跨域接收傳遞session的解決方案,本次項(xiàng)目使用了react框架,同時(shí)使用fetch取代ajax作為獲取接口數(shù)據(jù)的交互方法,下面就對(duì)這次問(wèn)題的解決做個(gè)總結(jié),需要的朋友可以參考下2022-04-04
React中g(shù)etDefaultProps的使用小結(jié)
React中的getDefaultProps功能允許開(kāi)發(fā)者為類組件定義默認(rèn)屬性,提高組件的靈活性和容錯(cuò)性,本文介紹了getDefaultProps的作用、語(yǔ)法以及最佳實(shí)踐,并探討了其他替代方案,如函數(shù)組件中的默認(rèn)參數(shù)、高階組件和ContextAPI等,理解這些概念有助于提升代碼的可維護(hù)性和用戶體驗(yàn)2024-09-09
React項(xiàng)目動(dòng)態(tài)設(shè)置title標(biāo)題的方法示例
這篇文章主要介紹了React項(xiàng)目動(dòng)態(tài)設(shè)置title標(biāo)題的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09
Next.js搭建Monorepo組件庫(kù)文檔實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了Next.js搭建Monorepo組件庫(kù)文檔,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11

