JAX-RS: Multiple paths

后端 未结 3 1447
耶瑟儿~
耶瑟儿~ 2020-12-05 01:43

Is it possible to do something like that?

import javax.ws.rs.GET;
import javax.ws.rs.Path;

public class xxx
{
  @GET
  @Path(value = \"path1\")
  public Res         


        
相关标签:
3条回答
  • 2020-12-05 02:34
    @Path("/{a:path1|path2}")
    

    From resteasy docs: http://docs.jboss.org/resteasy/docs/1.0.2.GA/userguide/html_single/index.html#_Path_and_regular_expression_mappings

    0 讨论(0)
  • 2020-12-05 02:40

    Some extra details about Path annotation...

    As a previous responses state, regular expressions to be used with in the annotated path declaration mapping:

    {" variable-name [ ":" regular-expression ] "} 
    

    You can declare multiple paths, but there is also a path hierarchy that was not immediately obvious to me whereby the class annotated path prefixes the following method path annotations. One might write the following class for a concise multiple path option which could be useful for resource versioning perhaps.

    @Path("/{a:v1|v2}")
    @Produces("text/*")
    public class BlahResource {
    
        @GET
        @Path("/blah")
        public Response m1() {
            return Response.ok("blah").build();
        }
    }
    

    Please note the fact that the class "BlahResource" has been declared with the path "/v1" or "/v2" making the resource accessible as:

    $ curl localhost:8080/v1/blah
    blah
    

    and also

    $ curl localhost:8080/v2/blah
    blah
    
    0 讨论(0)
  • 2020-12-05 02:41

    yes you can do that although you will have to rename your methods so that their signature is different.

    Update: Check Dieter Cailliau's answer, @Path("/{a:path1|path2}") is probably what you want...

    public class BlahResource{
        @GET
        @Path("path1")
        public Response m1(){
            return Response.ok("blah").build();
        }
    
        @GET
        @Path("path2")
        public Response m2(){
            return this.m1();
    }
    

    you can check JSR-311's API and it's reference implementation named "jersey" there:

    JSR311 API

    Jersey

    0 讨论(0)
提交回复
热议问题