work 0.4.5 copy "work: ^0.4.5" to clipboard
work: ^0.4.5 copied to clipboard

outdated

Encapsulate http business interface protocol, provide limited extension functions, isolate the underlying implementation method of http (currently based on dio), and closely integrate with the company [...]

work #

pub package

  • 封装http业务接口协议,提供有限的扩展功能,隔离http底层实现方法(当前基于dio),与公司http规范紧密结合,规范团队成员接口编写和使用方式。
  • 核心设计理念为封装http接口的请求数据和响应数据的序列化和反序列化,接口调用处不能出现任何解析http数据的代码。 装配和解析代码应该全部由Work类完成,接口调用处使用一致的调用方式,无需关心http的实现方式和接口参数名称和类型, 仅仅需要注意参数顺序和实现的Work类保持一致。
  • 此设计的缺点是丢弃了一些不常用的http底层实现工具的灵活扩展功能, 优点是规范团队接口编写方式,统一项目http接口代码风格。

Usage #

实现公司http规范基类 #

模仿simple_work.dart中的样板来实现一个Work基类,用于关联自己公司的固定接口规范。

SimpleWork类为一个样例实现,所使用的公司接口规范如下

所有接口响应数据格式

{
  "state":true, // 业务的成功失败标志
  "errorCode":0, // 错误码
  "message":null, // 业务消息字符串,可以是成功时用于显示的信息,也可以是失败时的提示信息
  "result": {}  // 真正响应的有效业务数据,任意类型
}

增加接口 #

继承公司http规范基类,比如SimpleWork<T>

<T>为真正需要返回的数据模型类

示例


class LoginWork extends SimpleWork<User> {
  @override
  User onExtractResult(resultData,SimpleWorkData<User> data) => User.fromJson(resultData);
  // 解析响应数据

  @override
  void onFillParams(Map<String, dynamic> data, List params) {
    // 装配请求参数,data为最终要发送的参数集合,params为[Work]调用处端传入的参数列表
    data["username"] = params[0]
      ..["password"] = params[1]
      ..["device"] = Platform.isIOS ? "Ios" : "Android";
  }

  @override
  String onUrl(List params) => "https://xxx/user/login";  
  // 地址可以是完整地址,支持baseUrl,需调用[mergeBaseOptions]设置

  @override
  HttpMethod get httpMethod => HttpMethod.post; // 使用post请求
}

调用接口 #


// 有序的参数传入,位置可选参数,[params]为任务参数列表,[retry]为重试次数,
// [onProgress]为进度监听器,在[HttpMethod.download]请求中为下载进度,在其他类型请求中为上传/发送进度。
LoginWork().start(["user1","123456"]).then((data){
   // start方法返回Future<T> ,T为[SimpleWorkData]类

   if (data.success){
      // 登录成功
      final user = data.result;
   }else{
      // 登录失败
   }
});

支持请求类型 #

  • HttpMethod中的类型,getpostputdeleteheaduploaddownload
  • 其中upload 基于postmultipart/form-data实现,参数中的文件需要用FileUploadFileInfo类型包装,支持文件列表
  • download默认使用get请求,且由于download特殊性,需要使用独立于其他Work的实现方式,参考SimpleDownloadWork

其他Work生命周期函数 #

Work中还有很多生命周期方法,用于做有限的接口扩展和定制,原则是接口数据处理由接口自己(即Work)处理。

1
likes
0
pub points
31%
popularity

Publisher

unverified uploader

Encapsulate http business interface protocol, provide limited extension functions, isolate the underlying implementation method of http (currently based on dio), and closely integrate with the company's http specification to regulate the writing and use of team member interfaces.

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

dio, http_parser, meta, mime, path

More

Packages that depend on work