api-runtime

0.1.0 • Public • Published

@ali/api-runtime

@ali/api-loader 的运行时支持, 目前包含两种基础类型请求 ajax 和 jsonp 和一个 mock

ajax kind

/**
 * @kind ajax
 * @host https://example.alibaba-inc.com
 * @basUrl /api/v1 
 */
declare class ChargeDataApi {
  /**
   * 根据用户名称和年份查询用电分布
   * @url /chart.json
   * @method get
   * @param user 查询的用户
   * @param year 查询的年份
   * @paramsSerializer indices
   */
  getChargeData(user: string, year: number): Promise<{ chart: IChargeData[] }>;
}

配置项说明

注释或注解

  • @kind 指定该函数接口使用 ajax 请求
  • @host 请求域名 可选, 不填写表示使用相对当前 web 应用
  • @baseUrl 基础相对路径 可选
  • @url 请求的接口 必选. 如果该值以 http(?):// 开头则不拼接 host/baseUrl
  • @method get/post/put/delete 基本的ajax请求类型
  • @param 函数参数注释,标准 ts/js 注释项. 可选,提高代码可读性
  • @paramsSerializer 可选. 可填 indicate | brackets | repeat | comma. 当 method 是 get 时生效, 用于指定如何序列化 get 方法的 query 参数. 详情参考 https://web.npm.alibaba-inc.com/package/qs

注解

  • @ajax.url(url: string) url
  • @ajax.willFetch(hooks: (reqData: AxiosRequestConfig) => Promise | AxiosRequestConfig)
  • @ajax.didFetch(hooks: (reqData: AxiosResponse) => Promise | AxiosResponse);

path variable

  • url 支持 path variable 形式如:
  /**
   * 根据用户 id 查询信息, 函数参数会作为 path_param 嵌入到 url 中
   * @url /{uid}/audiocards.json
   * @param uid 用户工号
  */
  getAudioCards(uidstring)Promise<TVideoCards>;

jsonp kind

基于 @ali/shimmer

declare class ChargeDataApi {
  /**
   * 根据用户名称和年份查询用电分布
   * @kind jsonp
   * @url /chart.json
   * @prefix __jp
   * @timeout 60000
   * @param user 查询的用户
   * @param year 查询的年份
   */
  getChargeData(user: string, year: number): Promise<{ chart: IChargeData[] }>;
}

注释或注解配置项

  • @prefix jsonp 的 callback 前缀
  • @timeout 超时时间
  • @name 回调函数名, 可选 不写时使用 prefix+(Date.now() + parseInt(Math.random() * 5))

mock 使用

  • 开发模式下(api-loader配置项 mock=true 即为开发模式. 参考 api-loader的说明), 如果 window.__mock__ = 1 或 class/method 有注释 @mock true, 则该接口会根据声明的 typescript 返回类型信息生成随机内容.
  • html 中如果引用了 mockjs, <script src="https://g.alicdn.com/code/lib/Mock.js/1.0.0/mock-min.js"></script> 则 string 类型支持注释项 @mockjs, 例如:
export type User = {
  /** @mockjs cname */
  name: string,
  /** @mockjs ctitle */
  title: string,
  /** @mockjs image */
  icon: string,
  /** @mockjs city */
  home: string,
  /** @mockjs email */
  email: string
}[]

更多 mockjs 项如 dataimage 等请参考 mockjs方法

changelog

0.1.5 ✨enum 类型支持; mock 增强支持数组定义长度 0.1.2 ✨ajax spread 和 path_variable 支持混用 ✨mock fix any 类型 mock 出错 0.1.0 ✨ajax 增加 spread 配置项 https://yuque.antfin-inc.com/recore/docs/api-loader#ae4dcc0a ✨ajax 增加 didCatch 配置项 0.0.11 ✨注解返回类型自适应,避免注解 class 和 function 报错 void 不适用于 xxx 0.0.9 ✨支持 mockjs ✨支持 path variable 0.0.8 ✨支持类型组合/类型继承 ✨增加注解支持, 增加注解 d.ts 声明

Package Sidebar

Install

npm i api-runtime

Weekly Downloads

0

Version

0.1.0

License

ISC

Unpacked Size

34.9 kB

Total Files

30

Last publish

Collaborators

  • javaer_ljw