当前位置: 首页 > news >正文

json传参数和表单传参

最近使用http请求测试接口,传参数格式给了自己狠狠大的困惑今天花时间总结下。

当你的controller使用post接收请求的时候 传参一般是 封装类 和封装的对象 需要注解@RequestBody @RequestParam 才能接收到json的参数 不然是接收不到的比如

两个接口

@ApiOperation(value = "登录")
@RequestMapping(value = "/login",method = RequestMethod.POST)
@ResponseBody
public ViewResult login(@RequestBody UserRequest userRequest) {return userService.login(userRequest);
}​
@ApiOperation(value = "登录")
@RequestMapping(value = "/login",method = RequestMethod.POST)
@ResponseBody
public ViewResult login(UserRequest userRequest) {return userService.login(userRequest);
}

http请求 当你的idea使用http cliect发请求时

第一个接口接收到参数 第二个可以接收不到参数

###
POST http://localhost:6688/gzl-oauth/oauth/login
Content-Type: application/json
Authorization:
​
{"account": "gzlwork","password": "gzlwork"
​
}

第一个接口接收不到参数 第二个可以接收到参数

###
POST http://localhost:6688/gzl-oauth/oauth/login
Content-Type: application/x-www-form-urlencoded
​
account=gzlwork&password=gzlwork
​
​
###
POST http://localhost:6688/gzl-oauth/oauth/login?account=gzlwork&password=gzlwork
Content-Type: application/x-www-form-urlencoded
​
这两种发送参数的方式没有区别

当你传参数时 封装类单个参数的时候

@ApiOperation(value = "登录")
@RequestMapping(value = "/login",method = RequestMethod.POST)
@ResponseBody
public ViewResult login(@RequestParam(name) String name) {return userService.login(name);
}​
@ApiOperation(value = "登录")
@RequestMapping(value = "/login",method = RequestMethod.POST)
@ResponseBody
public ViewResult login(String name) {return userService.login(name);
}

接口都可以接收到参数的,

###
POST http://localhost:6688/gzl-oauth/oauth/loginForm
Content-Type: application/x-www-form-urlencoded
Authorization: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ7XCJhY2NvdW50XCI6XCJnemx3b3JrXCIsXCJhdmF0YXJcIjpcIiQyYSQxMCRuTlU5NUhwUlMzZHUuSWRxTFl3NjB1VVlFUlBkM1RicHhmM2k5ZTZTaWJpbFJ6SWh6ZmxMdVwiLFwiYmlydGhkYXlcIjpcIjIwMTgtMDgtMDhUMDA6MDA6MDBcIixcImNvZGVcIjpcIkQwMDAxXCIsXCJjcmVhdGVEZXB0XCI6MCxcImNyZWF0ZVRpbWVcIjpcIjIwMTgtMDgtMDhUMDA6MDA6MDBcIixcImNyZWF0ZVVzZXJcIjowLFwiZGVwdElkXCI6XCIxXCIsXCJlbWFpbFwiOlwiMTgzMzA4MDg4NDFAMTYzLmNvbVwiLFwiaWRcIjo0LFwiaXNEZWxldGVkXCI6MCxcIm5hbWVcIjpcIndyb2tcIixcInBhc3N3b3JkXCI6XCIkMmEkMTAkUnlqQnYxZEhBdEdNNUZnY25rZFVUTzlISmFLTEZ4RmZMb1RWL1FlcnZEdVd5dkhiZHFWOVdcIixcInBob25lXCI6XCIxODMzMDgwODg0MVwiLFwicG9zdElkXCI6XCIxXCIsXCJyZWFsTmFtZVwiOlwiaGVyb1wiLFwicm9sZUlkXCI6XCIxXCIsXCJzZXhcIjoxLFwic3RhdHVzXCI6MSxcInRlbmFudElkXCI6XCIwMDAwMDBcIixcInVwZGF0ZVRpbWVcIjpcIjIwMTgtMDgtMDhUMDA6MDA6MDBcIixcInVwZGF0ZVVzZXJcIjowfSIsIm5iZiI6MTcyNDQ5MDg2MDQyOCwiaXNzIjoiZ3psIiwiZXhwIjoxNzI0NTc3MjYwNDI4LCJpYXQiOjE3MjQ1NzcyNjAsImp0aSI6IjFmMDBlNmQ1ZjBkNDQyZGI4OTk0MTkxMWYyZWI5ZTAzIn0.CU8or9ClcO6phMyWcYRf8eRaUBh4m1_taPDNNFT6FHo
​
name=gzlwork

