В 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 КБ)
Рекомендации
@Path in RESTEasy], http://jsr311.java.net/nonav/releases/1.1/javax/ws/rs/Path.html [JAX-RS
@Дорожка]
ссылка://тег/jax-rs/[jax-rs]ссылка://тег/uri/[uri]