JAX-RS @Path URI-Übereinstimmungsbeispiel

In JAX-RS können Sie mit @ Path ein URI-Muster an eine Java-Methode binden. Die folgenden Beispiele zeigen Ihnen, wie es funktioniert.

1. Normaler URI-Abgleich

Siehe normale URI-Übereinstimmung mit @Path-Annotation.

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-Muster: " /users "

getUser is called

URI-Muster: " /users/vip "

getUserVIP is called

2. URI-Abgleich und Parameter

Der Wert innerhalb einer offenen Klammer "\ {" und einer schließenden Klammer "}" stellt einen Parameter dar und kann mit @ PathParam aufgerufen werden.

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-Muster: " /users/mkyong "

getUserByName is called, name : mkyong

URI-Muster: " /users/abcdefg "

getUserByName is called, name : abcdefg

3. URI-Abgleich und regulärer Ausdruck

"@ Path" unterstützt den komplexen URI-Abgleich mit regulärem Ausdruck über folgenden Ausdruck:

{" 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-Muster: " /users/999 "

getUserById is called, id : 999

URI-Muster: " /users/123456 "

getUserById is called, id : 123456

URI-Muster: " /users/Benutzername/aaa ", fehlgeschlagen, stimmt nicht mit "[a-zA-Z][a-zA-Z 0-9]" überein, erstes Zeichen muss "[a-zA-Z]sein ”, Das zweite Zeichen muss“[a-zA-Z 0-9]”sein.

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

URI-Muster: " /users/Benutzername/a9 "

getUserByUserName is called, username : a9

URI-Muster: " Benutzer/Bücher/999 "

getUserBookByISBN is called, isbn : 999

Quellcode herunterladen