https://github.com/zhusiqing/interface_bridge
接口字段适配器
https://github.com/zhusiqing/interface_bridge
Last synced: over 1 year ago
JSON representation
接口字段适配器
- Host: GitHub
- URL: https://github.com/zhusiqing/interface_bridge
- Owner: zhusiqing
- License: mit
- Created: 2022-06-16T09:12:05.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2023-12-14T07:19:31.000Z (over 2 years ago)
- Last Synced: 2024-03-15T09:22:24.166Z (over 2 years ago)
- Language: TypeScript
- Size: 242 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# interface-bridge
字段适配器,解决前后端接口之间字段映射问题。
## 安装
```bash
# npm
npm i interface-bridge
# yarn
yarn add interface-bridge
# pnpm
pnpm add interface-bridge
```
## 用法
```javascript
import InterfaceBridge from 'interface-bridge';
const map = {
frontendField: 'backendField',
left: 'right'
}
const bridge = new InterfaceBridge(map, {
// 默认为false, 设置未true后将过滤掉非映射关系中的字段
isExact: false
})
interface HandleDataType {
backendField: string;
right: number;
}
bridge.pickData({
frontendField: '123',
left: 321
})
/*
{
backendField: "123"
right: 321
}
*/
```
## 配置参数
#### options.isExact: boolean
默认为false, 设置为true后将过滤掉非映射关系中的字段
```javascript
import InterfaceBridge from 'interface-bridge';
const map = {
frontendField: 'backendField',
left: 'right'
}
const bridge = new InterfaceBridge(map, {
// 默认为false, 设置未true后将过滤掉非映射关系中的字段
isExact: true
})
interface HandleDataType {
backendField: string;
right: number;
test?: number
}
bridge.pickData({
frontendField: '123',
left: 321,
test: 123
})
/*
{
backendField: "123",
right: 321
}
*/
const bridge = new InterfaceBridge(map, {
isExact: false
})
bridge.pickData({
frontendField: '123',
left: 321,
test: 123
})
/*
{
backendField: "123",
right: 321,
test: 123
}
*/
```
## 方法
#### omitData\(data, keys): T
将前端的数据转换成后端要的数据
|参数名|类型|必选|说明|
|:---- |:-- |:---|:----- |
|data |object| 是 | 第几页,默认 1 |
|keys |string[]| 否 | 过滤掉的数据,注意是转换后的数据的key值 |
> 返回值: `object` 转换后的数据
**示例**
```javascript
import InterfaceBridge from 'interface-bridge';
const map = {
frontendField: 'backendField',
left: 'right',
abc: 'ABC'
}
const bridge = new InterfaceBridge(map)
bridge.omitData({
frontendField: '123',
left: 321
})
/*
{
backendField: "123",
right: 321,
ABC: undefined
}
*/
bridge.omitData({
frontendField: '123',
left: 321
}, ['ABC'])
/*
{
backendField: "123",
right: 321
}
*/
```
#### omitReverseData\(data, keys): T
将后端的数据转换成前端要的数据
|参数名|类型|必选|说明|
|:---- |:-- |:---|:----- |
|data |object| 是 | 第几页,默认 1 |
|keys |string[]| 否 | 过滤掉的数据,注意是转换后的数据的key值 |
> 返回值: `object` 转换后的数据
**示例**
```javascript
import InterfaceBridge from 'interface-bridge';
const map = {
frontendField: 'backendField',
left: 'right',
abc: 'ABC'
}
const bridge = new InterfaceBridge(map)
bridge.omitReverseData({
backendField: '123',
right: 321
})
/*
{
frontendField: "123",
left: 321,
abc: undefined
}
*/
bridge.omitReverseData({
backendField: '123',
right: 321
}, ['abc'])
/*
{
frontendField: "123"
left: 321
}
*/
```
#### pickData\(data, keys): T
将前端的数据转换成后端要的数据
|参数名|类型|必选|说明|
|:---- |:-- |:---|:----- |
|data |object| 是 | 第几页,默认 1 |
|keys |string[]| 否 | 需要的数据,注意是转换后的数据的key值 |
> 返回值: `object` 转换后的数据
**示例**
```javascript
import InterfaceBridge from 'interface-bridge';
const map = {
frontendField: 'backendField',
left: 'right',
abc: 'ABC'
}
const bridge = new InterfaceBridge(map)
bridge.pickData({
frontendField: '123',
left: 321
})
/*
{
ABC: undefined,
backendField: "123",
right: 321
}
*/
bridge.pickData({
frontendField: '123',
left: 321
}, ['backendField'])
/*
{
backendField: "123"
}
*/
```
#### pickReverseData\(data, keys): T
将后端的数据转换成前端要的数据
|参数名|类型|必选|说明|
|:---- |:-- |:---|:----- |
|data |object| 是 | 第几页,默认 1 |
|keys |string[]| 否 | 需要的数据,注意是转换后的数据的key值 |
> 返回值: `object` 转换后的数据
**示例**
```javascript
import InterfaceBridge from 'interface-bridge';
const map = {
frontendField: 'backendField',
left: 'right',
abc: 'ABC'
}
const bridge = new InterfaceBridge(map)
bridge.pickReverseData({
backendField: '123',
right: 321
})
/*
{
abc: undefined,
frontendField: "123",
left: 321
}
*/
bridge.omitReverseData({
backendField: '123',
right: 321
}, ['frontendField'])
/*
{
frontendField: "123"
}
*/
```