# @soapi/middlewares

> 前端sdk中间件

Latest version **2.0.9** (published 2023-10-20) · MIT license · 0 weekly downloads

## Install

```sh
npm install @soapi/middlewares
pnpm add @soapi/middlewares
yarn add @soapi/middlewares
bun add @soapi/middlewares
```

## Health

**Score 20/100 (F)** — status: abandoned.

Positive: esm support; no vulnerabilities.

Warnings: low downloads; no types.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.0.9 |
| Published | 2023-10-20 |
| First published | 2019-06-06 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | ESM + CommonJS |
| Node | >=8.9.4 |
| Dependencies | 2 |
| Unpacked size | 31.7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Maintainers | zbqsfs, lobos, val.istar.guo, danielchenn, xiongchen |

## Links

- npm: https://www.npmjs.com/package/@soapi/middlewares
- npm.io page: https://npm.io/package/@soapi/middlewares

## Dependencies (2)

- [ajv](https://npm.io/package/ajv.md) ^6.10.0
- [lodash](https://npm.io/package/lodash.md) ^4.17.15

## Recent versions

- 2.0.9 (latest) — 2023-10-20
- 2.0.8 — 2023-09-01
- 2.0.7 — 2022-11-30
- 2.0.6 — 2022-10-19
- 2.0.5 — 2022-10-17
- 2.0.4 — 2022-10-12
- 2.0.3 — 2022-09-13
- 2.0.2 — 2022-06-30
- 2.0.1 — 2022-06-10
- 2.0.0 — 2022-06-09
- 1.1.73 — 2022-06-02
- 1.1.72 — 2022-06-02
- 1.1.71 — 2022-06-02
- 1.1.70 — 2022-04-11
- 1.1.69 — 2022-03-28
- … 143 more at https://npm.io/package/@soapi/middlewares/versions

## README

# @soapi/middlewares

<!-- description -->
@soapi/sdk常用中间件。
<!-- description -->

## Install

```shell
npm install @soapi/middlewares
```

or use yarn

```shell
yarn add @soapi/middlewares
```

## Usage

<!-- usage -->
### compose(middlewares)

参数是一个`middleware`数组。将多个middleware组合成一个新的middleware。

### checkSchema([errorHandler])

校验接口参数和返回值是否符合接口平台定义的规范。
errorHandler是一个可选参数，处理校验错误。如果不穿此参数，错误会被抛出。


### setEnv()

设置环境变量，影响最终请求的url地址。

### setHeader(key, value)

设置请求的Header。

### catchError(errorHandler)

捕获错误并对错误进行处理。catchError只会处理后面中间件抛出的错误，`app.use`与`koa`的洋葱模型一致。

```javascript
app.use(catchError(error => {
    console.log('what the fuck!')

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

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

<!-- usage -->

<!-- supplement -->

## Q&A

### 错误上报

```javascript
import { sendError } from 'sheinq'
import { catchError } from '@soapi/middlewares'

const reportErrorMiddleware = catchError(error => {
  sendError(error)
  throw error
})

app
  .use(reportErrorMiddleware)
  // checkSchema写在后面，report
  .use(checkSchema())
```
<!-- supplement -->

---
_Source: https://npm.io/package/@soapi/middlewares · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
