介绍

在本篇文章中,我们将研究如何在 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 头信息相关推荐

  1. 获取异常信息_如何在 ASP.NET Core 中实现全局异常拦截

    异常是一种运行时错误,当异常没有得到适当的处理,很可能会导致你的程序意外终止,这篇就来讨论一下如何在 ASP.Net Core MVC 中实现全局异常处理,我会用一些 样例代码 和 截图 来说明这些概 ...

  2. delphi 异步 调用 带参数_如何在 Spring 异步调用中传递上下文

    什么是异步调用? 异步调用是相对于同步调用而言的,同步调用是指程序按预定顺序一步步执行,每一步必须等到上一步执行完后才能执行,异步调用则无需等待上一步程序执行完即可执行.异步调用指,在程序在执行时,无 ...

  3. android google map v2 获取当前位置,如何在google map v2中获取当前位置信息?

    代码来获得用户 public void getMyLocation(Activity activity) { int requestPermissionsCode = 50; LocationMana ...

  4. java注解返回不同消息,Spring MVC Controller中的一个读入和返回都是JSON的方法如何获取javax.validation注解的异常信息...

    Spring MVC Controller中的一个读入和返回都是JSON的方法怎么获取javax.validation注解的错误信息? 本帖最后由 LonelyCoder2012 于 2014-03- ...

  5. spring mvc在Controller中获取ApplicationContext

    spring mvc在Controller中获取ApplicationContext web.xml中进行正常的beans.xml和spring-mvc.xml的配置: 需要在beans.xml中进行 ...

  6. python查看系统进程_在Python中获取操作系统的进程信息

    本文主要介绍在 Python 中使用 psutil 获取系统的进程信息. 1 概述 psutil 是 Python 的一个进程和系统工具集模块,通过使用 psutil,我们可以在 Python 中获取 ...

  7. Spring的工具类,方便在非spring管理环境中获取bean

    场景 在SpringBoot的后台项目中,如果想要引入并且调用某个bean,可以直接通过注解的方式. 比如在单元测试中引入某业务的Controller @RunWith(SpringJUnit4Cla ...

  8. java 从一个容器获取对象,如何从 Spring IoC 容器中获取对象?

    前面几篇文章主要分析了 Spring IoC 容器如何初始化,以及解析和注册我们定义的 bean 信息. 其中,「Spring 中的 IoC 容器」对 Spring 中的容器做了一个概述,「Sprin ...

  9. 服务器如何获取客户端证书,如何在Go HTTPS服务器中获取客户端证书

    我在尝试了解如何在Go Web服务器中获取客户端证书.这里是一个服务器代码:如何在Go HTTPS服务器中获取客户端证书 package main import ( "log" & ...

最新文章

  1. linux下bus、devices和platform的基础模型
  2. 技术总监,被判刑12年!因公司未兑现股权,愤怒植入代码,牟利333万
  3. C语言指针的一些题目
  4. linux shell awk next,使用awk的next命令的方法
  5. ITK:计算网格上的测地距离
  6. 我理解中的“大前端”/“大无线”
  7. ROS入门(八) make_plan的Server连接
  8. 计算机组成原理固件,计算机组成原理(A卷)
  9. rk1808交叉编译opencv_我用AI视觉模组DIY了一个驾驶疲劳监测仪
  10. 怎样批量修改图片格式
  11. 浅谈信息学奥赛NOIP
  12. 人声歌姬语音合成器+拓展-Yamaha Vocaloid 5.0.3 + Libraries WiN 免安装版
  13. 小夜灯离线语音识别芯片IC 声控小夜灯IC
  14. x1000e rtl wifi 移植
  15. 对比度 css_更好的颜色和对比度可访问性CSS技巧
  16. JavaEE - 集合 - Collection集合
  17. Web——HTML常见标签及用法
  18. 华为服务器在哪里看型号,服务器型号怎么看
  19. 【职场管理】如果公司要你轮岗,怎么办?
  20. Windows 8.1核心版通过注册表启用Guest账号的局域网共享

热门文章

  1. oracle数据库关联查询
  2. C程序设计 电文密码——有一行电文,已按下面规律译成密码
  3. 记录webpack commonJs 加载文件规则
  4. 总结一下在ASP.NET中开发网站的一般步骤
  5. 大数据_Flink_数据处理_流处理API_Source_自定义测试数据源---Flink工作笔记0028
  6. C++_类和对象_封装_属性和行为做为整体_封装案例---C++语言工作笔记036
  7. Seata分布式事务问题由来---微服务升级_SpringCloud Alibaba工作笔记0056
  8. Python工作笔记002---PYTHON之DEF函数
  9. SVM 训练--在训练集上acc为94% 在测试集上为70%
  10. vs2008制作dll笔记