Exemple de correspondance d’URI @Path JAX-RS

Dans JAX-RS, vous pouvez utiliser @ Path pour lier un modèle d’URI à une méthode Java. Voir les exemples suivants pour vous montrer comment cela fonctionne.

1. Correspondance URI normale

Voir la correspondance d’URI normale avec l’annotation @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();

    }
}

Modèle d’URI: “ /utilisateurs

getUser is called

Modèle d’URI: “ /users/vip

getUserVIP is called

2. Correspondance URI et paramètre

La valeur entre une accolade ouverte “\ {” et une accolade étroite “}” représente un paramètre et peut être accessible avec @ 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();

    }

}

Modèle d’URI: “ /utilisateurs/mkyong

getUserByName is called, name : mkyong

Modèle d’URI: “ /users/abcdefg

getUserByName is called, name : abcdefg

3. Correspondance URI et expression régulière

@ Path prend en charge la correspondance d’URI complexe avec une expression régulière, via l’expression suivante:

{" 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();

    }

}

Modèle d’URI: “ /users/999

getUserById is called, id : 999

Modèle d’URI: “ /users/123456

getUserById is called, id : 123456

Modèle d’URI: “ /utilisateurs/nom d’utilisateur/aaa ”, échec; ne correspond pas à “[a-zA-Z][a-zA-Z 0-9]”, le premier caractère doit être remplacé par “[a-zA-Z]”, Le second caractère nécessite“[a-zA-Z 0-9]”.

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

Modèle d’URI: “ /users/username/a9

getUserByUserName is called, username : a9

Modèle d’URI: “ utilisateurs/livres/999

getUserBookByISBN is called, isbn : 999

Télécharger le code source

Téléchargez-le - lien://wp-content/uploads/2011/07/JAX-RS-Path-URI-Matching-Example.zip[JAX-RS-Path-URI-Matching-Example.zip](6 Ko)

Références

@Chemin]

lien://tag/jax-rs/[jax-rs]lien://tag/uri/[uri]