一.问题描述

我们知道一般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后面的问题相关推荐

  1. springboot获取多个请求参数_springboot获取URL请求参数的多种方式

    1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交. /** * 1.直接把表单的参数写在Controller相应的方法的形参中 * @pa ...

  2. ios 拦截html请求参数,iOS UIWebView URL拦截

    本文译者:candeladiao,原文:URL filtering for UIWebView on the iPhone 说明:译者在做app开发时,因为页面的javascript文件比较大导致加载 ...

  3. PostMan发送请求参数带有路径特殊字符会返回400错误(与URL字符及URL编码值有关)

    目录 一.请求参数中携带URL字符返回400错误 二. 请求参数中携带URL字符返回400错误原因 三.URL字符及对应的URL编码值列表 四.请求参数中携带URL字符转成URL编码值 一.请求参数中 ...

  4. java webmethod 参数_java详解Spring接收web请求参数的方式

    本篇文章给大家带来的内容是java详解Spring接收web请求参数的方式 .有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 1 查询参数 请求格式:url?参数1=值1&参 ...

  5. springboot接收get和post请求参数

    一.get请求前端传参和后台接收的写法: 1.ajax请求: $.ajax({ url:'/user/login3',//contentType: 'application/json;charset= ...

  6. springmvc接收请求参数(springmvc教程二)

    目录 工程代码 普通接收请求参数 pojo接收请求参数 @RequestParam接收请求参数 restful风格 URL接收请求参数 json接收请求参数 Array数据接收请求参数 接收请求参数序 ...

  7. 后端接收Get请求与Post请求 参数示例

    博主介绍: 22届计科专业毕业,来自湖南,主要是在CSDN记录一些自己在Java开发过程中遇到的一些问题,欢迎大家一起讨论学习,也欢迎大家的批评指正. 文章目录 前言 正文 接收Get请求的参数 不使 ...

  8. go获取get请求参数

    代码 package mainimport ("encoding/json""fmt""log""net/http" ) ...

  9. GET方式请求参数中文乱码问题 [JavaWeb][Servlet]

    请求参数中文乱码问题(GET) 同样的我们要解决GET方式下的请求参数中文乱码问题,那么我们首先要知道GET请求方式之下为什么中文数据就会出现乱码? 因为我们GET方式之下的请求参数是在请求行中,是紧 ...

  10. springboot获取URL请求参数的几种方法

    原文地址:http://www.cnblogs.com/xiaoxi/p/5695783.html 1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于pos ...

最新文章

  1. python使用函数的目的_在Python 3.x中经常看到定义函数有一个单独的 * 参数?定义这样参数的目的是?怎样对其取值呢?...
  2. Linux下的截图工具 KSnapshot
  3. WebAssembly 浏览器中运行c/c++模块
  4. 亲戚再也看不见我一个人食吉野家了
  5. 还是想继续写代码,不想这么快就去养猪~
  6. Arduino笔记-外部中断实验(震动传感器实时亮灯)
  7. IMPORTANT: BizTalk Server 2004 fixes for Windows XP SP2 and .NET FW 1.1 SP1
  8. 华为云企业主机安全服务之“网页防篡改”:拒绝网页变脸,服务实时在线
  9. 成绩查看_2019一级建造师成绩已公布,赶紧来查看成绩吧
  10. 儿童心理健康的十项注意
  11. 英伟达实时 3D 设计协作和仿真平台已正式发布
  12. JavaScript的加密混淆技术
  13. python获取交互式ssh shell
  14. ​​​​​​​【目标检测】CenterNet
  15. 用Python画国旗
  16. A标签新窗口打开怎么设置
  17. 露营热持续升温,火星玩家首创“电核露营”切入千亿赛道
  18. 深圳月薪2300工厂小妹,逆天改命成google程序员,因为疫情失业了...孙玲:甘于平凡,但从不轻易认输...
  19. 云存储——Megaupload
  20. 2022,再接再厉~~

热门文章

  1. 注册表改win 7更新服务器,WIN7安装卡死在更新注册表设置真正解决办法
  2. Ajax创建步骤内含兼容
  3. linux fat32 乱码,FAT32文件系统乱码的研究和分析
  4. PCB相关知识总结-(1)PCB工艺
  5. 使用ROS驱动激光雷达YDLIDAR-G4的详细过程总结(教你避开使用的各种坑....)
  6. ueditor+实现word图片自动上传
  7. infor接口调用,okhttp不同版本使用
  8. c语言else if设计一个成绩表,c语言 学生成绩管理系统设计学生成绩信息包括:学号,姓名,三门课程成绩(数学、英语和计算机)等。主要功能:(1) 计算各...
  9. viewers.js 图片查看插件使用说明-vue中引用
  10. 微信平台 签名生成工具