HBuilderX 实战:使用 Axios 封装 AtomGit 网络请求
为了进一步学习如何在HBuilder进行网络请求,我们用GitCode提供的开放API进行练习。先从不用认证的"https://api.gitcode.com/api/v5/users/{username}"入手。
这里参考的文档是gitcode-docs-5.0 | GitCode 帮助文档,感兴趣的小伙伴可以去看看。
虽然 uni.request 是 uni-app 自带的请求方式,但为了与主流前端开发接轨(如 Vue、React 项目),掌握 Axios 这一业界标准库显得尤为重要。
本文将记录如何在 HBuilderX 环境下安装 Axios,实现自动携带 Token 和统一的错误拦截。
1. 环境准备与安装
首先,在 HBuilderX 中打开我们的 uni-app 项目。
打开底部的终端窗口,在项目根目录下执行以下命令安装 Axios:
npm install axios
注意:如果你的项目没有
package.json文件,请先执行npm init -y初始化。
2. 为什么要封装 Axios?
如果直接在页面中使用 Axios,代码会变得非常冗余:
// ❌ 错误示范:代码冗余,维护困难
axios.get('https://api.gitcode.com/api/v5/users/someuser', {
headers: { 'Authorization': 'Bearer my-token' }
}).then(res => {
console.log(res.data)
}).catch(err => {
// 每个页面都要写一遍错误处理
if(err.response.status === 401) alert('未登录')
})
通过封装,我们可以实现:
-
统一配置:管理 BaseURL 和超时时间。
-
请求拦截:自动在 Header 中添加 Token。
-
响应拦截:统一处理 401、404 等网络错误,剥离冗余的数据层级。
所以最好是把axios的相关代码都集合封装在一个js文件里。
3. 核心代码实现
在项目根目录下新建 utils 文件夹,并创建 request.js 文件。
先创建了axios的实例,然后再编写请求拦截器和响应拦截器。可以先去axios的官网(拦截器 | Axios中文文档 | Axios中文网)复制粘贴请求器和拦截器的代码,然后再进行修改。
这里先是把错误码的提示都添加进响应拦截器,再把token放进请求拦截器,这样每次请求的时候都会携带这个token进行请求,这个token就像是令牌一样可以让守在giecode门口的门卫放行。
token需要去gitcode官网(个人访问令牌)获取,登录个人账户后创建访问令牌即可,再把拿到的token替换掉以下代码的token常量。
注意:这个token只会出现在创建的那一刻,之后退页面就不再出现。
// utils/request.js
import axios from 'axios';
// 1. 初始化 axios 实例
const service = axios.create({
// GitCode API v5 的基础地址
baseURL: 'https://api.gitcode.com/api/v5',
// 请求超时时间:5秒
timeout: 5000,
});
// 2. 请求拦截器 (Request Interceptor)
service.interceptors.request.use(
(config) => {
// 模拟从本地缓存获取 Token
// 实际开发中,请将 'YOUR_PAT_TOKEN' 替换为你申请的 GitCode Personal Access Token
const token = 'YOUR_GITCODE_PERSONAL_ACCESS_TOKEN';
// 如果存在 Token,则将其添加到请求头中
if (token) {
// GitCode 通常遵循 OAuth2 标准,使用 Bearer + Token
config.headers['Authorization'] = `Bearer ${token}`;
}
return config;
},
(error) => {
console.error('请求配置异常:', error);
return Promise.reject(error);
}
);
// 3. 响应拦截器 (Response Interceptor)
service.interceptors.response.use(
(response) => {
// 这里的 response 是 axios 包装后的对象,data 才是服务器返回的真实数据
const res = response.data;
// 这里可以根据 GitCode 的业务状态码做进一步判断
// 假设直接返回数据即可
return res;
},
(error) => {
// 处理 HTTP 网络错误
let message = '';
if (error.response) {
const status = error.response.status;
switch (status) {
case 401:
message = '认证失败:Token 无效或已过期';
break;
case 403:
message = '拒绝访问:权限不足';
break;
case 404:
message = '资源未找到:用户不存在';
break;
default:
message = `网络错误 code: ${status}`;
}
} else {
message = '网络连接超时或断开';
}
// 在 uni-app 中使用 Toast 提示错误
uni.showToast({
title: message,
icon: 'none',
duration: 2000
});
return Promise.reject(error);
}
);
export default service;
4. 在页面中调用
经过调试可得知,获取到的response结果大致如下:

我们可以根据这个json数据,在调用这个接口后,将获取到的数据在 Vue 页面中展示出来,测试数据获取情况。
<template>
<view class="container">
<view class="box">
<button type="primary" @click="fetchUserData">获取 GitCode 用户信息</button>
<view v-if="userInfo" class="result">
<text>用户名: {{ userInfo.name }}</text>
<text>ID: {{ userInfo.id }}</text>
<text>简介: {{ userInfo.bio }}</text>
</view>
</view>
</view>
</template>
<script setup>
import { ref } from 'vue';
import request from '/utils/request.js';
const getUserInfo = (username)=>request({
url:`/users/${username}`,
method:'get',
});
const userInfo = ref(null);
const fetchUserData = async () => {
try {
// 这里的参数 'gitcode' 是示例用户名,你可以换成任何真实存在的用户名
const response = await getUserInfo('yilan-luo');
const data = response;
console.log('API返回数据:', data);
userInfo.value = data;
uni.showToast({
title: '获取成功',
icon: 'success'
});
} catch (error) {
// 错误已经在拦截器中统一处理了(弹窗提示),这里只需处理业务逻辑
console.log('业务层捕获错误');
}
};
</script>
<style>
.container { padding: 20px; }
.result {
margin-top: 20px;
display: flex;
flex-direction: column;
background: #f5f5f5;
padding: 15px;
border-radius: 8px;
}
</style>
5. 调试与验证
-
验证拦截器: 打开 Chrome 开发者工具(H5模式下)的 Network 面板。当你点击按钮时,查看 Request Headers,你会发现
Authorization字段已经自动添加了你的 Token。 -
验证错误处理: 尝试在代码中故意写错 Token 或查询一个不存在的用户名,你会看到界面上弹出了我们在
request.js中定义的uni.showToast错误提示。

总结
通过这次实践,我们不仅学会了如何在 HBuilderX 中引入 Axios,更重要的是掌握了拦截器的使用。
-
请求拦截器就像是“安检员”,确保每个请求都带上了合法的通行证(Token)。
-
响应拦截器就像是“翻译官”,将服务器晦涩的错误码翻译成用户能看懂的提示。
欢迎大家加入开源鸿蒙跨平台开发者社区,一起共建开源鸿蒙跨平台生态。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)