JAX-RS JAVA EE This example shows how to match multiple path segments by using regex in @Path template. We can use regex [.+] or [.*] to match any characters in @Path (It is also referred as wildcard matching). That means, it will match all URIs. In following example we are matching anything between pathA and pathZ. package com.logicbig.example;
import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam;
@Path("/") public class MyResource { @GET @Path("pathA/{var:.+}/pathZ") public String test(@PathParam("var") String path){ return path; } }
The above pattern will match anything like /pathA/a/b/c/d/pathZ If we don't use any boundaries and just @Path({var:.+}) then that will match all URIs package com.logicbig.example;
import javax.ws.rs.ApplicationPath; import javax.ws.rs.core.Application; import java.util.Arrays; import java.util.HashSet; import java.util.Set;
@ApplicationPath("/") public class MyRestApp extends Application { @Override public Set<Class<?>> getClasses() { return new HashSet<>(Arrays.asList(MyResource.class)); } } pom.xml:<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion>
<groupId>com.logicbig.example</groupId> <artifactId>jaxrs-regex-all-uris</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging>
<properties> <jersey.version>2.25.1</jersey.version> </properties>
<dependencies> <dependency> <groupId>org.glassfish.jersey.core</groupId> <artifactId>jersey-server</artifactId> <version>${jersey.version}</version> </dependency> <dependency> <groupId>org.glassfish.jersey.containers</groupId> <artifactId>jersey-container-servlet</artifactId> <version>${jersey.version}</version> </dependency> <dependency> <groupId>org.glassfish.jersey.media</groupId> <artifactId>jersey-media-moxy</artifactId> <version>${jersey.version}</version> </dependency> <dependency> <groupId>org.glassfish.jersey.test-framework.providers</groupId> <artifactId>jersey-test-framework-provider-jdk-http</artifactId> <version>${jersey.version}</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <path>/</path> </configuration> </plugin> </plugins> </build> </project>
|