Quarkus实战:专为Kubernetes而优化的Java解决方案
上QQ阅读APP看书,第一时间看更新

3.2 提取请求参数

问题

如何使用JAX-RS提取请求参数?

解决方案

使用JAX-RS规范提供的一些内置注解。

打开org.acme.quickstart.GreetingResource.java类,并将带有请求参数的hello方法修改为如下的内容:

❶获取请求的UriInfo。UriInfo是JAX-RS的一部分,允许你获取应用和请求的URI信息

❷获取Enum类型为order的查询参数

❸获取与bean验证集成的名为authorization的头参数

打开一个新的终端窗口,启动Quarkus应用程序,并向GET方法发送一个请求:

其他请求参数可以使用注解来提取,例如表单参数(@FormParam)、矩阵参数(@MatrixParam)或cookie值(@CookieParam)。此外,使用@Context注解,你还可以注入其他与JAX-RS相关的元素,如javax.ws.rs.core.SecurityContext、javax.ws.rs.sse.SseEvent Sink或javax.ws.rs.sse.Sse。

讨论

在3.1节中,你看到了如何使用JAX-RS创建REST API端点,但是你通常需要从一个请求中提取更多的信息,而不仅仅是主体内容。

在使用Quarkus和JAX-RS时,需要重点注意,默认情况下,Quarkus使用RESTEasy直接与Vert.x一起工作,而不使用任何与Servlet规范相关的东西。

一般来说,开发REST API端点可能需要的一切都得到了很好的支持,当你需要实现自定义Servlet过滤器或者直接在代码中获取HTTP请求时,Quarkus提供了替代方案。

但是,如果需要的话,你可以通过添加quarkus-undertow扩展,从而配置Quarkus在使用Servlet规范时使用RESTEasy而不是Vert.x。

另见

要了解有关JAX-RS的更多信息,请访问以下网站。

·Eclipse基金会:Jakarta RESTful Web Services(https://oreil.ly/Tgn5d

·RESTEasy(https://oreil.ly/WpJ3x