头信息_如何在 Spring REST Controller 中获取 HTTP 头信息
介绍
在本篇文章中,我们将研究如何在 Spring Rest Controller 中访问 HTTP 头信息。
首先,我们将使用 @RequestHeader 注解分别或同时读取 HTTP 头信息。
之后,我们将深入研究 @RequestHeader 的属性。
获取 HTTP 头信息
获取单个 HTTP 头信息
如果我们需要访问一个特定的 HTTP 头信息,我们可以用头名配置 @RequestHeader:
然后,我们可以使用传递给我们方法的变量来访问该值。 如果在请求中找不到名为 accept-language 的头信息,则该方法将返回“400 Bad Request”错误。
我们的头信息不一定是字符串。例如,如果我们知道我们的头是一个数字,我们可以声明我们的变量为一个数字类型:
获取多个 HTTP 头信息
如果我们不确定会出现哪些头文件,或者我们需要的头文件比方法签名中需要的多,我们可以使用 @RequestHeader 注释,而不需要特定的名称。
对于变量类型,我们有几种选择:Map,MultiValueMap 或 HttpHeaders 对象。
首先,让我们以 Map 的形式获取请求的头信息:
如果我们使用 Map,并且其中一个头信息具有多个值,则只能获得第一个值。这等效于在 MultiValueMap 上使用 getFirst() 方法。
如果我们的头信息可能有多个值,我们可以将它们作为 MultiValueMap 进行获取:
我们还可以将 headers 作为 HttpHeaders 对象获取:
当我们从 Map,MultiValueMap 或 HttpHeaders 对象中按名称访问头信息时,如果不存在则返回空。
@RequestHeader 属性
现在,我们已经了解了使用 @RequestHeader 注解获取请求头的基础知识,让我们仔细看一下其属性。
当我们指定 Header 时,我们已经隐式地使用了 name 或 value 属性:
我们可以通过使用 name 属性来完成同样的事情:
接下来,让我们以完全相同的方式使用 value 属性:
当我们指定获取一个头信息时,默认情况下该头信息是必需的。如果在请求中没有找到该头信息,控制器将返回一个 400 错误。
我们可以使用 required 属性来表示我们的头不是必需的:
如果该头信息在请求头中不存在,则变量将为 null,因此确保程序能够正常运行,我们进行适当的空值检查。
让我们使用 defaultValue 属性为头信息提供默认值:
结束语
在这个简短的教程中,我们学习了如何在 Spring REST Controllers 中访问请求头。首先,我们使用 @RequestHeader 注解为 Controller 方法获取请求头。
在了解了基础知识之后,我们详细研究了 @RequestHeader 注解的属性。
感谢大家的观看,欢迎关注我的头条号。
头信息_如何在 Spring REST Controller 中获取 HTTP 头信息相关推荐
- 获取异常信息_如何在 ASP.NET Core 中实现全局异常拦截
异常是一种运行时错误,当异常没有得到适当的处理,很可能会导致你的程序意外终止,这篇就来讨论一下如何在 ASP.Net Core MVC 中实现全局异常处理,我会用一些 样例代码 和 截图 来说明这些概 ...
- delphi 异步 调用 带参数_如何在 Spring 异步调用中传递上下文
什么是异步调用? 异步调用是相对于同步调用而言的,同步调用是指程序按预定顺序一步步执行,每一步必须等到上一步执行完后才能执行,异步调用则无需等待上一步程序执行完即可执行.异步调用指,在程序在执行时,无 ...
- android google map v2 获取当前位置,如何在google map v2中获取当前位置信息?
代码来获得用户 public void getMyLocation(Activity activity) { int requestPermissionsCode = 50; LocationMana ...
- java注解返回不同消息,Spring MVC Controller中的一个读入和返回都是JSON的方法如何获取javax.validation注解的异常信息...
Spring MVC Controller中的一个读入和返回都是JSON的方法怎么获取javax.validation注解的错误信息? 本帖最后由 LonelyCoder2012 于 2014-03- ...
- spring mvc在Controller中获取ApplicationContext
spring mvc在Controller中获取ApplicationContext web.xml中进行正常的beans.xml和spring-mvc.xml的配置: 需要在beans.xml中进行 ...
- python查看系统进程_在Python中获取操作系统的进程信息
本文主要介绍在 Python 中使用 psutil 获取系统的进程信息. 1 概述 psutil 是 Python 的一个进程和系统工具集模块,通过使用 psutil,我们可以在 Python 中获取 ...
- Spring的工具类,方便在非spring管理环境中获取bean
场景 在SpringBoot的后台项目中,如果想要引入并且调用某个bean,可以直接通过注解的方式. 比如在单元测试中引入某业务的Controller @RunWith(SpringJUnit4Cla ...
- java 从一个容器获取对象,如何从 Spring IoC 容器中获取对象?
前面几篇文章主要分析了 Spring IoC 容器如何初始化,以及解析和注册我们定义的 bean 信息. 其中,「Spring 中的 IoC 容器」对 Spring 中的容器做了一个概述,「Sprin ...
- 服务器如何获取客户端证书,如何在Go HTTPS服务器中获取客户端证书
我在尝试了解如何在Go Web服务器中获取客户端证书.这里是一个服务器代码:如何在Go HTTPS服务器中获取客户端证书 package main import ( "log" & ...
最新文章
- linux下bus、devices和platform的基础模型
- 技术总监,被判刑12年!因公司未兑现股权,愤怒植入代码,牟利333万
- C语言指针的一些题目
- linux shell awk next,使用awk的next命令的方法
- ITK:计算网格上的测地距离
- 我理解中的“大前端”/“大无线”
- ROS入门(八) make_plan的Server连接
- 计算机组成原理固件,计算机组成原理(A卷)
- rk1808交叉编译opencv_我用AI视觉模组DIY了一个驾驶疲劳监测仪
- 怎样批量修改图片格式
- 浅谈信息学奥赛NOIP
- 人声歌姬语音合成器+拓展-Yamaha Vocaloid 5.0.3 + Libraries WiN 免安装版
- 小夜灯离线语音识别芯片IC 声控小夜灯IC
- x1000e rtl wifi 移植
- 对比度 css_更好的颜色和对比度可访问性CSS技巧
- JavaEE - 集合 - Collection集合
- Web——HTML常见标签及用法
- 华为服务器在哪里看型号,服务器型号怎么看
- 【职场管理】如果公司要你轮岗,怎么办?
- Windows 8.1核心版通过注册表启用Guest账号的局域网共享
热门文章
- oracle数据库关联查询
- C程序设计 电文密码——有一行电文,已按下面规律译成密码
- 记录webpack commonJs 加载文件规则
- 总结一下在ASP.NET中开发网站的一般步骤
- 大数据_Flink_数据处理_流处理API_Source_自定义测试数据源---Flink工作笔记0028
- C++_类和对象_封装_属性和行为做为整体_封装案例---C++语言工作笔记036
- Seata分布式事务问题由来---微服务升级_SpringCloud Alibaba工作笔记0056
- Python工作笔记002---PYTHON之DEF函数
- SVM 训练--在训练集上acc为94% 在测试集上为70%
- vs2008制作dll笔记