HTTP Status 400 (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、解决方案

①前端传的参数类型或者名称与后台接收参数的实体类的属性类型或者名称不一致

前后台参数类型或者名称不一致的解决方案就是保证参数的类型和名称一致即可。下面将以一个小项目中出现的时间类型转换问题作为栗子具体解析一下

时间格式转换栗子🌰:
字符串无法自动转换成Date类型
项目中需要的是Date类型的日期,但是前端传过来的数据是字符串类型的。
在这里插入图片描述

解决方法
解决问题的思想无非就是把String类型的日期格式转成Date类型,方案有两种:
A、自定义类型转换器
(1)写一个自定义类型转换器,定义转换格式
在这里插入图片描述
(2)在springmvc.xml文件中配置自定义类型转换器
在这里插入图片描述
(3)在Controller中接收字符串,手动转换成Date类型再设置到封装的实体类中去。
在这里插入图片描述

B、直接在实体类上添加注解:

@DateTimeFormat(pattern = "yyyy-MM-dd")

在这里插入图片描述
这种方法既简单又实用,不需要配置文件也不需要手动写转换器,体现了注解的强大。

②前端提交ajax请求的数据应该是json格式字符串的,但是却没有将对象转换成json格式的字符串

这个问题解决的方案也非常简单,只要使用一个方法将对象转成json格式的字符串即可。这个方法就是 JSON.stringify() 方法,它能将 JavaScript 对象转换为字符串。
参照菜鸟教程中的语法:
在这里插入图片描述

let  = 从Controller层返回的对象;
//将对象转换成json格式的字符串
let dataAsJson = JSON.stringify(data);
  • 24
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笑嫣如❀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值