springboot @RequestBody 接收字符串实例

目录
  • springboot @RequestBody 接收字符串
    • @RequestBody 接收字符串
    • 向接口传送 application/json 格式的数据
    • 向接口传送 text/plain 格式的数据
    • 替代 @RequestBody 的办法
  • @RequestBody接收前端传来的json值为空

springboot @RequestBody 接收字符串

  • springboot 2.1.1.RELEASE

@RequestBody 接收字符串

    @RequestMapping(method = {RequestMethod.POST})
    public ResultEntity form1(@RequestBody String requestBody) throws UnsupportedEncodingException {
  logger.info("================ request body ================");\
  logger.info("request body is : {}", requestBody);
 }

向接口传送 application/json 格式的数据

客户端调用代码如下:

$.ajax({
    url:'http://localhost/api/spd',
    data: JSON.stringify({name:'zhangsan', age: 18}),
    type:'POST',
    contentType: 'application/json',
    success:function(result){
        console.log(result);
    },
    error:function(error){
     console.log(error);
    }
});

服务端执行结果:

00:11:55.972 [http-nio-8020-exec-5] INFO c.c.api.SpdApi - [form1,45] - request body is : {"name":"zhangsan","age":18}

向接口传送 text/plain 格式的数据

客户端调用代码如下:

$.ajax({
    url:'http://localhost/api/spd',
    data: 'this is a message',
    type:'POST',
    contentType: 'text/plain',
    success:function(result){
        console.log(result);
    },
    error:function(error){
     console.log(error);
    }
});

服务端执行结果:

23:46:04.953 [http-nio-8020-exec-1] INFO c.c.api.SpdApi - [form1,45] - request body is : 'this is a message'

替代 @RequestBody 的办法

如果不想用 @RequestBody ,可以使用下面的方法:

 protected String getRequestBody(HttpServletRequest request) {
  try {
   BufferedReader reader = request.getReader();
   char[] buf = new char[512];
   int len = 0;
   StringBuffer contentBuffer = new StringBuffer();
   while ((len = reader.read(buf)) != -1) {
    contentBuffer.append(buf, 0, len);
   }
   return contentBuffer.toString();
  } catch (IOException e) {
   e.printStackTrace();
  }
  return "null";
 }

@RequestBody接收前端传来的json值为空

这个真的很脑抽。。。

我忘了在函数接收处写@RequestBody,至于其他博主说需要在BO包中加@JsonProperty(value = "xxx"),

或者什么驼峰命名法,也许是版本原因,没有这个必要,emmm,检查自己的函数接收参数叭

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • springboot接口如何多次获取request中的body内容

    1. 概述 在使用springboot开发接口时,会将参数转化为Bean,用来进行参数的自动校验.同时也想获取request中原始body报文进行验签(防止报文传输过程中被篡改). 因为通过将bean再转化为字符串后,body里面的报文格式.字段顺序会发生改变,就会导致验签失败.因此只能通过request来获取body里面的内容. 既想接口自动实现参数校验,同时又想获取request中的原始报文,因此我们可以通过在controller中的restful方法中,写入两个参数,获取多次request

  • 详解Springboot之接收json字符串的两种方式

    第一种方式.通过关键字段@RequestBody,标明这个对象接收json字符串.还有第二种方式,直接通过request来获取流.在spring中,推荐使用. 代码地址 https://gitee.com/yellowcong/springboot-demo/tree/master/springboot-json 项目结构 其实项目里面没啥类容,就是一个控制器和pom.xml配置 配置fastjson 添加fastjson的依赖到pom.xml中 <dependency> <groupI

  • 关于Springboot | @RequestBody 接收到的参数对象属性为空的问题

    背景 今天在调试项目的时候遇到一个坑,用Postman发送一个post请求,在Springboot项目使用@RequestBody接收时参数总是报不存在,但是多次检查postman上的请求格式以及项目代码都没有问题 Postman: 请求参数: { "firstName":"fdsaf", "lastName":"dfasdf" } Controller: Entity 通过debug模式可以发现传进到实体的参数都为null

  • 解读@RequestBody的正确使用方法

    本文主要研究的是关于@RequestBody的正确使用方法的相关内容,具体如下. 最近在接收一个要离职同事的工作,接手的项目是用SpringBoot搭建的,其中看到了这样的写法: @RequestMapping("doThis") public String doThis(HttpServletRequest request, @RequestParam("id") Long id, // 用户ID @RequestParam("back_url"

  • springboot @RequestBody 接收字符串实例

    目录 springboot @RequestBody 接收字符串 @RequestBody 接收字符串 向接口传送 application/json 格式的数据 向接口传送 text/plain 格式的数据 替代 @RequestBody 的办法 @RequestBody接收前端传来的json值为空 springboot @RequestBody 接收字符串 springboot 2.1.1.RELEASE @RequestBody 接收字符串 @RequestMapping(method =

  • SpringBoot接口接收json参数解析

    目录 SpringBoot接口接收json参数 前言 前提 一.GET 二.DELETE 三.POST/PUT/PATCH Springboot restFul 参数检验 概述 常用注解 简单应用举例 自定义校验 抛出BindException而非MethodArgumentNotValidException SpringBoot接口接收json参数 前言 通常来讲,HTTP 方法会映射为 CRUD 动作,但这并不是严格的限制,有时候 PUT 也可以用来创建新的资源,POST 也可以用来更新资源

  • 对Layer弹窗使用及返回数据接收的实例详解

    Layer做为弹窗,主页面代码: 注意1. callback()方法 返回字符串,再data:JSON.parse(res)转为ajax提交时的json参数 注意2. textarea 上使用append方法没有效果,改写: var str = $("#area").val() + "\n"+d; $("#area").val(str); //引入js 必须要有(1.8以上版本) jquery <script src="__PUB

  • springboot 整合 freemarker代码实例

    这篇文章主要介绍了springboot 整合 freemarker代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.6.RELEASE&l

  • SpringBoot如何接收数组参数的方法

    1.创建一个表单实体类,将数组封装到实体类中(Post提交) 表单类代码: @Data public class MyForm { private int[] ids; } 控制器代码: @Slf4j @RestController @RequestMapping("/info") public class InfoController { @PostMapping("/test") public String test(@RequestBody MyForm fo

  • 解决@RequestBody接收json对象报错415的问题

    @RequestBody接收json对象报错415 前端请求: $.ajax({ url: basePath() + "/index/login.do", type : "post", data: JSON.stringify(form), dataType : "json", contentType : "application/json;charset=utf8", success: function (data) { c

  • 使用@RequestBody 接收复杂实体类集合

    目录 @RequestBody 接收复杂实体类集合 postman 模拟前端传递复杂对象及@RequestBody注解说明 另外附带讲解一下@RequestBody 注解 @RequestBody 接收复杂实体类集合 想要在 后台接收josn返回的复杂List 直接给代码 例: @RequestMapping("/JsonSaveCustom") public ResultVO JsonSaveCustom(HttpServletRequest request, @RequestBod

  • SpringBoot自定义转换器应用实例讲解

    目录 1.基本介绍 2.自定义类型转换器应用实例 1.需求说明 2.代码实现 3.注意事项及使用细节 1.基本介绍 SpringBoot 在响应客户端请求时,将提交的数据封装成对象时,使用了内置的转换器 SpringBoot 也支持自定义转换器, 这个内置转换器在 debug 的时候, 可以看到, 提供了 124 个内置转换器. 看下源码 GenericConverter-ConvertiblePair 2.自定义类型转换器应用实例 1.需求说明 演示自定义转换器使用 2.代码实现 1.修改sr

随机推荐