温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
今天只追一个问题,Controller里只写了一句owner,为什么客户端最终收到的是一个完整http response?先别急着看controller请求,先经过tomcat线程池,再进入filter链,最后才交给Dis统一分发。那dispatch Fla怎么知道该调用哪个controller?它内部靠handler mapping案URL和方法匹配处理器。匹配到方法后,参数不是凭空来的。Argument会读取请求参数、路径变量或请求体,再转成d to对象。如果传了非法参数怎么办?B validation会在进入service前校验d to失败,直接抛出method argument valid exception.这里要区分异常类型。参数错误返回400404是找不到资源,业务异常通常返回409或422500,只留给未捕获异常。
01:05
Controller返回owner对象后,Message converter开始工作。Jackson负责把Java对象序列化成Json字符串。那响应头里的content type和状态码是谁设置的?还是message converter配合responseity或at response body一起完成。统一异常处理不能只返回一句error,建议用problem detail结构,把type title status detail都带上前端才好处理。所以完整链路是httpm filter handle map control validation response.想真正掌握,就主动制造参数错误,404业务异常和500在debug里观察每一层调用站。最小落地从统一异常处理开始。
我来说两句