专注app软件定制开发解决Postman发送请求报错org.springframework.web.bind.MissingServletRequestParameterException

异常现象

专注app软件定制开发最近使用调试接口时出专注app软件定制开发现报错如下:

org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'userId' is not present
  • 1

问题原因

首先从报错的字面信息来理解,是说有一个必填参数没有传值;
如果这个参数是非必填参数的话,我们应该设置该参数的required属性为false: @RequestParam(required = false)
但是我所设计的这个接口就是根据这个ID参数去查询数据,本身就是必填参数。

其次想到是否前端传递的参数名称、大小写和后端接口定义的参数不一致导致,对比后发现是一致的。

这时从后端接口上看出了问题所在。我后端接口参数用的是@RequestParam接收,而在Postman里我是用的application/json方式传递的请求数据,后端是无法接收到的。

@RequestBody和@RequestParam区别

  • @RequestParam
    用来处理请求头为Content-Type: application/x-www-form-urlencoded编码的内容。
    Http协议中,默认传参类型就是application/x-www-form-urlencoded
    URL中拼接参数也会使用此类型传递。
  • @RequestBody
    处理HttpEntity传递过来的数据,一般用来处理非Content-Type: application/x-www-form-urlencoded编码格式的数据。
    我们前端传递的json对象一般都以此方式在后端接收。

解决办法

Postman里将传参方式改为form-data方式,或者将参数拼接在url后面。

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发