2.2.0 • Published 6 months ago

soapi-cli v2.2.0

Weekly downloads
16
License
MIT
Repository
-
Last release
6 months ago

soapi-cli

接口平台前端开发使用的 sdk 开发工具,用于将接口平台的 schema/route 自动化的生成前端 api 代码。

Install

npm install soapi-cli

or use yarn

yarn add soapi-cli

Usage

Configuration

在项目目录下创建.sdkrc.yml.sdkrc.json文件进行 sdk 配置

fieldtypedefaultdescription
*platformstring-接口平台地址
*outputstring-输出 sdk 的文件夹路径
nodebooleanfalse是否是 node 版本,node 版本 sdk 需要安装node-fetch
*applicationsobject[]-需要生成 sdk 的接口平台应用,详细结构请看下文

application

fieldtypedefaultdescription
*appIdnumber-应用 id
*tokenstring-应用的授权 token

example

YAML 格式配置如下:

platform: 'http://localhost:4003'
output: src/apis/
node: true
applications:
  - appId: 0
    token: 'yourToken'

JSON 格式配置如下:

{
  "platform": "http://localhost:4003",
  "output": "src/apis/",
  "node": false,
  "applications": [
    {
      "appId": 0,
      "token": "yourToken"
    }
  ]
}

CLI

commanderdescription
npx soapi-cli upgrade生成/升级 sdk
optionsdescriptionexample
--force强制更新全部 APInpx soapi-cli upgrade --force
-h --helpshow helpnpx soapi-cli -h
-v --versionshow soapi-cli versionnpx soapi-cli -v
--debug展示 debug 信息npx soapi-cli --debug trace

sdk 的使用方法

import getArticle from 'sdk/appName.get.api.article'
import app from 'sdk/appName'
import {
  setEnv,
  checkSchema,
  catchError,
} from '@soapi/middlewares'


/**
 * 全局中间件配置
 * 所有api接口调用时都会执行
 */
app
  /**
   * 配置接口运行环境
   * 不同的运行环境会调用不同的url
   * 各环境url配置请到接口平台,sdk插件中配置
   * 如果使用中间件进行设置,则默认优先取SDK_ENV,其次取NODE_ENV
   * 如果无法取得有效值,默认为`prod`环境。
   */
  .use(setEnv(process.env.NODE_ENV))
  .use(catchError(error => {
    console.log('what the fuck!')

    /**
     * 这里如果不抛出错误
     * sdk会认为您已经将错误正确的处理,并将继续执行
     * 这将导致sdk的api被调用时候,向外抛出的错误被中间件拦截并处理
     * 调用的地方将无法得知错误的发生,并按照正常调用处理
     */
    throw error
  }))

// use in saga
try {
  /**
   * 根据文档平台定义和入参对象的key自动设置headers,body,query和params
   * 入参对象中未匹配到的key将会放入body对象中
   */
  yield getArticle({ articleId: 1 })
} cache (e) {
  // handle error
}

// 指定body,支持链式调用
yield getArticle().send({ articleId: 1 })

// 指定headers,支持链式调用
yield getArticle().set('Content-Type', 'application/json').set({ Token: 'token' })

// 指定query,支持链式调用
yield getArticle().query('pageSize', 10).query({ current: 1 })

// 指定params,支持链式调用
yield getArticle().params('id', 1).params({ pid: 1 })

@soapi/middlewares 提供一些通用的 middleware,详见:http://gitlab.shein.com/nj_shein_fed/soapi/tree/master/modules/middlewares

工作流程

start=>start: 开始
end=>end: 结束
checkPackage=>condition: 是否安装soapi-cli
installPackage=>operation: 安装soapi-cli
editConfig=>operation: 编辑配置文件

save=>operation: 保存配置
runCli=>operation: 运行cli
checkField=>condition: CLI: 检查配置文件
checkApplicationSDKPlugin=>condition: 检查应用是否安装了sdk插件
alertInstalSDKPlugin=>operation: 警告“应用需要启动sdk服务插件,以配置应用的运行环境信息”
downloadSDK=>subroutine: CLI: 下载sdk需要的应用信息(需要授权key和applicationId)
至output目录
importSDK=>operation: import 'output/appName.xxx.xxx'

start->checkPackage(yes)->runCli

checkPackage(no, bottom)->installPackage->editConfig
editConfig->save
save->runCli->checkField(no)->editConfig
checkField(yes)->checkApplicationSDKPlugin(no)->alertInstalSDKPlugin->end
checkApplicationSDKPlugin(yes)->downloadSDK->importSDK->end

注意事项

  1. sdk 自动生成的代码依赖于fetchSymbol,如果运行环境不支持,请添加相应的 polyfill。
  2. sdk生成代码需要依赖 sdk-service 插件提供一些额外的配置信息。(如:不同环境的应用 url)请先在接口平台的应用中启动SDK插件
2.3.0-beta.0

