@RequestParam,@PathParam,@PathVariable,@QueryParam注解的使用区别,http请求报400错误的原因分析...

      获取url模板上数据的(/{id})@DefaultValue获取请求参数的(包括post表单提交)键值对(?param1=10&param2=20)、可以设置defaultValue
JAX-RS@PathParam@QueryParam
Spring@PathVariable@RequestParam

有一次的请求是 :

http://localhost:8080/system/getMenuListPage?level=0&parent_id=0&_=1532879287887

后台返回400 BadRequest  。

接收用的

	@RequestMapping(value = "getMenuListPage", method= RequestMethod.GET,produces = "text/html;charset=UTF-8")
	@ResponseBody
	public String getMenuListPage(Menu menu, @RequestParam(value="pageNumber") Integer pageNumber,
			@RequestParam(value="pageSize") Integer pageSize){  

将@RequestParam 用 @QueryParam 替换后就返回 200.

<--------------------------------   ------------------------>

之后补:   发现@RequestParam 默认是required = true 。当此项参数不传时就被拒绝,返回400。可以改成如下:

 

    @RequestMapping(value = "getMenuListPage", method= RequestMethod.GET,produces = "text/html;charset=UTF-8")
    @ResponseBody
    public String getMenuListPage(Menu menu, @RequestParam(value="pageNumber", required = false) Integer pageNumber,
            @RequestParam(value="pageSize", required = false) Integer pageSize){  

<--------------------------------   ------------------------>

@RequestParam 和 @PathVariable 注解是用于从request中接收请求的,两个都可以接收参数,关键点不同的是@RequestParam 是从request里面拿取值,而 @PathVariable 是从一个URI模板里面来填充。

 

总结:http请求报400错误的原因分析

在ajax请求后台数据时有时会报 HTTP 400 错误 - 请求无效 (Bad request);出现这个请求无效报错说明请求没有进入到后台服务里;

原因:1)前端提交数据的字段名称或者是字段类型和后台的实体类不一致 或 前端提交的参数跟后台需要的参数个数不一致,导致无法封装;

         2)前端提交的到后台的数据应该是json字符串类型,而前端没有将对象转化为字符串类型;

解决方案:

1)对照字段名称,类型保证一致性

2)使用stringify将前端传递的对象转化为字符串    data: JSON.stringify(param)  ;

转载于:https://www.cnblogs.com/mobaids/p/9388312.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值