文档
插件
response

@yunflyjs/yunfly-plugin-response

统一返回数据处理插件中间件

使用

  1. 安装依赖
yarn add @yunflyjs/yunfly-plugin-response
  1. config/config.plugin.ts 中申明插件
/**
 * yunfly plugin
 */
const plugins: {[key:string]: string}[] = [
  {
    name: 'response',
    package: '@yunflyjs/yunfly-plugin-response'
  }
];
// 
export default plugins;
  1. config/config.default.ts 中启用插件
config.response = {
  enable: true,
  succCode: 0, // 请求成功时返回code (默认0)
}

返回数据格式说明

JSON

当 content-type 为 text/plain 或 application/json 时返回 JSON 数据

// controller 
@Post('/response/json')
test(
    @BodyParam('name') name: string,
): string {
    return name || 'success';
}
// response
{
    "code": 0,
    "data": "success!"
}

Html

返回数据中需要增加 response_type=html 的参数

// controller 
@Post('/response/html')
test(
    @BodyParam('name') name: string,
): string {
    return {
        data: `
            <html>
                <body>00000</body>
            </html>
        `
        response_type: 'html',
    }
}
<!-- response -->
<html>
    <body>00000</body>
</html>

Txt

返回数据中需要增加 response_type=txt 的参数

// controller 
@Post('/response/txt')
test(
    @BodyParam('name') name: string,
): string {
    return {
        data: `txt response!`
        response_type: 'txt',
    }
}
<!-- response -->
txt response!

Xml

返回数据中需要增加 response_type=xml 的参数

// controller 
@Post('/response/xml')
test(
    @BodyParam('name') name: string,
): string {
    return {
        data: `
            <note>
            <to>George</to>
            <from>John</from>
            <heading>Reminder</heading>
            <body>Don't forget the meeting!</body>
            </note>
        `
        response_type: 'html',
    }
}
<!-- response -->
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

Xlsx

返回数据中需要增加 response_type=xlsx 的参数

// controller 
@Post('/response/xlsx')
test(
    @BodyParam('name') name: string,
): string {
    return {
        data: 'xxx',
        fileName: 'xxx.xlsx',
        response_type: 'xlsx',
    }
}