第一个接口接收到参数 第二个接口接收不到参数

###
POST http://localhost:6688/gzl-oauth/oauth/loginForm
Content-Type: application/json
Authorization: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ7XCJhY2NvdW50XCI6XCJnemx3b3JrXCIsXCJhdmF0YXJcIjpcIiQyYSQxMCRuTlU5NUhwUlMzZHUuSWRxTFl3NjB1VVlFUlBkM1RicHhmM2k5ZTZTaWJpbFJ6SWh6ZmxMdVwiLFwiYmlydGhkYXlcIjpcIjIwMTgtMDgtMDhUMDA6MDA6MDBcIixcImNvZGVcIjpcIkQwMDAxXCIsXCJjcmVhdGVEZXB0XCI6MCxcImNyZWF0ZVRpbWVcIjpcIjIwMTgtMDgtMDhUMDA6MDA6MDBcIixcImNyZWF0ZVVzZXJcIjowLFwiZGVwdElkXCI6XCIxXCIsXCJlbWFpbFwiOlwiMTgzMzA4MDg4NDFAMTYzLmNvbVwiLFwiaWRcIjo0LFwiaXNEZWxldGVkXCI6MCxcIm5hbWVcIjpcIndyb2tcIixcInBhc3N3b3JkXCI6XCIkMmEkMTAkUnlqQnYxZEhBdEdNNUZnY25rZFVUTzlISmFLTEZ4RmZMb1RWL1FlcnZEdVd5dkhiZHFWOVdcIixcInBob25lXCI6XCIxODMzMDgwODg0MVwiLFwicG9zdElkXCI6XCIxXCIsXCJyZWFsTmFtZVwiOlwiaGVyb1wiLFwicm9sZUlkXCI6XCIxXCIsXCJzZXhcIjoxLFwic3RhdHVzXCI6MSxcInRlbmFudElkXCI6XCIwMDAwMDBcIixcInVwZGF0ZVRpbWVcIjpcIjIwMTgtMDgtMDhUMDA6MDA6MDBcIixcInVwZGF0ZVVzZXJcIjowfSIsIm5iZiI6MTcyNDQ5MDg2MDQyOCwiaXNzIjoiZ3psIiwiZXhwIjoxNzI0NTc3MjYwNDI4LCJpYXQiOjE3MjQ1NzcyNjAsImp0aSI6IjFmMDBlNmQ1ZjBkNDQyZGI4OTk0MTkxMWYyZWI5ZTAzIn0.CU8or9ClcO6phMyWcYRf8eRaUBh4m1_taPDNNFT6FHo
​
{"account":"gzlwork"
}

Content-Type: application/json 模式接口实现时需要添加@RequestBody @RequestParam 注解 接口才能接收到http传的json数据

如果没有添加注解 默认的是Content-Type: application/x-www-form-urlencoded 表单提交 我们也能注意到 当使用@RequestParam注解的时候,使用表单提交参数也是能接收到参数的


http://www.mrgr.cn/news/9812.html

相关文章:

  • 图片工具箱:一键批量加水印,守护创意,提升效率!
  • uniapp实现苹果账号登录
  • 【JavaEE】SpringBoot 统一功能处理:拦截器、统一数据返回与异常处理的综合应用与源码解析
  • sourcetree 拉取代码时报错
  • 做项目过程中问题小汇总2 | mongodb express
  • tensorflow新建op (cpp)
  • 等保测评中的安全测试方法
  • 基于imx6ull平台opencv的图像采集和显示屏LCD显示功能(不带Qt界面)
  • 科技温柔拥抱梦乡!康姿百德柔压磁性枕舒适与科技的甜蜜邂逅
  • 搭建自己的金融数据源和量化分析平台(七):定时更新上市公司所属行业门类及大类
  • React学习笔记(二)——react基础
  • 【D-DCVRP】求解DCVRP改进贪婪算法(三)
  • Maven的一些相关知识【重修】《包括私服搭建!》
  • 【QA-MISRA】在客户端如何修改当前用户的密码
  • Android笔试面试题AI答之Kotlin常见考点总结
  • linux——驱动——GPIO子系统
  • 【CSS】实现伪元素层级在父元素之下
  • 打卡第五十天:图论理论基础、深度优先搜索理论基础、所有可达路径、广度优先搜索理论基础
  • MySQL的安装配置教程
  • Kotlin OpenCV 图像图像51图片轮廓获取