HarmonyOS rcp的request请求入参data怎么传?

request方法中需要传入自定义的一个TaskModel,和pageNum,pageSize参数作为入参,怎么转化传给request的入参data,TaskModel结构如下:

class TaskModel {
  title:string;
  num:number;
  otherModel:OtherModel;
  adition:Array<string>;
}
class OtherModel {
  id:string;
  time:string;
}
export function requestTaskWithModel(taskModel:TaskModel): Promise<null> {
  return request('/task/tasks','POST',taskModel????)
    .then(response => null)
    .catch((err: BusinessError) => {
      throw new Error(`Error code: ${err.code}, message: ${JSON.stringify(err)}`);
    });
}
阅读 484
1 个回答

可以通过request里面的HttpRequestOptions配置extraData,参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-http-V5\#request-1

参考demo:

import { http } from '@kit.NetworkKit';

class TaskModel {
  title:string="";
  num:number=0;
  otherModel:OtherModel=new OtherModel();
  adition:Array<string>=[];
}
class OtherModel {
  id:string="";
  time:string=''
}

let httpRequest = http.createHttp();
let options: http.HttpRequestOptions = {
  method: http.RequestMethod.POST, // 可选,默认为http.RequestMethod.GET
  // 当使用POST请求时此字段用于传递请求体内容,具体格式与服务端协商确定
  extraData: {
    TaskModel:new TaskModel(),
    pageNum:1,
    pageSize:10
  },
  expectDataType: http.HttpDataType.STRING, // 可选,指定返回数据的类型
  usingCache: true, // 可选,默认为true
  priority: 1, // 可选,默认为1
  // 开发者根据自身业务需要添加header字段
  header: 'application/json',
  readTimeout: 60000, // 可选,默认为60000ms
  connectTimeout: 60000, // 可选,默认为60000ms
  usingProtocol: http.HttpProtocol.HTTP1_1, // 可选,协议类型默认值由系统自动指定
  usingProxy: false, //可选,默认不使用网络代理,自API 10开始支持该属性
};

httpRequest.request("EXAMPLE_URL", options, (err: Error, data: http.HttpResponse) => {
  if (!err) {
    console.info('Result:' + data.result);
    console.info('code:' + data.responseCode);
    console.info('type:' + JSON.stringify(data.resultType));
    console.info('header:' + JSON.stringify(data.header));
    console.info('cookies:' + data.cookies); // 自API version 8开始支持cookie
  } else {
    console.info('error:' + JSON.stringify(err));
  }
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进