OpenHarmony开发者论坛

标题: 使用axios封装请求库,发现需要一些公共参数和加密检验,需要在拦截器中把get请求的参数拼接到url后面,怎么请求都发现不对 [打印本页]

作者: ArkTser    时间: 2024-9-20 17:13
标题: 使用axios封装请求库,发现需要一些公共参数和加密检验,需要在拦截器中把get请求的参数拼接到url后面,怎么请求都发现不对
[md]### 【问题描述】

```
simport { stringify } from 'querystringify';  // 处理URL参数拼接  ohpm i @ohos/querystringify
import  querystringify  from 'querystringify';
import axios,{ AxiosError,AxiosResponse,InternalAxiosRequestConfig } from '@ohos/axios'

export const requestUse = axios.create({
  // baseURL: BASE_URL,
  // timeout: TIME_OUT,
  headers: { 'id': '001', 'token': 'xxx' },
})

const requestInterceptors = requestUse.interceptors.request.use(
  async (config: InternalAxiosRequestConfig) => {
    let headers = config.headers
    headers["header1"] = 'interceptor_001'

    if (config.method === 'get' && config.params) {
      // 使用 querystringify 序列化参数
      const queryString =  stringify(config.params,"&");
      // const queryString = stringify(JSON.stringify(config.params),"&");
      config.url = `${config.url}?${queryString}`;
      config.params = {};  // 清空 params 避免 Axios 重新处理
    }

    return config
  },
  (error: AxiosError) => {

    return error
  }
)




export default class Http{
  get<T>(url:string,params?:Object){
    return requestUse.get<null,T>(url,{params})
  }
}

export const  http  = new Http();

```

### 【运行环境】

硬件:模拟器
DevEvoStudio版本:5.0.3.706
SDK版本:12

const queryString =  stringify(config.params,"&");这行运行起来老是报错,为啥呢
[/md]
作者: 马迪    时间: 2024-9-21 15:43
有这个@ohos/querystringify 库吗? 三方库中心仓没看到这库呢?




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5