跳到主要内容

输出数据

输出数据指的是返回成功结果或失败的信息,在之前的章节中你已经看到了如何输出一个结果,直接在控制器中 return 结果即可, 但是需要注意的是,如果使用空 return 或者不 return 将会得到一个 404 状态码,除非之前给 ctx.body 设置了值。

输出的结果结构本身是可以被再次包装的,配置 resutl 模块的 success 方法即可。

import { mapping, Context } from 'zenweb';

export class TestController {
@mapping()
test1() {
return 'OK'; // 客户端将会得到 { data: 'OK' }
}

@mapping()
test2() {
// 不做任何返回,客户端将会得到一个 404 错误状态
}

@mapping()
test3(ctx: Context) {
ctx.success('OK'); // 也可以使用 success 方法返回结果
ctx.success('NOT OK'); // 但是需要注意的是,success 方法并不会结束执行,后续再次调用会覆盖之前的结果
// ctx.success 方法本质上就是给 ctx.body 设值,只是多了一层结果包装
}
}

对于错误输出,我们推荐使用 fail() 功能来终止业务流程并输出信息。

import { mapping, fail } from 'zenweb';

export class TestController {
@mapping()
test1() {
fail(100);
}

@mapping()
test2() {
fail('这是一个错误');
}

@mapping()
test3() {
fail(1111, '带有错误代码的错误信息');
}

@mapping()
test4() {
fail(2222); // 只输出错误代码
}

@mapping()
test5() {
fail({
code: 123,
message: '自定义错误细节',
data: '一些错误数据输出',
});
}
}
提示

fail() 方法本身是一个异常抛出函数。所以可以在代码的任何地方使用不需要 return 就可阻止程序继续执行。