前往掘金查看:https://juejin.im/post/5d05e5f9f265da1b6c5f74b4

前言

在开发中,我们常常会碰到多种传参的方式。这里,我们就来总结下,springboot中可以运用到的接受参数的方式。

URL参数

这种参数,组合在url上,形如url/{id}。在springboot中,接受此类参数可以使用PathVariable注解,如下:

@GetMapping(value = "/param/{id}")
public Object pathVariable(@PathVariable(value = "id") Integer id) {
return id;
}

测试

表单参数类型

这种参数形如:name=xxx&age=xxx。可能是拼接在url上的,如get方法,也可能是放在http requestBody 里面的。这种参数可以使用RequestParam注解接受,比如:

@PostMapping(value = "/param")
public Object queryString(@RequestParam(value = "username") String name,
String remark) {
Map<String, String> map = new HashMap<>();
map.put("name", name);
map.put("remark", remark);
return map;
}

这里使用RequestParam注解,把username参数接受到了name,而第二个参数remark没有使用RequestParam注解,这是因为如果请求参数和方法参数一致的话,可以省略RequestParam注解。

测试如下:

第一种:直接把请求参数放在url上

请求参数放在url上

第二种:请求参数放在body上

点击postman的code,查看curl的格式,可以看出是name=xxx&age=xxx的形式

json类型

这种类型是目前最流行的,在restful风格下,目前几乎所有的系统都使用json的形式进行数据传递。

我们先定义一个Person类,用来做参数接受类,其中字段命名要与json参数的key一致。

public static class Person {
private String username;
private String remark;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}

我们可以使用RequestBody注解来接受json参数

@PostMapping(value = "/param/json")
public Object json(@RequestBody Person person) {
return person;
}

测试

如果我们不想定义一个对象来接受参数,大可以使用Map来接收。

@PostMapping(value = "/param/map")
public Object map(@RequestBody Map data) {
System.out.println(data.get("username"));
System.out.println(data.get("remark"));
return data;
}

接受请求头

有些接口要求用请求头传递参数,比如使用token鉴权的系统,token一般都携带在请求头上,或者在cookie上(cookie也在请求头上)。我们可以使用RequestHeader注解来接受,如下:

@GetMapping(value = "/param/header")
public Object header(@RequestHeader(value = "token") String token) {
return token;
}

接受cookie参数

接受cookie参数,可以使用CookieValue注解来接受

 @GetMapping(value = "/param/cookie")
public Object cookie(@CookieValue(name = "token") String token) {
return token;
}

【快学springboot】3.多种接受参数的方式的更多相关文章

  1. 【快学springboot】4.接口参数校验

    前言 在开发接口的时候,参数校验是必不可少的.参数的类型,长度等规则,在开发初期都应该由产品经理或者技术负责人等来约定.如果不对入参做校验,很有可能会因为一些不合法的参数而导致系统出现异常. 上一篇文 ...

  2. 【快学SpringBoot】Spring Cache+Redis实现高可用缓存解决方案

    前言 之前已经写过一篇文章介绍SpringBoot整合Spring Cache,SpringBoot默认使用的是ConcurrentMapCacheManager,在实际项目中,我们需要一个高可用的. ...

  3. 【快学springboot】12.实现拦截器

    前言 之前在[快学springboot]6.WebMvcConfigurer配置静态资源和解决跨域里有用到WebMvcConfigurer接口来实现静态资源的映射和解决跨域请求,并且在文末还说了Web ...

  4. 【快学springboot】13.操作redis之String数据结构

    前言 在之前的文章中,讲解了使用redis解决集群环境session共享的问题[快学springboot]11.整合redis实现session共享,这里已经引入了redis相关的依赖,并且通过spr ...

  5. 【快学springboot】8.JPA乐观锁OptimisticLocking

    介绍 当涉及到企业应用程序时,正确地管理对数据库的并发访问是至关重要的.为此,我们可以使用Java Persistence API提供的乐观锁定机制.它导致在同一时间对同一数据进行多次更新不会相互干扰 ...

  6. 「快学springboot」16.让swagger帮忙写接口文档

    swagger简介 官方的介绍 THE WORLD'S MOST POPULAR API TOOLING Swagger is the world's largest framework of API ...

  7. 【快学SpringBoot】快速上手好用方便的Spring Cache缓存框架

    前言 缓存,在开发中是非常常用的.在高并发系统中,如果没有缓存,纯靠数据库来扛,那么数据库压力会非常大,搞不好还会出现宕机的情况.本篇文章,将会带大家学习Spring Cache缓存框架. 原创声明 ...

  8. 【快学springboot】使用springboot发送邮件

    前言 在实际项目中,经常需要用到邮件通知功能.比如,用户通过邮件注册,通过邮件找回密码等:又比如通过邮件发送系统情况,通过邮件发送报表信息等等,实际应用场景很多.这篇文章,就教大家通过springbo ...

  9. 【快学springboot】2.Restful简介,SpringBoot构建Restful接口

    Restful简介 Restful一种软件架构风格.设计风格,而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现 ...

随机推荐

  1. 安装多个xcode对homebrew影响

    安装多个xcode,可能会导致无法识别默认使用哪个xcode的情况,这时候执行下列语句,设置默认xcode sudo xcode-select --switch /Applications/Xcode ...

  2. python 处理html文本的中文字符gbk转utf-8

    #中文字符gbk转utf-8 def gbk2utf8(self,raw): rs=raw.encode('raw_unicode_escape') #转为机器识别字符串 s=repr(rs) ss= ...

  3. SpringCloud全家桶学习之分布式配置中心----Config(七)

    一.概述 (1)背景 微服务意味着将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中出现大量的服务.由于每个服务都需要配置必要的配置信息才能运行,所以一套集中式的.动态的配置管理 ...

  4. disconf---分布式配置管理平台的搭建(linux版本)

    一.获取disconf的代码 地址:https://github.com/knightliao/disconf 二.搭建基础服务 ①redis,mysql,zookeeper在博主的其他博文中有相应搭 ...

  5. C语言知识点记录

    1,栈底指针不变,栈顶指针变化. 2,结构化程序包括:顺序,分支,循环. 3,详细设计的任务是为软件结构图的每一个模块确定实现算法和局部数据结构. 4,数据操纵语言:负责数据的操纵,包括查询及增,删, ...

  6. tomcat 开机自启

    d /usr/lib/systemd/system touch tomcat.service chmod 777 tomcat.service vi tomcat.service [Unit]Desc ...

  7. Ubuntu 18 设置静态 IP

    在Ubuntu 18中使用 netplan 命令 首先 cd /etc/netplan/ 找到 *.yaml文件(每个人可能不一样),编辑它 root@waydeserver:/etc/netplan ...

  8. 《JavaScript高级程序设计》读书笔记(五)引用类型

    内容---使用对象---创建并操作数组---理解基本的JavaScript类型---使用基本类型和基本包装类型 引用类型--引用类型的值(对象)是引用类型的一个实例--在ECMAScript中,引用类 ...

  9. Java入门笔记 09-集合

    一.Collection接口方法:Collection 接口是 List.Set 和 Queue 接口的父接口,该接口里定义的方法既可用于操作 Set 集合,也可用于操作 List 和 Queue 集 ...

  10. 吴裕雄--天生自然Python Matplotlib库学习笔记:matplotlib绘图(2)

    import numpy as np import matplotlib.pyplot as plt fig = plt.figure() fig.subplots_adjust(bottom=0.0 ...