axios设置text html,axios封装动态设置Content-Type

问题如下:

有个问题 是这样的 后台给的API接口 请求类型有两种

‘Content-Type’: ‘application/json’

‘Content-Type’: ‘application/x-www-form-urlencoded’

前端在请求接口时,怎么动态设置axios封装的头部请求类型Content-Type。

下面是封装的请求方法

axios封装代码如下:

// 创建axios实例

const instance = axios.create({

baseURL: baseUrl,

timeout: 10000, // 超时

});

// 请求拦截器

instance.interceptors.request.use(

config => {

const token = `Bearer ${utils.local.get('userToken')}`

if (token) config.headers.Authorization = token;

if (config.method === 'post' && config.data !== undefined) {

config.data = qs.stringify(config.data.params);

}

return config;

},

error => {

return Promise.reject(error);

});

//响应拦截

instance.interceptors.response.use(res => {

const { status } = res.data.meta

if (status === 200 || status === 500) {

return Promise.resolve(res);

} else if (status === 401) {

router.push({ path: '/login' }) //登录成功跳转到首页

return Promise.resolve(res);

} else {

return Promise.reject(res);

}

}, error => {

return Promise.reject(error)

})

export default instance;

回答

你建两个实例不就好了,一个axios_json,一个axios_form,或者做一个工具获取获取实例,传一个type参数也行

### 鸿蒙开发中的HTTP请求封装 在鸿蒙操作系统(HarmonyOS/OpenHarmony)中,`@ohos/net.http` 是官方提供的基础模块,用于执行HTTP通信任务。为了简化HTTP请求操作并提高代码可维护性和重用性,开发者通常会基于此模块创建类似于 `axios` 的封装层。 #### 封装思路 通过构建一个通用的HTTP客户端类来处理常见的配置项和服务端交互逻辑,从而减少重复编码工作量。此类应当支持同步/异步调用模式,并提供灵活的方法签名以便于集成到不同业务场景之中[^1]。 #### 实现方案 下面是一个简单的示例,展示了如何使用 JavaScript 和 TypeScript 对 HarmonyOS 中的 HTTP 功能进行高级抽象: ```typescript import http from '@ohos/net.http'; class HttpClient { private baseUrl: string; constructor(baseUrl?: string) { this.baseUrl = baseUrl || ''; } public async get<T>(path: string, params?: Record<string, any>): Promise<T> { const url = new URL(path, this.baseUrl); Object.keys(params ?? {}).forEach(key => { url.searchParams.append(key, String(params[key])); }); let requestInfo = { method: 'GET', headers: { "Content-Type": "application/json" }, uri: url.toString() }; try { const response = await http.request(requestInfo); if (!response.ok) throw Error(response.statusText); return JSON.parse(await response.text()) as T; } catch (error) { console.error(`Error during GET ${url}:`, error.message); throw error; } } // POST, PUT, DELETE methods can be implemented similarly... } ``` 该 `HttpClient` 类允许设置基本URL地址,在实例化时传入即可;提供了便捷的 `get()` 函数用于发起GET类型的API请求,其他如POST、PUT等也可以按照相同的方式扩展实现。此外还加入了错误捕捉机制以增强健壮性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值