返回信息问题
@GetMapping("/register")
@ResponseBody //sevlet的两个直接
if (password.length() < 8) {
System.out.println(ApiRestResponse.error(ImoocMallExceptionEnum.PASSWORD_TOO_SHORT));
return ApiRestResponse.error(ImoocMallExceptionEnum.PASSWORD_TOO_SHORT);
}
如图所示,为什么 我修改了 toString 方法的描述 比如将 status 改成 aaaaastatus 等等,,在sout方法中都可以看见修改了 但在响应中 居然自动修复好了???? 明明都是返回同样的对象,都是同样调用 toString方法,为什么在响应那里会完全不同,连前面的APIResponse字符串也屏蔽了 想不明白 ( 这是课程的一开始,没看见使用filter )
正在回答 回答被采纳积分+1
ApiRestResponse 里面的 toString 你改aaaa 然后印出来 跟 return 响应给前端 根本两件事情...
同学你好,
1、Spring Boot默认使用Jackson将Controller中返回的对象转换为json。
2、 在课程9:40处老师以Post方式访问localhost:8083/register,返回了
{"timestamp":"2020-02-29....", "message":"需要传String类型的userName", "status":"400", "path":"/register" 还有其它等等字段} 这是Springboot框架中返回的错误信息,status表示请求的状态。400表示没有找到/register路径,因为没有传入String类型的userName。所以这时程序并不会执行register()中的代码,也就不会返回ApiRestResponse对象。
同学访问/register时,应该传入userName和password参数,这样就会执行register()方法中的代码,返回ApiRestResponse对象了。
访问如下:
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
同学你好
很抱歉给同学带来不好的学习体验,
1、本项目是老师带着大家从0开始搭建的,过滤器相关内容是在 3-6 小节中讲解的
https://class.imooc.com/lesson/1414#mid=36768
以及转换成json字符串老师也有在这里讲解哦,在视频的第8分50秒左右
2、
{"status":10004,"msg":"不允许重名","data":null}
这个返回信息 到底是怎么来的? 课程一开始就能得到这东西??
同学说 课程一开始就能得到这东西 是指在哪里一开始就得到这个东西的呢?可以反馈一下具体的时间吗?以便于老师去核实一下,这个第一次出现是4-1小节在api文档中,是开发前事先规定好的。
在开发一个项目之前,会由架构师或者技术比较强的人首先搭起框架,写api等事情。
3、同学说在浏览器输入地址参数就返回了什么,同学是否是用的是教辅中提供的代码呢?
老师提供的代码是课程中写的代码,同学说的public class GlobalExceptionHandler 在4-6中会进行讲解,是还没有讲到哦。同学用的如果是下图这个代码,这个代码是本章节讲完的代码。
同学是不是点错了跳过了哪些视频呢?还是同学先看的代码呢?
同学自己探索的精神很棒,不过也建议同学不要着急,可以跟着视频一起敲一下代码。
如果有什么疑问,也可以随时在问答区提问。老师会帮你一起解决问题的。
祝学习愉快。
依旧是同样的问题
我觉得你们这课程真是坑(不动脑子的)新手 都不重0开始 要是没动脑子的人,还以为自己学会了
{"status":10004,"msg":"不允许重名","data":null}
这个返回信息 到底是怎么来的? 课程一开始就能得到这东西?? 也不加以说明
浏览器输入 localhost/register?username123&password=12345678
我打断点调试
首先过了
if (StringUtils.isEmpty(userName)) 和 if (password.length() < 8)
进入 userService.register(userName, password);
然后进入 userMapper.selectByName(userName) 返回User说明 重名
抛出异常 throw new ImoocMallException(ImoocMallExceptionEnum.NAME_EXISTED)
然后返回被调函数 即 UserController.register() ,
问题就在这个servlet方法,,它是直接抛出去 给spring框架处理的, 那它最后为什么能捕获到你们自定义的ImoocMallException,并且以json字符串的方式 {"status":10004,"msg":"不允许重名","data":null} 输出?? 这些在课程一开始根本没提到,你们到底写了什么代码??? 能不能从0开始,真让人烦??
在filter包里面看见了
果然是使用了filter , 原来课程不是从0开始演示的, 我就说视频里面为什么可以直接 转换,直接返回json字符串
//servlet的两个注解 (打太快,笔误)
- 参与学习 人
- 提交作业 9393 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星