跳到主要内容

result - 结果处理

控制器返回结果统一处理,默认返回格式为 JSON

依赖模块

  • @zenweb/messagecode

配置项

配置项类型默认值功能
failCodenumber默认失败代码
failStatusnumber422默认失败HTTP状态码
json.success(ctx: Context, data?: unknown): unknownreturn { data }成功结果包装
json.fail(ctx: Context, err: ResultFail): unknownreturn { err.code, err.data, err.message }错误结果包装
exposeUnexpectedbooleanfalse暴露意外错误信息。可以设置环境变量 EXPOSE_UNEXPECTED==1 开启
unexpectedStatusnumber500意外错误HTTP状态码

Core 挂载项

Context 挂载项

挂载项类型功能
success(data?: unknown): Promise成功,输出结果。(注意:代码会继续执行),如果需要等待结果包装需要 await

全局方法

方法类型功能
fail(code: string \| number, params?: ParamMap): never失败,输出错误信息并终止代码执行(通常用法)
fail(detail: ResultFailDetail): never失败,输出错误信息并终止代码执行(更多选项)

可注入对象

  • singleton
    • RenderManager

演示

import { mapping, fail } from 'zenweb';

export class ResultController {
@mapping()
hello() {
return 'Hello';
}

@mapping()
error() {
fail('error info'); // 在调用 fail 方法后会直接跳出方法并输出
console.log('这行不会执行');
}
}

fail 配置

配置 message-codes.json

{
"400": "这是一个错误代码描述",
"user.username.short: "您的用户名太短:{username}"
}

失败输出

fail(400); // 使用错误代码数值,绝对匹配
fail('user.username.short', { username: 'AAA' }); // 使用错误代码字符串,递归匹配
// 完全自定义
fail({
code: 123,
message: "自定义",
status: 200,
});