错误信息返回的疑问
来源:5-11 注册API-格式校验-抽离中间件

Bingyuan
2019-11-19
老师,在validator中间件中,如果校验出错,出错的信息是这么返回的
if (err) {
ctx.body = new ErrorResModel(validateFailInfo);
return;
}
而在控制器中,成功和失败的信息,又是这么写的
if (result) {
return new SuccessResModel(result);
} else {
return new ErrorResModel(registerUserNameNotExistInfo);
}
都是把数据返回,为什么上面要写成返回到response中,我试了如果不这样写会报错,而下面可以直接返回呢?我基础比较差,不是太懂这块的原因,请解答下,谢谢!
写回答
2回答
-
首先,你提的问题,文字描述和代码格式非常清晰。markdown 语法过关,这是程序猿的必备素质。点赞。
你第一段代码中,ctx.body = xxx ,是直接返回 http 请求了。即直接将错误信息返回给客户端了。
你第二段代码中,return xxx 是 JS 函数的中的返回,你要看这 return xxx 到底返回给了谁?谁接收了?接收之后又做了什么处理?—— 通过这个思路,你去找,肯定能找到答案。
实在找不到,再来回复我。
012019-11-22 -
Bingyuan
提问者
2019-11-22
明白了,谢谢老师,路由上直接写的中间件调用了controller,所以controller里返回的数据是赋值给了这个中间件,然后中间件再负责返回response给客户端。
而路由调用的其他抽离的中间件,由中间件把response直接返回给客户端了。
归根结底,是中间件负责给response的body赋值。
112019-11-22
相似问题