休息顶部

通过参考,使用Spring 5和Spring Boot 2开始学习春天课程:

>>查看课程

1.介绍

在这个快速的教程中,我们将研究如何访问HTTP标题春季休息控制器

首先,我们将使用@requestheader.注释单独读取标题以及一起读取标题。

之后,我们会更深入地看看@requestheader.的属性。

进一步阅读:

Spring RequestMapping.

Spring @RequestMapping - 基本示例,@RequestParam,@PathVariable,标题映射

如何在春天5的响应上设置标题

了解如何在特定响应或春季的所有响应上设置标题。

使用春天响应性来操纵HTTP响应

了解如何使用响应类类操纵HTTP响应。

2.访问HTTP标头

2.1。单独

如果我们需要访问特定标题,我们可以配置@requestheader.使用标题名称:

@getmapping(“/问候”)公共anderthentity 问候语(@requestheader(“接受语言”)字符串语言){//使用语言变量的代码返回新的andertentity (问候语,httpstatus.ok);}

然后,我们可以使用传递给我们方法的变量访问该值。如果标题命名接受语言在请求中找不到,该方法返回“400不良请求”错误。

我们的标题不必串。例如,如果我们知道我们的标题是一个数字,我们可以将我们的变量声明为数字类型:

@getmapping(“/ double”)publiceNateLentity  DoubleNumber(@RequestHeader(“my-number”)int mynumber){return new andertentity (string.format(“%d * 2 =%d”,mynumber,(MyNumber * 2)),httpstatus.ok);}

2.2。一次全部

如果我们不确定出现哪个标题,或者我们需要更多的标题,而不是我们在方法的签名中比我们想要的更多,我们可以使用@requestheader.没有特定名称的注释。

我们的变量类型有几个选择:a地图, 一种多级美容或者httpheaders.目的。

首先,让我们作为一个要求标题作为一个地图

@getmapping(“/ listheaders”)publice alynateTentity  ListAllHeaders(@RequestHeader映射标题){标题.Foreach((key,value) - > {log.info(String.info(String.info(“标题”%)s'=%s“,键,值));});返回新的andertentity (string.format(“列出%d标题”,headers.size()),httpstatus.ok);}

如果我们使用a地图其中一个标题有一个以上的值,我们只会获得第一个值。这是相当于使用的GetRirst.A上的方法多级美容

如果我们的标题可能有多个值,我们可以将它们作为一个多级美容

@getMapping(“/ multivalue”)公共anallytentity  multivalue(@requestheader multigaluemap 标题){标题s'=%s“,key,value.stream()。收集(收集器.Joining(”|“))));});返回新的andertentity (string.format(“列出%d标题”,headers.size()),httpstatus.ok);}

我们也可以得到我们的标题作为A.httpheaders.目的:

@getmapping(“/ getBaseURL”)公共响应 getBaseURL(@RequestHeader HttPheaders标题){inetsocketaddress host = headers.gethost();字符串URL =“http://”+ host.gethostname()+“:”+ host.getport();返回新的andertentity (String.format(“基本URL =%s”,URL),httpstatus.ok);}

httpheaders.对象具有用于公共应用标题的访问器。

当我们按名称访问标题时地图多级美容或者httpheaders.对象,我们会得到一个空值如果它不存在。

3.@requestheader.属性

现在我们已经走过了访问请求标题的基础知识@requestheader.注释,让我们仔细看看它的属性。

我们已经使用过了名称或者价值当我们专门命名为我们的标题时,隐式属性:

公共响应问候语(@RequestHeader(“接受语言”)字符串语言){}

我们可以通过使用它来完成同样的事情名称属性:

公共响应问候语(@requestheader(name =“接受语言”)字符串语言){}

接下来,让我们使用价值完全相同的属性:

公共响应问候语(@RequestHeader(value =“接受语言”)字符串语言){}

当我们专门命名标题时,默认情况下需要标题。如果在请求中找不到标题,则控制器返回400个错误。

让我们使用必需的属性表示不需要我们的标题:

@getmapping(“/ nonequiredhearer”)公共anderthententity  evaluatenOnrequireder(@RequestHeader(value =“可选 - 标题”,必需= false)字符串可选原告)){return new andertentity (String.format(“是可选标题当前?%s!“,(可选原告== null?”否“:”是“)),httpstatus.ok);}

自从我们的变量将是空值如果请求中的标题不存在,我们需要一定要做适当的空值检查。

让我们使用默认值属性为我们的标题提供默认值:

@getMapping(“/默认”)公共anderthententity  evaluewaultheadervalue(@requestheader(value =“可选 - 标题”,defaultvalue =“3600”)int可选原告){return new anderthentity (string.format(“可选标题是%d“,可选原告),httpstatus.ok);}

4。结论

在此简短的教程中,我们学会了如何在Spring Rest控制器中访问请求标题。首先,我们使用了@requestheader.注释要为我们的控制器方法提供请求标头。

看看基础之后,我们详细了解属性@requestheader.注解。

示例代码可用在github上

休息底部

使用Spring 5和Spring Boot 2开始,通过学习春天课程 :

>>查看课程
评论在本文上关闭!