`

RESTEasy 系列 Chapter 5 @PathParam

 
阅读更多

 

@PathParam是一个参数注解,允许你映射URI路径片断变量到你的方法调用。

 

 

@Path("/library")
public class Library {

   @GET
   @Path("/book/{isbn}")
   public String getBook(@PathParam("isbn") String id) {
      // search my database and get a string representation and return it
   }
}

 

 

 

这允许你在你的资源当中,在你的URI内嵌入变量识别。在上面的示例,我们需要访问的书本信息通过一个URI参数isbn,你注入的该参数的类型可以是基本类型,一个字符串,或者任何拥有接收一个字符串参数构造方法的Java对象,或一个静态的接收字符串参数的valueOf方法。示例中,比方说我们希望isbn是一个真正的对象,我们可以这样做:

 

   @GET
   @Path("/book/{isbn}")
   public String getBook(@PathParam("isbn") ISBN id) {...}


   public class ISBN {
      public ISBN(String str) {...}
   }

 

 

或者代替公共的String构造方法,拥有一个valueOf方法:

 

 

  public class ISBN {
     
     public static ISBN valueOf(String isbn) {...}
  }

 

 

5.1. 高级 @PathParam 和正则表达式

 

 

@PathParams有一些更复杂的使用在上一章节中没有讨论。

 

你可以指定一个或多个路径参数嵌入到一个URI片断,下面是一些示例:

 

1. @Path("/aaa{param}bbb")
2. @Path("/{name}-{zip}")
3. @Path("/foo{name}-{zip}bar")

 

所以,一个URI "/aaa111bbb" 将匹配 #1. "/bill-02115" 将匹配 #2. "foobill-02115bar" 将匹配#3.

 

之前我们讨论了你能够如何使用正则表达式到@Path的value:

 

@GET
@Path("/aaa{param:b+}/{many:.*}/stuff")
public String getIt(@PathParam("param") String bs, @PathParam("many") String many) {...}

  

下面的这些请求,让我们看看"param" 和 "many" 将会是哪些值:

 

Table 5.1. 

Request

param

many

GET /aaabb/some/stuff

bb

some

GET /aaab/a/lot/of/stuff

b

a/lot/of

 

 

5.2. @PathParam 和 PathSegment

 

关于URI路径调用规范有一个非常简单抽象的片断检查,

javax.ws.rs.core.PathSegment:

 

 

 

public interface PathSegment {

    /**
     * Get the path segment.
     * <p>
     * @return the path segment
     */
    String getPath();
    /**
     * Get a map of the matrix parameters associated with the path segment
     * @return the map of matrix parameters
     */
    MultivaluedMap<String, String> getMatrixParameters();
    
}

 

 

 

 

你要以在resteasy注入一个

PathSegment代替你的

@PathParam的value:

 

 

 

 

 

 

   @GET
   @Path("/book/{id}")
   public String getBook(@PathParam("id") PathSegment id) {...}

 

 

 

 

 

 

这是非常有用的,如果你有一堆的

@PathParam使用矩阵参数。矩阵参数的想法是,它们是嵌入在URI路径片断的任意一对name-value对集合。PathSegment对象允许您访问这些参数,也看到

MatrixParam。

 

 

一个矩阵参数的例子:

 

 

 

 

GET http://host.com/library/book;name=EJB 3.0;author=Bill Burke

 

矩阵参数的基本思想是,它代表的资源是可寻址的,来自于它们的属性以及它们的原始id。

分享到:
评论

相关推荐

    RESTEasy @path 与正则表达式映射

    5. **路径前缀**:有时,我们可能希望在所有资源路径前添加一个公共前缀。这可以通过在应用配置中定义一个基路径,然后在每个资源类上使用相对路径来实现。 6. **正则表达式限制**:尽管 RESTEasy 支持正则表达式,...

    Netty-Resteasy-Spring

    Resteasy + Spring + Netty sample Inject resteasy provider / controllers as spring bean Authentication Run at Main.java Test http://localhost:8082/resteasy/hello/world 教程 jax-rs规范用法: ...

    Resteasy英文文档

    列举了一系列配置选项,允许开发者根据需求调整Resteasy的行为,如性能优化、安全性增强等。 #### 3.7 javax.ws.rs.core.Application 深入探讨`Application`类的作用,它是Resteasy应用的核心组件之一,负责初始化...

    RestEasy简介

    5. **集成性**: RestEasy可以与Spring、CDI等容器无缝集成,方便管理和部署REST服务。 6. **拦截器和过滤器**: 提供拦截器和过滤器机制,可以在请求处理前后执行自定义逻辑,比如日志记录、权限检查等。 7. **...

    Spring整合RestEasy示例工程源码

    - **RestEasy的注解**:如`@Path`定义资源路径,`@QueryParam`处理查询参数,`@PathParam`处理路径参数等。 - **Spring的依赖注入**:通过`@Autowired`注解,RestEasy的服务实现可以注入所需的服务或资源。 - **...

    RESTEasy实现上传下载文件

    public Response downloadFile(@PathParam("filename") String filename) { // 读取文件并返回响应 } } ``` 3. **使用Guice进行依赖注入** 首先,我们需要创建一个`Module`类,定义注入的绑定: ```java ...

    resteasy开发手册

    RESTEasy是一款支持Java的RESTful Web Services实现,它是JAX-RS标准的一个参考实现。JAX-RS(Java API for RESTful Web Services)是一个Java编程语言的应用程序接口,用于开发基于REST架构风格的Web服务。RESTEasy...

    resteasy guide

    RESTEasy不仅仅是一个框架,它还包含了一系列的工具和特性,帮助开发者在不同的环境中(如独立应用服务器或嵌入式环境中)构建和部署RESTful服务。 ### 二、RESTEasy的学习文档 RESTEasy的学习文档包含了从入门到...

    resteasy2.2.1官方jar包

    2. **注解驱动**:Resteasy支持多种JAX-RS注解,如`@Path`、`@PathParam`、`@QueryParam`、`@HeaderParam`、`@CookieParam`和`@FormParam`,用于处理HTTP请求的不同部分,如路径参数、查询参数、头信息和表单数据。...

    Resteasy JAX-RS 3.0.6-all.zip最新官方zip包

    Resteasy JAX-RS 3.0.6-all.zip 是一个包含了Resteasy框架的最新官方版本,该框架是基于Java的,主要用于实现JAX-RS(Java API for RESTful Web Services)规范。JAX-RS是一种标准接口,它定义了如何在Java应用程序...

    resteasy实例demo

    5. **参数绑定**:在方法参数上使用`@PathParam`、`@QueryParam`、`@HeaderParam`、`@CookieParam`等注解,可以从URL路径、查询字符串、HTTP头或Cookie中提取值,传递给方法。 6. **返回类型**:RestEasy支持多种...

    resteasy-reference-guide-en-US

    ### RESTEasy JAX-RS:RESTful Web Services for Java #### 概述 RESTEasy是一个为Java开发人员提供创建RESTful Web服务的强大框架。它基于JAX-RS规范(JSR 311 和 JSR 339),并且包含了丰富的功能集来支持HTTP...

    RESTEasy JSON DEMO

    RESTEasy JSON DEMO是一个关于如何使用RESTEasy框架处理JSON数据的示例项目。RESTEasy是一个开源的Java框架,它使得开发基于JAX-RS(Java API for RESTful Web Services)的应用变得简单。JAX-RS是Java标准,用于...

    resteasy-jaxrs-2.3.2官方jar包

    5. **客户端API**:RESTEasy不仅提供服务端实现,还有强大的客户端API。开发者可以通过`ResteasyClient`和`ResteasyWebTarget`创建和执行HTTP请求,获取响应。 6. **拦截器和过滤器**:RESTEasy支持拦截器和过滤器...

    resteasy使用netty

    RestEasy与Netty结合使用,可以构建高性能的RESTful服务,摆脱传统的Servlet容器如Tomcat的依赖。RestEasy是JBoss公司开发的一个Java框架,它实现了JSR 311和JSR 339(Java API for RESTful Web Services)标准,...

    RestEasy使用说明

    由于RESTEasy隶属于JBoss,因此与JBoss应用服务器的集成非常紧密,但这并不限制它的使用范围,RESTEasy同样可以在任何支持JDK 5或更高版本的Servlet容器中运行。 **RESTEasy的特点与功能** 1. **无配置文件需求**...

    resteasy手册

    resteasy

    使用 RestEasy 和 Apache Tomcat 构建 RESTful Web 服务

    例如,可以使用`@QueryParam`、`@PathParam`、`@MatrixParam`和`@FormParam`注解来处理请求参数,`@Context`注解注入上下文对象,如`UriInfo`和`HttpServletRequest`。 在实际项目中,可能还需要结合其他工具,如...

    resteasy helloworld demo

    【RESTEasy HelloWorld 示例详解】 RESTEasy 是一个开源的 Java 框架,它实现了 JAX-RS(Java API for RESTful Web Services)规范,使得开发者能够轻松地在 Java 应用程序中创建 RESTful 服务。JAX-RS 是一种用于...

    resteasy技术说明

    RESTEasy 不仅可以无缝集成到 JBoss 应用服务器中,而且可以在任何支持 JDK 5 或更高版本的 Servlet 容器上运行。 ## RESTEasy 的特性与优势 1. **无需配置文件**:只需将 JAR 包放入类路径,并使用 @Path 注解...

Global site tag (gtag.js) - Google Analytics