Bu makalede basit bir web service örneğini geliştireceğiz. Örneğimizde projenin URL adresine girilen veriyi parametre olarak görecek ve bunu ekrana yazdıracak.
İlk olarak Maven projemizi oluşturacağız. Projemizde standart web uygulaması seçiyoruz. Projemiz oluştuğunda pom.xml dosyasını aşağıda ki gibi düzenliyoruz.
1 2 3 4 5 6 7 8 9 10 11 |
<dependencies> ..... <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-server</artifactId> <version>1.8</version> </dependency> ..... </dependencies> |
Yukarıda pom.xml dosyamıza jersey-server kütüphanesini ekleyerek projemize dahil edilmesini sağlıyoruz.
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-INF/web.xml dosyamıza servlet-mapping aracılığı ile servimizin çalışacağı URL adresini tanımladık. Projemiz çalıştığında örnek url aşağıda ki gibi olacaktır.
localhost:8080/PROJE_ADI/rest/
/rest/* anlamı rest’den sonra yeni adresler gelebileceği anlamını taşır. param-value içersinde servisimizin olduğu paketi tanımlıyoruz. servlet-class içersinde ise sunucumuzu tanımlıyoruz. Yukarıda ki tanım Tomcat kullananların yapması gereken tanımdır. GlassFish uygulama sunucusunu kullanıyorsanız org.glassfish.jersey.servlet.ServletContainer olarak tanımlamanız gerekmektedir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
package org.onurarslan.rest; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.core.Response; @Path("/hello")//rest'den sonra ki adresi tanımlar /rest/hello public class HelloWorold { @GET//HTTP get metodunu kullan @Path("/{mesaj}")// /rest/hello/ ifadesinden sonraki yazılanın dinamik olduğunu tanımlar public Response getMesaj(@PathParam("mesaj") String mesaj) {// Path ile gönderilen dinamik değeri mesaj değişkenine gönder return Response.status(200).entity(mesaj).build();//parametreden gelen değeri direk ekrana yazdır } } |
Yukarı da HelloWorld isimli java sınıfımızı oluşturuyoruz. İlgili sınıfın web service adresinin @Path notasyonunda /hello olarak tanımlıyoruz. /hello yazıldığı zaman bu sınıfı görmeye başlayacaktır. getMesaj isimli metodumuzu @GET notasyonu aracılığı ile Http Get yöntemini kullanması gerektiğini ve bu metodun dinamik bir adres olduğunu süslü parantezler içersinde ki mesaj isimli key ile tanımlıyoruz. Metot parametre değişkeni olan String mesaj’ın önünde @PathParam notasyonu ile mesaj isimli key’den gelen verinin, String tipinde ki mesaj değişkenine atanmasını sağlıyoruz. Response.status(200) ile isteğin başarılı olması durumunu. entity(mesaj) ile mesaj değişkenini, build ile bu mesajın Response tipine çevrilerek return edilmesini sağlıyoruz.
1 |
http://localhost:8080/Simple_JAX-RS/rest/hello/merhaba |
Web tarayıcımızı açarak yukarıda ki adresi yazıyoruz. (Not: Adresi kendi projenize göre düzenleyin.) Ekran çıktısı aşağıda ki gibi olmaktadır.