Пример соответствия JAX-RS @Path URI

В JAX-RS вы можете использовать @ Path для привязки шаблона URI к методу Java. Смотрите следующие примеры, чтобы показать вам, как это работает.

1. Нормальное соответствие URI

Смотрите нормальное совпадение URI с аннотацией @Path.

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

@Path("/users")
public class UserRestService {

    @GET
    public Response getUser() {

        return Response.status(200).entity("getUser is called").build();

    }

    @GET
    @Path("/vip")
    public Response getUserVIP() {

        return Response.status(200).entity("getUserVIP is called").build();

    }
}

Шаблон URI: « /users »

getUser is called

Шаблон URI: « /users/vip »

getUserVIP is called

2. Соответствие URI и параметра

Значение в открытой фигурной скобке «\ {» и закрытой фигурной скобке «}» представляет параметр и может быть доступно с помощью @ PathParam .

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;

@Path("/users")
public class UserRestService {

    @GET
    @Path("{name}")
    public Response getUserByName(@PathParam("name") String name) {

        return Response.status(200)
            .entity("getUserByName is called, name : " + name).build();

    }

}

Шаблон URI: « /users/mkyong »

getUserByName is called, name : mkyong

Шаблон URI: « /users/abcdefg »

getUserByName is called, name : abcdefg

3. Соответствие URI и регулярное выражение

@ Path поддерживает сложное сопоставление URI с регулярным выражением через следующее выражение:

{" variable-name[":" regular-expression]"}
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;

@Path("/users")
public class UserRestService {

    @GET
    @Path("{id : \\d+}")//support digit only
    public Response getUserById(@PathParam("id") String id) {

       return Response.status(200).entity("getUserById is called, id : " + id).build();

    }

    @GET
    @Path("/username/{username :[a-zA-Z][a-zA-Z__0-9]}")
    public Response getUserByUserName(@PathParam("username") String username) {

       return Response.status(200)
        .entity("getUserByUserName is called, username : " + username).build();

    }

    @GET
    @Path("/books/{isbn : \\d+}")
    public Response getUserBookByISBN(@PathParam("isbn") String isbn) {

       return Response.status(200)
        .entity("getUserBookByISBN is called, isbn : " + isbn).build();

    }

}

Шаблон URI: « /users/999 »

getUserById is called, id : 999

Шаблон URI: « /users/123456 »

getUserById is called, id : 123456

Шаблон URI: « /users/username/aaa », не удалось, не соответствует «[a-zA-Z][a-zA-Z 0-9]», для первого символа требуется «[a-zA-Z]», Второму символу нужно«[a-zA-Z 0-9]».

Could not find resource for relative :/users/username/aaa

Шаблон URI: « /users/username/a9 »

getUserByUserName is called, username : a9

Шаблон URI: « users/books/999 »

getUserBookByISBN is called, isbn : 999

Скачать исходный код

Загрузить его - ссылка://wp-content/uploads/2011/07/JAX-RS-Path-URI-Matching-Example.zip[JAX-RS-Path-URI-Matching-Example.zip](6 КБ)

Рекомендации

@Дорожка]

ссылка://тег/jax-rs/[jax-rs]ссылка://тег/uri/[uri]