14 Star 33 Fork 18

OpenHarmony-TPC / retrofit

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 6.66 KB
一键复制 编辑 原始数据 按行查看 历史

retrofit

一款用于 OpenHarmony平台的HTTP客户端.

下载安装

ohpm install @ohos/retrofit

OpenHarmony ohpm环境配置等更多内容,请参考 如何安装OpenHarmony ohpm包

使用说明

创建HTTP请求类

Retrofit parses HTTP Request class and provides method based api calling. 
As shown below, Create Custom HTTP request class like "DataService" Extending "BaseService".
Retrofit supports API declaration with Decorators, for example to make "GET" api call use @GET. Other api's supported are listed under "API Introduction" below.
Use "retrofit" module to import retrofit apis.
 // Path注解由于和系统组件Path重名,会导致项目编译失败,所以在引用的时候需要修改Path为UrlPath
import {BaseService,ServiceBuilder,GET,POST,DELETE,PUT,UrlPath,Body,BasePath,Response,Header,Query} from '@ohos/retrofit';

//BasePath - Append "/" to basepath.
@BasePath("/")
class DataService extends BaseService{
  
  //GET Api call with Header and Query params
  @GET("get?test=arg123")
  async getRequest(@Header("Content-Type") contentType: string,@Query('d1') data1: string,@Query('d2') data2: number): Promise<Response<Data>> { return <Response<Data>>{} };

  //POST Api call with Header and Body info
  @POST("post")
  async postRequest(@Header("Content-Type") contentType: string,@Body user: User): Promise<Response<Data>> { return <Response<Data>>{} };

  //PUT Api call with Header and Body info
  @PUT("put")
  async putRequest(@Header("Content-Type") contentType: string,@Body user: User): Promise<Response<Data>> { return <Response<Data>>{} };

  //GET Api call with Header, Query and Path Param
  @GET("{req}?test=arg123")
  async getRequest2(@Header("Content-Type") contentType: string,@Query('d1') data1: string,@Query('d2') data2: number,@Path("req") requestPath: string): Promise<Response<Data>> { return <Response<Data>>{} };
}

初始化Retrofit 服务和调用方法

Initialize the Retrofit BaseService, Set End point and Call required apis by its method.
    const dataService = new ServiceBuilder()
      .setEndpoint("https://restapiservice.com")    //Base Url
      .build(DataService);

    dataService.getRequest("application/json","dat1",8).then((resp)=>{  //Get request with params
        console.log("getRequest Response =" + JSON.stringify(resp.result));
    }

接口说明

BaseService.ServiceBuilder

接口名 参数 返回值 说明
setEndpoint endpoint: string ServiceBuilder 设置基础url
setTimeout timeout: number ServiceBuilder 设置请求超时时间
build service: new (builder: ServiceBuilder) => T T** 构建retrofit基础服务

BaseService

接口名 参数 返回值 说明
setEndpoint endpoint: string void 设置基础url
clone void 复制基础服务请求

Decorators

接口名 参数 返回值 说明
@GET void GET HTTP方法装饰器
@POST void POST HTTP方法装饰器
@PUT void PUT HTTP方法装饰器
@DELETE void DELETE HTTP方法装饰器
@HEAD void HEAD HTTP方法装饰器
@OPTIONS void OPTIONS HTTP方法装饰器
@BasePath void 用于追加基本路径的BasePath装饰器
@Path void Path装饰器(Path注解由于和系统组件Path重名,会导致项目编译失败,所以在入口文件index.ets里面需要通过Path as UrlPath重命名Path为UrlPath)
@Body void 用于解析请求体的Body装饰器
@Headers void 设置请求头的Headers装饰器
@Header void 设置单个请求头的Header装饰器
@HeaderMap void HeaderMap装饰器,用于将Header设置为map对象
@Queries void 用于设置query列表的装饰器
@Query void 用于设置query的装饰器
@QueryMap void 用于在map中设置query的装饰器
@FormUrlEncoded void FormUrlEncoded装饰器,用于启用formurlencoding
@Field void Field装饰器,用于为post方法设置Field
@FieldMap void FieldMap装饰器,用于使用map对象设置Field
@Timeout void Timeout装饰器,用于设置请求超时

约束与限制

在下述版本验证通过:

DevEco Studio 版本: 4.1 Canary(4.1.3.317), OpenHarmony SDK: API11 (4.1.0.36) DevEco Studio NEXT Developer Preview2 : 4.1.3.600, OpenHarmony SDK: API11 (5.0.0.19)

目录结构

|---- retrofit  
|     |---- entry  # 示例代码文件夹
|     |---- library  # retrofit 库文件夹
|           |---- src # retrofit源码文件夹
|                 |---- # ets
|                         |---- # baseService.ts 服务的基类
|                         |---- # constants.ts 存放retrofit数据类型interface等常量
|                         |---- # dataResolver.ts 基础数据解析器支持的解析器类型为JSON和XML
|                         |---- # decorators.ts  装饰器注解的封装
|           |---- index.ts  # retrofit对外接口
|     |---- README.MD  # 安装使用方法                   

贡献代码

使用过程中发现任何问题都可以提Issue 给我们,当然,我们也非常欢迎你给我们提PR

开源协议

本项目基于 Apache License 2.0,请自由地享受和参与开源。

1
https://gitee.com/openharmony-tpc/retrofit.git
git@gitee.com:openharmony-tpc/retrofit.git
openharmony-tpc
retrofit
retrofit
master

搜索帮助