- Nainstaluji si server glassfish. Ten je možné zdarma získat např. zde. Stačit vám bude ale i Tomcat nebo jiný servletový kontejner.
- Vytvořím si v Netbeans novou webovou aplikaci: V tomto okně je třeba dát Add a následně vybrat nainstalovaný servletový kontejner.
- Nyní je třeba nakonfigurovat aplikaci. To je možné dvěma způsoby:
- Prostřednictvím souboru web.xml
- Pomocí anotace @ApplicationPath
- A nyní konečně mohu napsat nějakou svoji třídu. RESTful webovou službu mohu volat jako bezparametrickou nebo s parametry. V druhém případě mám v podstatě 3 možnosti, jak parametry vkládat:
- Jako součást URL. Příklad: http://localhost:8080/example-rest/resources/names/jmeno/prijmeni
- Jako parametry metody GET. Příklad: http://localhost:8080/example-rest/resources/names?jmeno=Adam&prijmeni=Oliva
- V těle HTTP requestu. Zde mohou být parametry naformátovány v libovolném MIME typu.
- Nyní je už možné aplikaci deployovat na server a zkusit ji zavolat např. z webového prohlížeče: http://localhost:8080/example-rest/resources/names/Adam/Oliva
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<servlet>
<servlet-name>JerseyServlet</servlet-name>
<servlet-class>
com.sun.jersey.spi.container.servlet.ServletContainer
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>JerseyServlet</servlet-name>
<url-pattern>/resources/*</url-pattern>
</servlet-mapping>
</web-app>
1: package biz.prodejna.examples.rest;
2:
3: import javax.ws.rs.ApplicationPath;
4: import javax.ws.rs.core.Application;
5:
6: @ApplicationPath("resources")
7: public class JaxRsConfig extends Application {
8: }
V tomto bodě ukáži pouze první případ. Další případy si nechám do některého z dalších dílů.
1: package biz.prodejna.examples.rest;
2:
3: import javax.ws.rs.GET;
4: import javax.ws.rs.Path;
5: import javax.ws.rs.PathParam;
6: import javax.ws.rs.Produces;
7:
8: @Path("names")
9: public class Names {
10:
11: @GET
12: @Path("{first}/{last}")
13: @Produces("text/plain")
14: public String getFullName(
15: @PathParam("first") String firstName, @PathParam("last") String lastName) {
16: return firstName + " " + lastName;
17: }
18: }
Vysvětlím jednotlivé anotace:
@Path u třídy udává, pod jakou URL bude služba dostupná.
@GET definuje, jaká bude použita HTTP metoda.
@Path u metody definuje, jaké bude pořadí parametrů. Nebo přesněji: jaký tvar bude mít zbytek URL.
@Produces udává MIME typ v těle HTTP odpovědi.
@PathParam mapuje parametry metody na části v anotaci @Path
Proč URL vypadá právě takhle? Vysvětlím:
example-rest -název aplikace
resources -definováno ve web.xml nebo anotací @ApplicationPath
names -definováno anotací třídy @Path
- služba vracející odpověď jako xml
- služba očekávající parametry jako parametry URL
- tvorba klienta s využitím implementace Jersey.
- služba očekávající na vstupu XML dokument.