Post请求,参数跟在url后面的问题
一.问题描述
我们知道一般post请求的请求参数是不会跟在url后面的,get请求才会跟在后面,所以大家才说post请求比get请求安全嘛。但是今天写代码的时候,明明我发送的是post请求,参数还是跟在了url后面。
二.问题复现
package com.itheima.boot.Controller;import org.springframework.web.bind.annotation.*;@RestController
public class PostTestController {@PostMapping("/postTest")public String postTest(String name){System.out.println(name);return name;}}
结果在用swagger进行测试的时候:
三.问题解决
1.普通单个参数
只写个@PostMapping是不够的,还得在参数面前加上一个@RequestBody注解
@PostMapping("/postTest")public String postTest(@RequestBody String name){System.out.println(name);return name;}
2.普通多个参数
错误方式
首先我们说一种错误的方式,给两个参数都加上这个注解的时候会报错:Resolved [org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public java.lang.String com.itheima.boot.Controller.PostTestController.postTest1(java.lang.String,java.lang.String)]
//错误使用
@PostMapping("/postTest")
public String postTest(@RequestBody String name,@RequestBody String gender){System.out.println(name+" "+gender);return name+" "+gender;
}
swagger显示错误:
第一种解决方式(不建议用)
@PostMapping("/postTest3")public String postTest3(@RequestBody String name,String gender){System.out.println(name+" "+gender);return name+" "+gender;}
第二种方式
我们把请求的参数封装成一个对象就可以了。这样一个注解@RequestBody就能对两个参数起作用
@PostMapping("/postTest4")public String postTest4(@RequestBody User user){System.out.println(user.getAge()+" "+user.getUsername());return user.getAge()+" "+user.getUsername();}
四.思考原因
其实我们做的事情就是加了个@RequestBody注解,并且,通过上面的例子我们可以得知,这个注解在一个方法里面只能使用一次。那这个注解有啥特殊的呢?
@RequestBody接收的参数是来自请求体。该注解常用来处理Content-Type:不是application/x-www-form-urlencoded
编码的内容,例如application/json, application/xml等。
而@RequestParam注解接受的参数是来自请求头。用来处理Content-Type:为:application/x-www-form-urlencoded
编码的内容
Post请求,参数跟在url后面的问题相关推荐
- springboot获取多个请求参数_springboot获取URL请求参数的多种方式
1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交. /** * 1.直接把表单的参数写在Controller相应的方法的形参中 * @pa ...
- ios 拦截html请求参数,iOS UIWebView URL拦截
本文译者:candeladiao,原文:URL filtering for UIWebView on the iPhone 说明:译者在做app开发时,因为页面的javascript文件比较大导致加载 ...
- PostMan发送请求参数带有路径特殊字符会返回400错误(与URL字符及URL编码值有关)
目录 一.请求参数中携带URL字符返回400错误 二. 请求参数中携带URL字符返回400错误原因 三.URL字符及对应的URL编码值列表 四.请求参数中携带URL字符转成URL编码值 一.请求参数中 ...
- java webmethod 参数_java详解Spring接收web请求参数的方式
本篇文章给大家带来的内容是java详解Spring接收web请求参数的方式 .有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 1 查询参数 请求格式:url?参数1=值1&参 ...
- springboot接收get和post请求参数
一.get请求前端传参和后台接收的写法: 1.ajax请求: $.ajax({ url:'/user/login3',//contentType: 'application/json;charset= ...
- springmvc接收请求参数(springmvc教程二)
目录 工程代码 普通接收请求参数 pojo接收请求参数 @RequestParam接收请求参数 restful风格 URL接收请求参数 json接收请求参数 Array数据接收请求参数 接收请求参数序 ...
- 后端接收Get请求与Post请求 参数示例
博主介绍: 22届计科专业毕业,来自湖南,主要是在CSDN记录一些自己在Java开发过程中遇到的一些问题,欢迎大家一起讨论学习,也欢迎大家的批评指正. 文章目录 前言 正文 接收Get请求的参数 不使 ...
- go获取get请求参数
代码 package mainimport ("encoding/json""fmt""log""net/http" ) ...
- GET方式请求参数中文乱码问题 [JavaWeb][Servlet]
请求参数中文乱码问题(GET) 同样的我们要解决GET方式下的请求参数中文乱码问题,那么我们首先要知道GET请求方式之下为什么中文数据就会出现乱码? 因为我们GET方式之下的请求参数是在请求行中,是紧 ...
- springboot获取URL请求参数的几种方法
原文地址:http://www.cnblogs.com/xiaoxi/p/5695783.html 1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于pos ...
最新文章
- python使用函数的目的_在Python 3.x中经常看到定义函数有一个单独的 * 参数?定义这样参数的目的是?怎样对其取值呢?...
- Linux下的截图工具 KSnapshot
- WebAssembly 浏览器中运行c/c++模块
- 亲戚再也看不见我一个人食吉野家了
- 还是想继续写代码,不想这么快就去养猪~
- Arduino笔记-外部中断实验(震动传感器实时亮灯)
- IMPORTANT: BizTalk Server 2004 fixes for Windows XP SP2 and .NET FW 1.1 SP1
- 华为云企业主机安全服务之“网页防篡改”:拒绝网页变脸,服务实时在线
- 成绩查看_2019一级建造师成绩已公布,赶紧来查看成绩吧
- 儿童心理健康的十项注意
- 英伟达实时 3D 设计协作和仿真平台已正式发布
- JavaScript的加密混淆技术
- python获取交互式ssh shell
- ​​​​​​​【目标检测】CenterNet
- 用Python画国旗
- A标签新窗口打开怎么设置
- 露营热持续升温,火星玩家首创“电核露营”切入千亿赛道
- 深圳月薪2300工厂小妹,逆天改命成google程序员,因为疫情失业了...孙玲:甘于平凡,但从不轻易认输...
- 云存储——Megaupload
- 2022,再接再厉~~
热门文章
- 注册表改win 7更新服务器,WIN7安装卡死在更新注册表设置真正解决办法
- Ajax创建步骤内含兼容
- linux fat32 乱码,FAT32文件系统乱码的研究和分析
- PCB相关知识总结-(1)PCB工艺
- 使用ROS驱动激光雷达YDLIDAR-G4的详细过程总结(教你避开使用的各种坑....)
- ueditor+实现word图片自动上传
- infor接口调用,okhttp不同版本使用
- c语言else if设计一个成绩表,c语言 学生成绩管理系统设计学生成绩信息包括:学号,姓名,三门课程成绩(数学、英语和计算机)等。主要功能:(1) 计算各...
- viewers.js 图片查看插件使用说明-vue中引用
- 微信平台 签名生成工具