get 、post请求 后台@RequestParam、@RequestBody 接收的方法集合

news2024/11/20 12:38:44

post、get请求 参数:数组、JSON对象、JSON字符串、地址栏

RequestParam、@RequestBody 后端接收

//定义json对象,同时包含数组

var _queryData = {

                   jflb:"婚姻家庭纠纷",

                   zlay:"xxxxx",

                   ysCode:["0123","4567"]

              }

post请求 :

@RequestParam(接收JSON对象)
前端代码:

 $.ajax({

                type: post,

                 url: queryUrl,

                 data: queryData,

                 dataType: "json",

                 success: function(data) {

                 console.log(data);

                                }

                           });

后端代码:对象中的参数分别接收



@PostMapping(value = "/queryTest", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)

    public ResponseEntity<Map<String, List<CaseYs>>> queryActionByDispute(

        @RequestParam @ApiParam(name = "jflb", value = "jflb 中文", required = true) String jflb

        @RequestParam @ApiParam(name = "zlay", value = "zlay 案由", required = true) String zlay,

         @RequestParam("ysCode[]") @ApiParam(name = "ysCode", value = "必传参数:ysCode",           required = true) List<String> ysCode) {

        System.out.println(jflb + zlay + ysCode);

    }

@RequestParam(接收JSON字符串)
@RequestBody(只能接收JSON字符串,因此 Content-Type需要更改,同时我们的data也要更改了)

前端代码:

 $.ajax({

                type: post,

                 url: queryUrl,

                 data: queryData,

                 contentType: 'application/json;charset=UTF-8',

                 dataType: "json",

                 success: function(data) {

                 console.log(data);

                                }

                           });

后端代码:

1Map<String, Object>  键值对形式接收


@PostMapping(value = "/queryTest", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)

    public ResponseEntity<Map<String, List<CaseYs>>> queryActionByDispute(

        @RequestBody @ApiParam(name = "ysCode", value = "必传参数:jflb,ysCode,zlay", required = true) Map<String, Object>  queryMap) {

        System.out.println(queryMap);

    }

打印:{jflb=婚姻家庭纠纷, zlay=xxxxx, ysCode=[0123, 4567]}

--------------------------------------------------------------------------------2)定义vo对象接收(建议使用,方便取出对应数据)

