Postman 接口传参报错解决与@RequestBody的注解作用记录

这篇具有很好参考价值的文章主要介绍了Postman 接口传参报错解决与@RequestBody的注解作用记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

记录接口传参报错与解决和@RequestBody的作用记录

一、接口代码

1.1 代码说明

以下面测试代码作为例子:前端发送 POST 请求,请求体里面携带 List 集合的字符串发送给后端接口,后端接口接收到前端发送的请求数据后直接返回给前端。

@PostMapping("/test")
public R test(@RequestBody List<String> list) {
    return R.ok().put("data", list);
}

1.2 测试结果

Postman 接口传参报错解决与@RequestBody的注解作用记录

报错信息:

"JSON parse error: Cannot deserialize instance of java.util.ArrayList<java.lang.Object> 
out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.
MismatchedInputException: Cannot deserialize instance of 
`java.util.ArrayList<java.lang.Object>` out of START_OBJECT token\n at 
[Source: (PushbackInputStream); line: 1, column: 1]",

1.3 问题解决

{
    "list": [
        "哈哈哈!",
        "呵呵呵!"
    ]
}

上面这种写法是 @RequestBody 注解封装 List 对象进行传递的,例如下面代码

@PostMapping("/test")
public R test(@RequestBody StringVo strVo) {
    return R.ok().put("strVo", strVo);
}
@Data
public class StringVo {
    public List<String> hobby;
    public String name;
    public Integer age;
}

重启项目,发送请求
Postman 接口传参报错解决与@RequestBody的注解作用记录
请求体中的属性必须与StringVo类中的属性对应,若属性对应不一致则对应数据为 null,如下图:
Postman 接口传参报错解决与@RequestBody的注解作用记录

@PostMapping("/test")
public R test(@RequestBody List<String> list) {
    return R.ok().put("data", list);
}

当接口参数 @RequestBody List< String > list 时,传递的请求体如下即可:

[
  "哈哈哈!",
  "呵呵呵!"
]

1.4 @RequestBody 作用

@RequestBody 注解用来接收前端传递给后端的 JSON 字符串中的请求体中的数据,我们常用 POST 请求发送,所以使用 @RequestBody 接收数据时,一般都用 POST 方式进行提交,在后端的接收方法里使用@RequestBody 来修饰请求参数。

@RequestBody 注解对应的类在将 HTTP 的输入流(含请求体)装配到目标类时,会根据 JSON 字符串中的 key 来匹配对应实体类的属性,如果匹配一致且 JSON 中的该 key 对应的值符合(或可转换为)实体类的对应属性的类型要求时,会调用实体类的 setter 方法将值赋给该属。文章来源地址https://www.toymoban.com/news/detail-437749.html

到了这里,关于Postman 接口传参报错解决与@RequestBody的注解作用记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于postman传递两个参数@RequestBody注解只能有一个!

    1.一个bean一个集合,集合前面必须加注解  postman的传参写法  ========================================================================= 2.一个bean和一个数组,数组前面是不用加注解的也可以接收的上 postman传参    

    2024年02月11日
    浏览(34)
  • Spring Boot框架中Controller层API接口如何支持使用多个@RequestBody注解接受请求体参数

    众所周知,在Spring Boot框架中,Controller层API接口编码获取请求体参数时,在参数上会使用@RequestBody注解;如果一次请求中,请求体参数携带的内容需要用多个参数接收时,能不能多次使用@RequestBody注解呢? 下面我们先测试一下,参考代码: PostMan进行请求: 服务端后端日志:

    2024年01月17日
    浏览(55)
  • 注解实现校验接口传参是否超出取值范围

    写接口,Dto里很多字段要检验传参范围,自定义个注解来校验。 注解定义代码: 实现思路是使用JSR303校验框架的@Constraint注解,实现ConstraintValidator接口,定义初始化和参数校验逻辑。 调用下: 借用 @JsonCreator 注解,反序列化前端传参成一个枚举对象时,进行校验。 此时Dt

    2024年01月21日
    浏览(41)
  • @RequestBody注解依赖问题,导致传入的body数据为空(已解决)

    当项目引入swagger以后要注意 @RequestBody 这个注解 有两个 第一:  io.swagger.v3.oas.annotations.parameters.RequestBody 这个是swagger的依赖,当引入这个注解后在postman测试传入json数据后会接受不到参数,让传入的参数都为空,但是在swagger里面可以映射到参数 第二: org.springframework.web.bi

    2024年02月06日
    浏览(40)
  • Postman做简单接口测试一直报错400的解决方案

    跟着b站视频学习flask开发时,视频链接如下 https://www.bilibili.com/video/BV1qf4y1F7kR?p=11 up主用到了简单的接口测试,推荐windows系统使用postman,于是下载安装后也试了一下,结果一直报错400,如下图 查了很久解决不了问题,因为网络请求太多太繁杂问题都不一样。最后问了一个大佬

    2024年02月16日
    浏览(42)
  • 使用postman测试接口的时候,遇到form-data类型如何传参

    formData里面存储的数据形式,一对key/value组成一条数据,key是唯一的,一个key可能对应多个value json常用的格式 1.数组方式 [ ] 2.对象方式 { }

    2024年02月11日
    浏览(48)
  • post请求可以不加@RequestBody注解么?使用与不使用@RequestBody注解的区别

    @RequestBody只能处理json格式的数据。 使用@RequestBody注解时,用于接收Content-Type为application/json类型的请求,数据类型是JSON:{“aaa”:“111”,“bbb”:“222”} 不加@RequestBody可以支持表单的默认格式,但是不能处理json格式的数据(在restTemplete进行远程服务调用时,是以json格式进行实体

    2024年02月12日
    浏览(45)
  • @RequestBody注解基础

    @RequestBody @RequestBody注解一般与post方法使用。 一个请求中只能存在一个@RequestBody注解。 @RequestBody 用于接收前端传递给后端的json字符串中的数据。(处理json格式的数据) 语法格式: ​(@RequestBody Map map) (@RequestBody Object object) (1)(@RequestBody Map map)方式: 这种方式相对来说比较

    2024年01月21日
    浏览(46)
  • web3j 引用报错:okhttp3.RequestBody okhttp3.RequestBody.create(java.lang.String, okhttp3.MediaType)解决

    在做区块链开发时引用了web3j,而web3j中又引用了OKhttp,在程序发起请求时报错如下 我项目中引用的web3j包如下 其实具体web3j哪个版本感觉都有类似问题,我尝试过4.6.3版本到5.0.0都会报上述错。然后看项目依赖发现引用的OKhttp版本是3.14.9,网上说要将OKhttp版本号更换到4.3.1以上

    2024年02月09日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包