HTTPStatus400(HTTP400状态码)
异常信息记录_2019-11-16
HTTP Status 400 – 错误的请求
前两天写了⼀个关于时间格式转换的400错误的请求的博客,给公司的⼤佬看了⼀下,被吐槽……特此修改⼀下。
1、问题分析
HTTP 400的状态码,可以统称前后台对应不上,主要有两种形式:
⼀、bad request 意思是 “错误的请求”
>==Type== Status Report
>==描述==由于被认为是客户端对错误(例如:畸形的请求语法、⽆效的请求信息帧或者虚拟的请求路由),服务器⽆法或不会处理当前请求。
> Apache Tomcat/8.5.46
通常产⽣问题的原因也有两个:
①前端传的参数类型或者名称与后台接收参数的实体类的属性类型或者名称不⼀致;
②前端提交ajax请求的数据应该是json格式字符串的,但是却没有将对象转换成json格式的字符串。
⼆、invalid hostname 意思是 “不存在的域名/⽆效的主机名”。
但是基于本仙⼥⽬前并没有遇到过这种情况,所以等以后遇到了再来补充。
2、解决⽅案
①前端传的参数类型或者名称与后台接收参数的实体类的属性类型或者名称不⼀致
string转date的方法
前后台参数类型或者名称不⼀致的解决⽅案就是保证参数的类型和名称⼀致即可。下⾯将以⼀个⼩项⽬中出现的时间类型转换问题作为栗⼦具体解析⼀下
时间格式转换栗⼦ :
字符串⽆法⾃动转换成Date类型
项⽬中需要的是Date类型的⽇期,但是前端传过来的数据是字符串类型的。
解决⽅法
解决问题的思想⽆⾮就是把String类型的⽇期格式转成Date类型,⽅案有两种:
A、⾃定义类型转换器
(1)写⼀个⾃定义类型转换器,定义转换格式
(2)在l⽂件中配置⾃定义类型转换器
(3)在Controller中接收字符串,⼿动转换成Date类型再设置到封装的实体类中去。
B、直接在实体类上添加注解:
@DateTimeFormat(pattern ="yyyy-MM-dd")
这种⽅法既简单⼜实⽤,不需要配置⽂件也不需要⼿动写转换器,体现了注解的强⼤。
②前端提交ajax请求的数据应该是json格式字符串的,但是却没有将对象转换成json格式的字符串
这个问题解决的⽅案也⾮常简单,只要使⽤⼀个⽅法将对象转成json格式的字符串即可。这个⽅法就是 JSON.stringify() ⽅法,它能将JavaScript 对象转换为字符串。
参照中的语法:
let =从Controller层返回的对象;
//将对象转换成json格式的字符串
let dataAsJson = JSON.stringify(data);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论