Útmutató a RESTEasy-hoz

1. Bemutatkozás

JAX-RS (Java API for RESTful Web Services) egy Java API-készlet, amely támogatást nyújt a létrehozáshoz REST API-k. És a keretrendszer jól használja a kommentárokat ezen API-k fejlesztésének és telepítésének egyszerűsítése érdekében.

Ebben az oktatóanyagban a RESTEasy-t fogjuk használni, a JBoss a JAX-RS specifikáció hordozható megvalósítását biztosította egy egyszerű RESTful webszolgáltatás létrehozásához.

2. Projekt beállítása

Két lehetséges forgatókönyvet vizsgálunk meg:

  • Önálló beállítás - minden alkalmazáskiszolgálón való működésre szolgál
  • JBoss AS telepítő - csak a JBoss AS-ben történő telepítésre gondol

2.1. Önálló beállítás

Kezdjük a használatával JBoss WildFly 10 önálló beállítással.

A JBoss WildFly 10 a RESTEasy 3.0.11 verzióval érkezik, de amint látni fogja, konfiguráljuk a pom.xml az új 3.0.14 verzióval.

És hála a resteasy-servlet-inicializáló, A RESTEasy integrációt biztosít az önállóval Servlet 3.0 konténerek a ServletContainerInitializer integrációs felület.

Vessünk egy pillantást a pom.xml:

 3.0.14. Végső org.jboss.resteasy resteasy-servlet-inicializáló $ {resteasy.version} org.jboss.resteasy resteasy-client $ {resteasy.version} 

jboss-deployment-structure.xml

A JBoss-on belül minden, ami WAR, JAR vagy EAR néven van telepítve, modul. Ezeket a modulokat a dinamikus modulok.

Ezek mellett van néhány statikus is modulok ban ben $ JBOSS_HOME / modulok. Mivel JBoss rendelkezik a RESTEasy-val statikus modulok - önálló telepítés esetén a jboss-deployment-structure.xml némelyikük kizárása érdekében kötelező.

Ily módon minden osztály és BEFŐTTES ÜVEG fájljaink HÁBORÚ betöltődik:

2.2. JBoss beállítóként

Ha a RESTEasy programot a JBoss 6-os vagy újabb verziójával kívánja futtatni, akkor választhatja az alkalmazáskiszolgálón már mellékelt könyvtárakat, ezzel egyszerűsítve a bomlást:

  org.jboss.resteasy resteasy-jaxrs $ {resteasy.version} 

Figyelje meg jboss-deployment-structure.xml már nincs szükség.

3. Szerveroldali kód

3.1. Servlet 3. verzió web.xml

Most nézzük meg itt az egyszerű projektünk web.xml-jét:

  RestEasy példa resteasy.servlet.mapping.prefix / rest 

resteasy.servlet.mapping.prefix csak akkor szükséges, ha relatív elérési utat szeretne megadni az API alkalmazáshoz.

Ezen a ponton nagyon fontos észrevenni, hogy még nem nyilatkoztunk Servlet ban,-benweb.xml mivel nyugodt szervlet-inicializáló függőségként került hozzáadásra a következőben: pom.xml. Ennek oka - a RESTEasy biztosítja org.jboss.resteasy.plugins.servlet.ResteasyServletInitializer osztály, amely megvalósítja javax.server.ServletContainerInitializer.

ServletContainerInitializer egy inicializáló, és minden szervlet kontextus készenléte előtt végrehajtásra kerül - ezzel az inicializálóval szervleteket, szűrőket vagy hallgatókat határozhat meg az alkalmazásához.

3.2. Az alkalmazásosztály

A javax.ws.rs.core.Application osztály egy szabványos JAX-RS osztály, amelyet implementálhat, hogy információkat nyújtson a telepítésről:

@ApplicationPath ("/ rest") public class A RestEasyServices kiterjeszti az {private Set singletons = new HashSet () alkalmazást; public RestEasyServices () {singletons.add (új MovieCrudService ()); } @Orride public set getSingletons () {return singletons; }}

Mint láthatja - ez egyszerűen egy osztály, amely felsorolja az összes JAX-RS gyökér erőforrást és szolgáltatót, és ez a @ApplicationPath annotáció.

Ha bármilyen üres halmazt ad vissza osztályok és szingulettek számára, akkor a WAR ellenőrzi a JAX-RS kommentár erőforrás és szolgáltató osztályokat.

3.3. A szolgáltatások megvalósítási osztálya

Végül nézzük meg az aktuális API-definíciót itt:

@Path ("/ movies") nyilvános osztály MovieCrudService {privát térkép-leltár = új HashMap (); @GET @Path ("/ getinfo") @Produces ({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) nyilvános filmfilmByImdbId (@QueryParam ("imdbId") String imdbId) {if (invent.containsdKey (imdb) .get (imdbId); } else {return null; }} @POST @Path ("/ addmovie") @Cumsumes ({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) public Response addMovie (Movie movie) {if (null! = Invent.get (movie.getImdbId ())) { return Response .status (Response.Status.NOT_MODIFIED) .entity ("A film már szerepel az adatbázisban."). build (); } készlet.put (film.getImdbId (), film); return Response.status (Response.Status.CREATED) .build (); }}

4. Konklúziók

Ebben a gyors bemutatóban bemutattuk a RESTEasy programot, és egy szuper egyszerű API-t építettünk vele.

A cikkben használt példa mintaprojektként érhető el a GitHub-ban.