(1Map<String, Object>  键值对形式接收

@ApiOperation(value = "根据纠纷类型查询子案由列表", notes = "根据纠纷类型查询子案由列表")    

@PostMapping(value = "/queryTest", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)

    public ResponseEntity<Map<String, List<CaseYs>>> queryActionByDispute(

        @RequestBody @ApiParam(name = "ysCode", value = "必传参数:jflb,ysCode,zlay", required = true) Bafz bafz) {

        System.out.println(bafz.jflb);

    }

去除接收字符串的@RequestParam注解,直接将两个值放入会有什么后果?

结果:依然能够接收到参数 amazing!!!!!!

原因:

(1)AJAX未定义Content-type的类型,Jquery默认使用application/x-www-form-urlencoded类型。相当于 SpringMVC的@RequestParam注解,Servlet的request.getParameter.

(2) Content-Type x-www-form-urlencoded的编码方式把JSON对象数据转换成一个字串,

(3)POST方式提交, 浏览器把数据封装到HTTP BODY中,然后发送到服务器,

get请求 :

@RequestParam(接收JSON对象、对象中包含数组)
前端代码:

 $.ajax({

                type: get,

                 url: queryUrl,

                 data: queryData,

                 dataType: "json",

                 success: function(data) {

                 console.log(data);

                                }

                           });

后端代码:对象中的参数分别接收

@ApiOperation(value = "根据纠纷类型查询子案由列表", notes = "根据纠纷类型查询子案由列表")    

@GetMapping(value = "/queryTest", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)

    public ResponseEntity<Map<String, List<CaseYs>>> queryActionByDispute(

        @RequestParam @ApiParam(name = "jflb", value = "jflb 中文", required = true) String jflb

        @RequestParam @ApiParam(name = "zlay", value = "zlay 案由", required = true) String zlay,

         @RequestParam("ysCode[]") @ApiParam(name = "ysCode", value = "必传参数:ysCode",           required = true) List<String> ysCode) {

        System.out.println(jflb + zlay + ysCode);

    }

@RequestParam(接收JSON字符串)

@RequestParam(接收地址栏字符串、包含数组)
前端代码:

 $.ajax({

                type: get,

                 url:queryUrl+"?jflb=婚姻             家庭纠纷&zlay=xxxxx&",

                 dataType: "json",

                 success: function(data) {

                 console.log(data);

                                }

                           });

后端代码:对象中的参数分别接收

@ApiOperation(value = "根据纠纷类型查询子案由列表", notes = "根据纠纷类型查询子案由列表")    

@GetMapping(value = "/queryTest", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)

    public ResponseEntity<Map<String, List<CaseYs>>> queryActionByDispute(

        @RequestParam @ApiParam(name = "jflb", value = "jflb 中文", required = true) String jflb

        @RequestParam @ApiParam(name = "zlay", value = "zlay 案由", required = true) String zlay,

         @RequestParam @ApiParam(name = "ysCode", value = "必传参数:ysCode",           required = true) List<String> ysCode) {

        System.out.println(jflb + zlay + ysCode);

    }

注意:数组参数用同名的方式拼接,后台会根据属性名相同自动识别为数组

坑1:

@RequestParam 和 @RequestBody 和 contentType
在这里插入图片描述
注意:

(1)未定义Content-type的类型

Jquery默认使用application/x-www-form-urlencoded类型(application/x-www-form-urlencoded 把JSON对象数据转换成一个字串)。那么意思就是SpringMVC的@RequestParam注解,Servlet的request.getParameter是可以接受到以这种格式传输的JSON对象的。

(2)使用@RequestBody注解

前台的Content-Type必须要改为application/json,如果没有更改,前台会报错415(Unsupported Media Type)。后台日志就会报错Content type ‘application/x-www-form-urlencoded;charset=UTF-8’ not supported

(3)前台报400的错:原因:GET方式添加了contentType: ‘application/json;charset=UTF-8’

(4)@RequestParam 它的作用和我们Servlet中的request.getParameter是基本相同的
坑2:

传递数组:

(1)post请求,JSON对象传递,@RequestParam 接收

最重要:@RequestParam接收的参数说明是数组

@RequestParam(“ysCode[]”) @ApiParam(name = “ysCode”, value = “必传参数:ysCode”, required = true) List ysCode

(2)post请求 JSON字符串传递 @RequestBody接收(请看下面的例子)

(3)get请求,JSON对象传递,@RequestParam 接收

最重要:@RequestParam接收的参数说明是数组

@RequestParam(“ysCode[]”) @ApiParam(name = “ysCode”, value = “必传参数:ysCode”, required = true) List ysCode

(4)post请求 JSON字符串传递 @RequestParam 接收(请看下面的例子)

Tips1:(用法请看下面的例子)

@ApiParam @PathVariable @RequestParam 三者的区别

1.@ApiParam 顾名思义,是注解api的参数,也就是用于swagger提供开发者文档,文档中生成的注释内容。

2.@RequestParam,是获取前端传递给后端的参数,可以是get方式,也可以是post方式。其中如果前端传递的参数和后端你接受的参数起的名字字段是一致的可以省略不写,也可以直接写@RequestParam String title,如果不一致一定要完整写,不然获取不到,

3.@PathVariable,是获取get方式,url后面参数,进行参数绑定

Tips2:

dataType: “json”

预期服务器返回的数据类型。如果不指定, jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如XML MIME类型就被识别为XML。在1.4中,JSON就会生成一个JavaScript对象,而script则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数

“xml”: 返回 XML 文档,可用 jQuery 处理。

“html”: 返回纯文本 HTML 信息;包含的script标签会在插入dom时执行。

“script”: 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了"cache"参数。‘’‘注意:’''在远程请求时(不在同一个域下),所有POST请求都将转为GET请求。(因为将使用DOM的script标签来加载)

“json”: 返回 JSON 数据 。

“jsonp”: JSONP 格式。使用 JSONP 形式调用函数时,如 “myurl?callback=?” jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。

“text”: 返回纯文本字符串

Tips3:

JSON对象-----JSON字符串

JavaScript向我们提供了两个工具:

JSON.parse( ) 字符串转化为对象

JSON.stringfy( ) json对象序列化,对象转化为字符串, 可以传单个json对象字符串或多个对象json字符串

Tips4:

Content-Type

MediaType,即是Internet Media Type,互联网媒体类型;也叫做MIME类型,在Http协议消息头中,使用Content-Type来表示具体请求中的媒体类型信息。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/640941.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机柜PDU与普通插座的区别,以及如何选择品牌专业PDU产品详解

PDU&#xff08;Power Distribution Unit&#xff09;&#xff0c;是将来自UPS的输出电流分配到各个IT设备的末端配电设备&#xff0c;是连接供电等基础设施与IT系统、关联机房内所有设备正常运转的关键设备。作为机房用电安全的重要保障&#xff0c;PDU设备的稳定与安全直接关…

FPGA驱动FT601实现USB3.0相机HDMI视频采集 提供工程源码和QT上位机源码

目录 1、前言2、FT601芯片解读和时序分析FT601功能和硬件电路FT601读时序解读FT601写时序解读 3、我这儿的 FT601 USB3.0通信方案4、详细设计方案5、vivado工程详解6、上板调试验证7、福利&#xff1a;工程代码的获取 1、前言 目前USB3.0的实现方案很多&#xff0c;但就简单好…

我们来谈谈udp

"却还有那些洗礼&#xff0c;那几句问候&#xff0c;那份温柔~" 一、 常用的Linux命令 (1) netstat查看网络状态 netstat是一个用来查看网络状态的重要工具,可以携带很多选项。 n 拒绝显示别名&#xff0c;能显示数字的全部转化成数字. l 仅列出有在 Listen…

【unity之IMGUI】所以你还想在百度上搜IMGUI的底层原理是什么吗?

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

安装python详细步骤(超详细,保姆级,一步一图)

❄️作者介绍&#xff1a;奇妙的大歪❄️ &#x1f380;个人名言&#xff1a;但行前路&#xff0c;不负韶华&#xff01;&#x1f380; &#x1f43d;个人简介&#xff1a;云计算网络运维专业人员&#x1f43d; 前言 作为一个实用学习的主义的学习者&#xff0c;最关心的问题一…

光亚展 | 移远通信Matter解决方案,照亮智能家居产业未来

6月9-12日&#xff0c;第二十八届广州国际照明展览会&#xff08;光亚展&#xff09;在中国进出口商品交易会展馆举行。本次展会以“光未来”为主题&#xff0c;整个照明、灯饰产业链的上下游企业、品牌在此汇聚&#xff0c;共同探讨照明行业未来的发展方向。 作为照明行业智能…

智见|黄铁军:未来的大模型生态中将会只有少数赢家

2023智源大会可谓群星璀璨。中外200余位人工智能顶级专家参会&#xff0c;人工智能领域最关键的人物、机构悉数亮相。 全面、专业、前沿&#xff0c;会场上大咖们观点激荡、多元碰撞&#xff0c;会场下观众们兴奋异常、座无虚席。 会上&#xff0c;北京智源人工智能研究院院长黄…

英语知识点-填空-考试酷

第一章 英语知识填空题 一、语法 1.词法&#xff1a;介词将关系建立在人/物A与人/物B&#xff0c;可能会形成修饰限制关系&#xff0c;有定语成分&#xff1b;介词将关系建立在事A与物B&#xff0c;可能有事A动作发生时环境因素&#xff0c;有状语成分&#xff1b;写作中经常用…

【Vue.js】1711- 深入浅出 Vue3 自定义指令

Vue.js[1] 提供了丰富的指令来简化开发者的工作。除了内置指令外&#xff0c;Vue.js 还支持自定义指令&#xff0c;开发者可以根据自己的需求扩展 Vue.js 的指令库。Vue.js 3.x 相较于 Vue.js 2.x 在自定义指令方面进行了一些改进&#xff0c;本文将介绍 Vue.js 3.x 中自定义指…

HLS 设计数字时钟

绪论 该项目的目标是展示 HLS 在设计数字系统方面的能力。为此&#xff0c;本文展示如何在 HLS 中描述数字时钟。如果有兴趣学习 HLS 编码技术&#xff0c;请参阅&#xff1a; ❝ https://highlevel-synthesis.com/ ❞ ❝ https://www.udemy.com/course/hls-combinational-circ…

2023 年的 5G 和网络安全风险

5G 网络的推出出奇地缓慢。作为一个概念&#xff0c;它于 2016 年推出&#xff0c;但直到 2019 年才在全球范围内推出。 四年后&#xff0c;在大多数国家地区&#xff0c;拥有 5G 设备的人数仍然很少。 不确定采用缓慢背后的原因是负担能力、缺乏必要性还是关于它的严重错误…

【redis】redis集群

这里是redis系列文章之《redis集群》&#xff0c;上一篇文章链接&#xff1a;【redis基础】哨兵_努力努力再努力mlx的博客-CSDN博客 目录 概念 作用 集群算法-分片-槽位slot 槽位与分配的概念及两者的优势 官网介绍分析 槽位 分片 两者的优势 slot槽位映射的三种解决方…

linux eventfd事件通知 比信号量更好用

专栏内容&#xff1a;linux下并发编程个人主页&#xff1a;我的主页座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物&#xff0e; 目录 前言 概述 原理简介 使用场景 接口说明 头文件 参数说明 代码演示 默认参数 …

1740_使用Python+ImageMagick实现图像的批量压缩

全部学习汇总&#xff1a; GreyZhang/python_basic: My learning notes about python. (github.com) 前些年使用Linux的时候为了能够方便地往网络上上传照片&#xff0c;使用shell ImageMagick的组合进行照片的批量压缩一直觉得比较方便。不过&#xff0c;那时候即使这么简单的…

JMeter从入门到精通--开始你的第一个JMeter脚本

JMeter是一款在国外非常流行和受欢迎的开源性能测试工具&#xff0c;像LoadRunner 一样&#xff0c;它也提供了一个利用本地Proxy Server&#xff08;代理服务器&#xff09;来录制生成测试脚本的功能&#xff0c;但是这个功能并不好用。所以在本文中介绍一个更为常用的方法——…

软考A计划-2023系统架构师-知识点集锦(4/4)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

redis的远程登录配置

目录 服务端&#xff1a; 客户端&#xff1a; 服务端&#xff1a; 步骤一&#xff1a;关闭防火墙 systemctl stop firewalld iptables -F setenforce 0 步骤二&#xff1a;配置/etc/redis.conf配置文件 vim /etc/redis.conf bind 127.0.0.1 改为 bind 0.0.0.0 &#xff08;…

【图书推荐 | 13】前端系列

【赠书活动第十三期 】 图书推荐 本期书籍&#xff1a;前端系列 图书列表&#xff1a; Vue.js核心技术解析Nuxt.js实战Nuxt.js Web开发实战HTML5CSS 从入门到精通Flutter2 开发实例精解Electron项目开发实战 Vue.js核心技术解析 Nuxt.js实战 Nuxt.js Web开发实战 HTML5CSS 从入…

机器鱼的制作分享

1. 运动功能说明 本文示例将实现R330样机机器鱼胸鳍能够灵活的上下摆动的功能。 2. 结构说明 本样机采用舵机模块来进行仿生机器鱼结构的设计。 胸鳍 整机 3. 电子硬件 在这个示例中&#xff0c;我们采用了以下硬件&#xff0c;请大家参考&#xff1a; 主控板 Basra主控板&…

一文搞懂ChatGPT 和 AIGC 到底是什么?【最强科普】

目录&#xff1a; 1.AIGC是什么&#xff1f; 2.ChatGPT是什么&#xff1f; 3.ChatGPT发展的几个阶段&#xff1f; 4.ChatGPT能做什么&#xff1f; 5.ChatGPT的应用场景&#xff1f; 一、AIGC是什么&#xff1f; GC&#xff08;Generated Content&#xff09;&#xff1a…