6 months ago

2.3.0-beta.1

6 months ago

2.2.0

7 months ago

2.2.0-beta.0

8 months ago

2.0.15

11 months ago

2.1.1

11 months ago

2.0.14

12 months ago

2.1.0

12 months ago

2.0.13

1 year ago

2.0.11

1 year ago

2.0.12

1 year ago

2.0.9

2 years ago

2.0.8

2 years ago

2.0.10

2 years ago

2.0.5

3 years ago

2.0.4

3 years ago

2.0.7

3 years ago

2.0.6

3 years ago

2.0.3

3 years ago

2.0.2

3 years ago

2.0.1

3 years ago

2.0.0

3 years ago

1.1.73

3 years ago

1.1.72

3 years ago

1.1.71

3 years ago

1.1.70

3 years ago

1.1.69

3 years ago

1.1.67

3 years ago

1.1.66

3 years ago

1.1.65

3 years ago

1.1.64

3 years ago

1.1.68

3 years ago

1.1.63

4 years ago

1.1.62

4 years ago

1.1.59

4 years ago

1.1.61

4 years ago

1.1.60

4 years ago

1.1.56

4 years ago

1.1.58

4 years ago

1.1.57

4 years ago

1.1.55

4 years ago

1.1.54

4 years ago

1.1.53

4 years ago

1.1.52

4 years ago

1.1.51

4 years ago

1.1.50

4 years ago

1.1.44

5 years ago

1.1.42

5 years ago

1.1.41

5 years ago

1.1.40

5 years ago

1.1.38

5 years ago

1.1.37

5 years ago

1.1.36

5 years ago

1.1.39

5 years ago

1.1.35

5 years ago

1.1.34

5 years ago

1.1.33

5 years ago

1.1.32

5 years ago

1.1.31

5 years ago

1.1.30

5 years ago

1.1.29

5 years ago

1.1.28

5 years ago

1.1.27

5 years ago

1.1.26

5 years ago

1.1.25

5 years ago

1.1.24

5 years ago

1.1.23

5 years ago

1.1.22

5 years ago

1.1.21

5 years ago

1.1.20

5 years ago

1.1.19

5 years ago

1.1.18

5 years ago

1.1.16

5 years ago

1.1.15

5 years ago

1.1.13

5 years ago

1.1.12

5 years ago

1.1.10

5 years ago

1.1.9

5 years ago

1.1.8

5 years ago

1.1.7

5 years ago

1.1.6

5 years ago

1.1.5

5 years ago

1.1.4

5 years ago

1.1.3

5 years ago

1.1.2

5 years ago

1.1.1

5 years ago

1.0.114

5 years ago

1.0.116

5 years ago

1.0.115

5 years ago

1.0.112

5 years ago

1.0.113

5 years ago

1.0.109

5 years ago

1.0.110

5 years ago

1.0.106

5 years ago

1.0.105

5 years ago

1.0.101

5 years ago

1.0.100

5 years ago

1.0.99

6 years ago

1.0.98

6 years ago

1.0.97

6 years ago

1.0.95

6 years ago

1.0.96

6 years ago

1.0.94

6 years ago

1.0.93

6 years ago

1.0.92

6 years ago

1.0.91

6 years ago

1.0.90

6 years ago

1.0.87

6 years ago

1.0.86

6 years ago

1.0.84

6 years ago

1.0.83

6 years ago

1.0.85

6 years ago

1.0.82

6 years ago

1.0.81

6 years ago

1.0.79

6 years ago

1.0.78

6 years ago

1.0.80

6 years ago

1.0.77

6 years ago

1.0.76

6 years ago

1.0.75

6 years ago

1.0.74

6 years ago

1.0.73

6 years ago

1.0.72

6 years ago

1.0.71

6 years ago

1.0.70

6 years ago

1.0.69

6 years ago

1.0.68

6 years ago

1.0.67

6 years ago

1.0.66

6 years ago

1.0.65

6 years ago

1.0.64

6 years ago

1.0.62

6 years ago

1.0.61

6 years ago

1.0.60

6 years ago

1.0.59

6 years ago

1.0.58

6 years ago

1.0.57

6 years ago

1.0.56

6 years ago

1.0.55

6 years ago

1.0.54

6 years ago

1.0.53

6 years ago

1.0.52

6 years ago

1.0.51

6 years ago

1.0.50

6 years ago

1.0.49

6 years ago

1.0.47

6 years ago

1.0.46

6 years ago

1.0.45

6 years ago

1.0.43

6 years ago

1.0.42

6 years ago

1.0.41

6 years ago

1.0.40

6 years ago

1.0.39

6 years ago

1.0.35

6 years ago

1.0.34

6 years ago

1.0.33

6 years ago

1.0.32

6 years ago

1.0.31

6 years ago

1.0.30

6 years ago

1.0.29

6 years ago

1.0.28

6 years ago

0.0.1

6 years ago