Restful Web Services(JAX-RS ) @Path, notasyonu ile tanımlanan URI adresi çağırıldığı zaman istenilen Java metotlarının çalışması sağlanır. İlk olarak pom.xml ve web.xml dosyalarımızı düzenleyelim.
pom.xml
|
1 2 3 4 5 6 7 8 9 10 11 12 |
... <dependencies> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-server</artifactId> <version>1.8</version> </dependency> </dependencies> ... |
Yukarıda Maven olarka oluşturduğumuz projemize jersey kütüphanesini dahil ediyoruz.
web.xml
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <display-name>Restful Web Application</display-name> <servlet> <servlet-name>jersey-serlvet</servlet-name> <servlet-class> com.sun.jersey.spi.container.servlet.ServletContainer </servlet-class> <init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>org.onurarslan.rest</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>jersey-serlvet</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping> </web-app> |
Yukarıda web.xml dosyamızı restful web servis çalışması için uygun düzenlemeyi yaptık. /rest/* tanımlaması ile projemiz çalıştıkdan sonra bu yolu izleyerek web servis metotlarımızın çalışmasını sağlayabiliriz.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
package org.onurarslan.rest; import javax.enterprise.inject.Produces; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.core.Response; @Path("/personel")// proje url adresinizi rest/personel olarak çağırdınızda çalışır public class PersonelRestService { //personel çağırıldığında bu metot çalışır @GET public Response getPersonelSayisi() { return Response.status(201).entity("20").build(); } // personel/yas-ortalamasi url adresi çağırıldığında çalışır @GET @Path("/yas-ortalamasi") public Response getPersonelYasOrtalamasi(){ return Response.status(201).entity("Yas Ortalamasi: "+35.2).build(); } // /personel/DENEME-KURUM **bu adreste DENEME-KURUM yerine dinamik olarak başka adreslerde yazabilirsiniz @GET @Path("/{kurumAdi}") public Response getKurumBilgisi(@PathParam("kurumAdi") String kurumAdi){ return Response.status(201).entity("Kurum Adi: "+kurumAdi).build(); } // @PathParam dinaik değerlerin tutulmasını sağlar // /personel/id ile sadece sayısal ifadeler alınmasını sağlar @GET @Path("/{id: \\d+}") public Response getPersonel(@PathParam("id") int id) { return Response.status(201).entity("Personel ID: " + id).build(); } } |
Yukarıda class başında @Path ile verilen adres çağırıldıktan sonra metotların hangi adreslerde nasıl çalışacağına dair örneklerimizi oluşturduk. @Path ile url adreslerini, @PathParam ile dinamik adreslerden gelen değerlerin elde edilmesini sağladık.
Sonuçları aşağıda ki gibi olmaktadır.
URI: /rest/personel
|
1 |
20 |
URI: /rest/personel/yas-ortalamasi
|
1 |
Yas Ortalamasi: 35.2 |
URI: /rest/personel/DENEME-KURUM
|
1 |
Kurum Adi: DENEME-KURUM |
URI: rest/personel/1321312
|
1 |
Personel ID: 1321312 |





