Veri

RESTFul Servislerinde Kaynak , Metod, Alt Kaynak Gibi Ana Kavramlar

RESTFul'de bir web servis, kaynak sınıfı (resource class) ve istekleri işleyen istek metodlarından (request metod) oluşur. En basit kaynak sınıfı (resource class) ve istek metodu (request metod) için aşağıdaki gibi bir örnek verilebilir :

@Path("/helloworld")

public class HelloWorldResource {

 @GET 

 @Produces("text/plain")

 public String getClichedMessage() {

return "Hello World";

 }

}

Burada HelloWorldResource class'ı bir kaynak sınıfıdır ve getClichedMessage ise bir @GET metodunu destekleyen bir kaynak metodudur. Kaynak sınıfı olması için class ifaesinin üzerine @Path("/helloworld") annotation'su eklenir. @GET ile de (@GET,@POST,@PUT,@DELETE gibi metodlara "Request Method Designator" adı verilmektedir) bir request metodu oluşturulur.

Bir kaynak sınıfı içinde @Path ve @GET,@POST,@PUT,@DELETE gibi (Request Method Designator) tanımlaman bir metod Alt Kaynak Metodu oluşturur. Alt kaynak <üst kaynak pathi>/<alt kaynak path'i> şeklinde erişilir. Aşağıda , yukarıdaki örneği bir alt kaynak metodu eklenmiştir : 

@Path("/helloworld")

public class HelloWorldResource {

@GET
@Produces("text/plain")
public String getClichedMessage() {

return "Hello World";

}  

@GET
@Produces("text/plain")
@Path("/tr")
public String getClichedMessageTr() {

return "Merhaba";

}

}

Burada getClichedMessageTr adındaki fonksiyon bir alt kaynak metodudur ve bu kaynağa <root>/helloworld/tr ile erişilebilinir. Alt kaynak eğer @GET,@POST,@PUT,@DELETE gibi bir annatation yok ise bunun adına Subresource Locator - Alt Kaynak Bulucusu adı verilir. "Alt Kaynak Bulucusu" başka bir kaynak olan bir nesne döndüren bir alt kaynaktır. Aşağıda Subresource Locator - Alt Kaynak Bulucusu bulunanan bir örnek görülmektedir : 

import javax.ws.rs.*;

@Path("/helloworld")

public class HelloWorldResource {

private String languageCode="en";

public HelloWorldResource() {}

public HelloWorldResource(String languageCode) {

this.languageCode=languageCode;

}

@GET
@Produces("text/plain")
public String getClichedMessage() {

if(languageCode.equals("en")){

return "Hello World";

}else if(languageCode.equals("tr")){

return "Merhaba Dunya";

} else{

return "Hello World";

}

}

 @GET
@Produces("text/plain")
@Path("/tr")
public String getClichedMessageTr() {

return "Merhaba";

}

@Path("/lng/{language}")
public HelloWorldResource findHelloWorldResource(
@PathParam("language") String languageCode){

return new HelloWorldResource(languageCode);

}

}

Görüldüğü gibi findHelloWorldResource metodu eklenmiştir. findHelloWorldResource bir Alt Kaynak Bulucusudur (Subresource Locator). @Path annotation bölümünde {language} parametresi dinamik yapılmıştır. <root>/helloworld/lng/tr şeklinde çağrıldığında "Merhaba Dunya" , <root>/helloworld/lng/en şeklinde çağrıldığında "Hello World" mesajı dönülecektir. findHelloWorldResource metodu HelloWorldResource kaynağını döndürmektedir. @GET işlevini HelloWorldResource yerine getirmektedir

 

zafer.teker , 27.09.2014

Bu Sayfayı Paylaş:

Fibiler Üyelerinin Yorumları


Tüm üyeler içeriklere yorum ekleyerek katkıda bulunabilir : Yorum Gir

Misafir Yorumları




Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir