@raytonx/nest-response
v0.3.0
Published
Response envelope module and helpers for NestJS applications.
Readme
@raytonx/nest-response
NestJS 应用的统一响应结构模块与工具包。
English version: README.en.md
安装
pnpm add @raytonx/nest-responsenpm i @raytonx/nest-responseyarn add @raytonx/nest-response快速开始
全局注册响应转换拦截器与异常过滤器:
import { Module } from "@nestjs/common";
import { ResponseModule } from "@raytonx/nest-response";
@Module({
imports: [
ResponseModule.forRoot({
isGlobal: true,
}),
],
})
export class AppModule {}Controller 返回值会被包装为统一结构:
{
id: 1,
name: "RaytonX"
}返回:
{
"success": true,
"code": "OK",
"message": "success",
"data": {
"id": 1,
"name": "RaytonX"
}
}抛出的 Nest HTTP 异常也会被包装为统一错误结构:
throw new BadRequestException("Invalid request");返回:
{
"success": false,
"code": "BAD_REQUEST",
"message": "Invalid request",
"data": null
}也可以直接使用 ResponseBuilder:
import { ResponseBuilder } from "@raytonx/nest-response";
const response = ResponseBuilder.success({
id: 1,
name: "RaytonX",
});返回:
{
"success": true,
"code": "OK",
"message": "success",
"data": {
"id": 1,
"name": "RaytonX"
}
}模块注册
ResponseModule.forRoot({
isGlobal: true,
successCode: "OK",
successMessage: "success",
errorCode: "INTERNAL_SERVER_ERROR",
errorMessage: "Internal server error",
});配置项:
isGlobal/global:映射到 Nest 动态模块的global配置。successCode:成功响应默认code,默认值为OK。successMessage:成功响应默认message,默认值为success。errorCode:错误响应默认code,默认按 HTTP 状态码转换,例如400转为BAD_REQUEST。errorMessage:错误响应默认message。未配置时,HTTP 异常优先使用 Nest 异常响应中的message,未知异常使用Internal server error。wrapExistingEnvelope:是否继续包装已经是统一结构的返回值,默认false。
成功响应
ResponseBuilder.success(data);
ResponseBuilder.success(data, {
code: "CREATED",
message: "created",
});默认成功结构:
{
success: true,
code: "OK",
message: "success",
data
}错误响应
ResponseBuilder.error();
ResponseBuilder.error({
code: "BAD_REQUEST",
message: "Invalid request",
});默认错误结构:
{
success: false,
code: "INTERNAL_SERVER_ERROR",
message: "Internal server error",
data: null
}ResponseExceptionFilter 会自动处理 HTTP 异常与未知异常:
- HTTP 异常使用异常状态码,例如
BadRequestException返回400。 - 默认
code由 HTTP 状态码转换得到,例如400转为BAD_REQUEST。 - 默认
message优先读取 Nest 异常响应体中的message;数组消息会合并为字符串。 - 未知异常返回
500,并使用默认错误文案,避免暴露内部错误信息。
工具方法
ResponseBuilder.isEnvelope(value):判断值是否已经是统一响应结构。ResponseBuilder.httpStatusToCode(status):将 HTTP 状态码转换为状态文本,例如400转为BAD_REQUEST。
导出内容
ResponseModuleTransformInterceptorResponseExceptionFilterResponseBuilderResponseEnvelope<T>ResponseErrorEnvelopeResponseBuilderOptionsResponseModuleOptions
