HarmonyOS 鸿蒙Next 使用@ohos/axios网络请求参数传递的问题

发布于 1周前 作者 yibo5220 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 使用@ohos/axios网络请求参数传递的问题
封装的网络请求的方法:

public static getSecondModuleList(map:HashMap<string, string>): Promise<DzgResponse> {
  return new Promise (
  (resolve: (value: DzgResponse | PromiseLike<DzgResponse>) => void,
  reject: (reason: RejectError) => void
  )=>{
  RestProvider.getNormalApiService().get(ApiService.getSecondModuleList,
  {
  params: {
    user_name: map.get('user_name'),
    module_id: map.get('module_id'),
    selected_role_id: map.get('selected_role_id')
  }
}
).then(
(result: AxiosResponse<string>) => {
  resolve(plainToInstance(DzgResponse, JSON.parse(result.data)));
}).catch(
(error: AxiosError) => {
  reject(new RejectError(error.message, NumberUtil.toInt(error.code)))
})
}
)
}

调用的时候的代码:

/*获取二级模块数据*/
getSecondModuleListReq() {
  SharedDialog.loading('请稍等...')
  let map: HashMap<string, string> = new HashMap() /*登录手机号*/
  map.set('user_name', UserPrefs.getUsername()) /*首页点击的模块id*/
  map.set('module_id', this.params?.moduleId ?? '') /*登录角色id*/
  map.set('selected_role_id', encodeURIComponent(UserPrefs.getSelectedRoleId()))
  from(HomeSecondFunc.getSecondModuleList(map)).subscribe({
    next: (response: DzgResponse) => {
      this.dataArr = plainToInstance(HomeSecondModel, response.body as HomeSecondModel[])
      SharedDialog.dismiss()
    }, error: (err: RejectError) => {
      SharedDialog.dismiss()
      SharedDialog.showError(err)
    }
  });
}

我的问题是,现在的写法参数字段需要在调用和和封装的里面都需要写,需要写两遍,如果是参数更多或者参数结构更复杂的场景这种写法不利于后期的维护和改造。 请问有优化的方法吗,比如我在调用的时候把参数结构封装成一个对象,或者map,到了封装的代码里面就直接使用了,不再需要一个key一个key的再次写一遍。


更多关于HarmonyOS 鸿蒙Next 使用@ohos/axios网络请求参数传递的问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

get请求除了您当前的写法,其次就是拼接在url后面,没有其他的写法了

每个接口参数字段需要单独写,如果不同的接口用的是相同参数,可以封装成一个函数,调用时传递相应的值

更多关于HarmonyOS 鸿蒙Next 使用@ohos/axios网络请求参数传递的问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,使用@ohos/axios进行网络请求时,参数传递的问题通常涉及到请求方法的正确使用以及参数的序列化。@ohos/axios是基于axios封装的,适用于鸿蒙系统的HTTP客户端,因此其用法与axios类似,但需注意鸿蒙系统的特定API限制和差异。

确保你按照以下步骤操作:

  1. 正确安装@ohos/axios:确保你已经在项目中正确安装了@ohos/axios包。

  2. 使用正确的请求方法:根据API需求选择getpostputdelete等方法。例如,使用post方法传递参数时,通常需要将参数放在请求体中。

  3. 参数序列化:对于postput请求,如果参数是对象,确保它们被正确序列化。@ohos/axios默认使用JSON.stringify进行序列化。

  4. 设置请求头:根据需要设置Content-Type等请求头,确保服务器能正确解析请求体。

  5. 检查API文档:确保你遵循了后端API的具体要求,包括参数名称、类型和数据结构。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部