Release 3.17.0
· 阅读需 3 分钟
升级请参考 如 何更新 Midway 中描述,请不要单独升级某个组件包。
本次 3.17 版本,我们增加了一些新的特性,以及修复了一些问题,主要有:
- 1、使用 替换原有的上传组件
- 2、
busboy
上传的数据中的filedName
,在流式模式下不再提供 - 3、增加了一个新的服务端响应格式
- 4、class 中间件现在可以复用了
下面是更为细节的描述。
定制服务端响应格式
在 3.17 版本中,我们增加了一个新的特性,可以定制服务端的响应的通用格式。
在之前的版本中,我们依靠中间件和过滤器来实现这个功能,但是这种方式有一些局限性,代码也会分散在不同的地方。
如果由一个统一的可调整的返回逻辑,可能更为合理,为此,添加了 ServerResponse
和 HttpServerResponse
的实现。
import { ServerResponse, HttpServerResponse } from '@midwayjs/core';
@Controller()
export class HomeController {
@Inject()
ctx: Context;
@Get('/')
async index() {
return new HttpServerResponse(this.ctx).json({
success: true,
data: 'hello world',
});
}
}
HttpServerResponse
是 ServerResponse
的一个 Http 实现,提供了一些常用的方法。
最为特殊的是他可以针对不同的数据格式,设置成功和失败的模版。
比如针对 JSON 数据,框架提供了以下的默认结构。
HttpServerResponse.JSON_TPL = (data, isSuccess) => {
if (isSuccess) {
return {
success: 'true',
data,
};
} else {
return {
success: 'false',
message: data || 'fail',
};
}
};
这样,当返回 JSON 格式时,就会按照这个模版进行返回。
// 失败的返回
return new HttpServerResponse(this.ctx).fail().json('hello world');
就会获取到以下的数据。
{
success: 'false',
message: 'hello world',
}
此外,基于这个模式,也同时实现了 SSE 的响应返回,也有其他的一些数据结构的返回,更多的内容,请参考 细节文档。