接口请求报400:malformed request syntax, invalid request message framing, or deceptive request routing

本文介绍了两种常见的前端与后端交互时出现的问题:前端传递了后端接口不接受的额外参数,以及参数名称错误。这两种情况都会导致HTTP状态码400,即Bad Request。在排除这些问题后,如果请求仍无法正常处理,建议在控制器中添加日志检查网络层面是否存在问题。了解HTTP状态码400的含义对于排查接口错误至关重要。
摘要由CSDN通过智能技术生成

第一种情况

去看一下前端传的参数是不是有接口里没有的参数,,前端调用接口传的参数可以少,但一定不要比接口中的接受对象里的属性多。

举个例子:你用ajax发送了一个post请求携带的json参数是这样的:
{
“name”:“四百”,
“age”:“100”,
“sex”:“man”
}

然后你请求的后端接口是这样的:
@PostController("/newbee")
puiblic String newbee(@RequsestBody Person person){}

然后Person是这样的:
class Person{
private String name;
private String age;
}

Person里根本就没有sex属性,但是前端发请求的时候在json里又加了这个它没有的,那么spring就无法装载这个对象,返回的状态码就是400。

第二种情况

前端请求接口的时候,携带的参数名称错误。其实和第一种情况的本质是一样的,拿第一种情况中的例子,如果说在这里插入图片描述
这个地方,前端不小心把name打成了nane,那么后台接口用来装载数据的对象也是不会装载成功了,,其实这种情况和第一种的本质是一样的

==>前后端参数不一致,导致后台无法接受请求中的数据!

那么如果说仔仔细细的检查之后发现不是以上两种情况,那么你可以在controller中的第一行用log或者print打印点什么东西,看看请求有没有进到方法体里面,如果说都你加了log或者print之后发送请求控制台什么都没有输出的话,,那么问题就一定是出在网络层面了,如果你定义了一个拦截类去解决跨域或者其他关于请求的问题,,那么可以去拦截器里定位一下程序最终执行的地方,再往上一步去定位到可能出问题的地方。

总结: http状态码对应的含义:开源中国(OS) HTTP状态码详解 看400那栏,400状态码对应的内容

补充一个Spring中指向的状态码含义解释地址:
在这里插入图片描述

------------> HttpStatus

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值