0.1.9 • Published 3 months ago

apaas-request v0.1.9

Weekly downloads
-
License
ISC
Repository
-
Last release
3 months ago

apaas-request

apaas-request 是一个前端工具库,主要用于 aPaaS 低代码平台组建开发的请求相关的操作

封装了一些自定义组件的常用方法。不常用的也没有剔除,并附带上面,使用者依旧可以使用原生的方法。

  • 亲民:设想使用 axios 的写法使用请求
  • 简便:安装一个包覆盖 aPaaS 所有前端所包含的 skd
  • 一统:请求方式与 node 端服务相同。链式调用。

2.5 更新暴露出 application 对标 云函数的 application

由于组建的请求 SDK 不能完全覆盖云函数的 SDK,所以在使用的时候,请根据 ts 方法暴露出的方法改变。使用是跟云函数 SDK 一致的

  • application.data.object

    • limit
    • select
    • where 使用 application.operator
      • contain
      • eq
      • neq
      • isAnyOf
    • find
    • findOne
    • findStream
  • application.metadata.object

    • getField
    • getFields
  • application.flow.execute

  • application.function().invoke()

简单对比。优势在我

以前需要安装

npm i  @byted-apaas/data  @byted-apaas/flow @byted-apaas/i18n @byted-apaas/global-variable @byted-apaas/function

现在需要安装

npm i apaas-request

以前使用的方法。

import {
  batchUpdateRecords,
  createRecord,
  datasetsDescribe,
  datasetsFieldsDescribe,
  deleteRecord,
  downloadFile,
  objectDescribe,
  searchObjectsDescribe,
  searchRecords,
  uploadFile,
} from "@byted-apaas/data";

// 光一个 data 的 api 就这么多并且各种方法的传递参数又不一致。

searchObjectsDescribe("xxx");

现在使用的方法

import trequest from "trequest";
// 优雅,实在是太优雅了
trequest.oaxios.get({ apiName: "xxx", params: { xxx: "xxx" } });

yes is future

拦截器概念

import { OAxios } from "trequest";
// 设置请求拦截器
OAxios.request.use(
  (params) => {
    // TODO: 处理请求参数,比如:给每个参数都加上一个 page_size 。
    console.log(params);
  },
  (err) => {
    console.log(err);
  }
);

// 设置响应拦截器
OAxios.response.use(
  (response) => {
    // TODO: 处理响应回来的数据,比如:解构一些参数拿到
    console.log(response);
  },
  (err) => {
    console.log(err);
  }
);

// 请求封装
export const OAxios = ({ method, apiName, params }) => {
  return OAxios[method]?.({
    apiName,
    params: {
      ...params,
      field: ["number"],
    },
  });
};

// 使用
OAxios({
  method: "get",
  apiName: "object_vl8kepdgoka",
  params: {
    fields: ["number"],
  },
}).then((res) => {
  console.log("success", res);
});

单个拦截器

如果没有设置方法对应的请求,默认是使用到当前实例的请求都会经过改拦截器,很多地方我们并不需要这样,所以有单个拦截器的诞生。

import { flow } from "trequest";

const config = { apiName };

const successResponse = (response) => {
  let data = response.data.issue;
  data = schemaValueHandler(data); // 这个方法你可自行处理自己的逻辑
  return data;
};

const errorResponse = (err) => {
  console.log("err", err);
  return err;
};

const interceptor = flow.response.use(
  { ...config, handler: successResponse },
  { ...config, handler: errorResponse }
);

// 删除拦截器的两种方式
flow.response.eject(successResponse, errorResponse);
flow.response.eject(interceptor);

使用手册

使用此库依旧需要基础知识铺垫,主要是参数的了解。比如:@byted-apaas/data 的 api 传递参数。 这个库只是基于这些上面做了一个统一的封装。

OAxios 参数介绍。

所有的 data 字段类型都以原生的对象为基准。如果不清楚可查看 官方文档

get 方法

get 中,封装了三个对象方法

  1. searchRecords 怎么通过 get 使用呢?

使用: 传入 apiName 和参数 params 即可。

  1. objectDescribe 怎么通过 get 使用呢?

使用:在调用 get 方法的时候,在 config 参数中携带,isDescribe: true 这个字段,调用的就是 objectDescribe 了。

  • apiName: 必填,对象 apiName。

  • 参数(params):params 参数中,只需传入 fields。

  • 配置(config): config.isDescribe = true;设置为 objectDescribe

  1. downloadFile 怎么通过 get 使用呢?

使用:在调用 get 方法的时候,在 params 参数中携带,token:'xxx' 这个。

  • apiName: 可不填

  • 参数(params):

    1. token 必填,剩余参数都会传入到对应的选项中。
    2. onProgress,用于接收进度。
    3. name 文件名称

这里需要花点笔墨来说一下,调用下载的时候,给封装成了一个 Promise ,而这个 Promise 返回的结果是对象。这个对象有个 result 的字段,result 也是一个 promise,这个 promise 就是最后返回的数据。为什么会这样,因为这个 api 方法调用就会返回一些操作方法,供开发者使用,而成功的结果是一个回调函数,等成功之后调用回调,所以 result 的 promise 是在等回调成功。

post

在 post 请求中封装了 uploadFile、createRecord

post 接受一个对象, 对象里面 apiName data options。

  1. uploadFile 上传文件
  • apiName 必填
  • data 必须为 File 类型否则校验不过
  • options 可选,是原本 uploadFile 的配置
  1. createRecord 创建记录
  • apiName 必填
  • data 可以为对象,可以为数组
  • options 不填

patch 方法

封装了 batchUpdateRecords 更新方法

传入一个对象 apiName data

  1. batchUpdateRecords 更新记录
  • apiName 必填
  • data 数组

delete 方法

封装了 deleteRecord 删除方法

传入一个对象 apiName data

  1. deleteRecord 删除记录
  • apiName 必填
  • data 是一个对象里面需要 recordId 字段

flow 参数介绍。

所有的 params 字段类型都以原生的对象为基准。如果不清楚可查看 官方文档

-- 标识为官方文档参数类型

get 的用法

封装了 getExecutionList、getExecutionInfo、getExecutionParams

传入的参数 apiName、params

  1. getExecutionList 获取流程列表
  • apiName 必填
  • params --
  1. getExecutionInfo 获取执行流程信息
  • apiName 必填 number 类型
  1. getExecutionParams 获取流程参数
  • apiName 必填

post 的用法

封装了 startExecution

传入的参数 apiName、params

  1. startExecution 调用流程
  • apiName 必填
  • params --

delete 方法

封装了 revokeExecution

传入的参数 apiName、reason

  1. revokeExecution
  • apiName 必填
  • reason --

func 的删除介绍

所有的 params 字段类型都以原生的对象为基准。如果不清楚可查看 官方文档

需要开启允许前端调用

  1. invokeFunction
  • apiName 必填
  • params --

Other 方法介绍

trans 方法

trans.localegetCurrentLocale 的返回值 trans.i18n 传入一个对象, 对象的类型, 在使用的时候只需要拿到

// a.ts 定义
 const languageType =  {
    key:{
      zh_CN:"干得好,伙计",
      en_US:"god job man",
    }
  }
  export const language = trans.i18n(languageType)
  // b.ts 使用
 <div>{language.key}</div>

globalVar 方法

用法跟原生的一样。这里不做多展示,请查看文档。 getVar -- getDescribe --

项目所涉及到的包。

  • "@byted-apaas/data",
  • "@byted-apaas/flow",
  • "@byted-apaas/i18n",
  • "@byted-apaas/global-variable",
  • "@byted-apaas/function",
  • "lodash.isequal",