RESTful Annotation

Merhaba arkadaşlar, bu yazımda JAX-RS içerisinde kullanabileceğimiz annotation’lara değinmeye çalışacağım.

Daha önceki yazılarda da belirttiğim gibi Restful ile kaynaklara erişmek, http method tipini ayarlamak, özel olarak accept etmek yada özel olarak response tipini belirtmek için annotation kullanıyoruz. Hemen bunlar nedir nasıl kullanılır ona bakalım;

RESTful Annotation

  • @GET -> Http get methoduna denk gelmektedir.
  • @POST -> Http post methoduna denk gelmektedir.
  • @DELETE -> Http delete methoduna denk gelmektedir.
  • @PUT -> Http put(update) methoduna denk gelmektedir.
  • @Path -> Kaynaklara ulaşmak için kullanacağımız url’i ayarlayama yarar. @Path(“/api”) şeklinde kullanılabilir.
  • @PathParam -> Path’e ek olarak parametre koymaya ve methoda göndermeye yarar. @PathParam(“/api/{key}”) key burada path param olmakta.
  • @QueryParam -> Url içerisindeki parametrelere ulaşmayı sağlar.
  • @FormParam -> Rest , genelde xml/json ile çalışır. Bazı durumlarda form’dan submit edilen verilerle de bunu gerçekleştirebilirz. FormParam ile form’daki alanlara ulaşabiliriz.
  • @Consumes -> Methodun kabul edeceği MIME type’ı ayarlamaya yarar. Bunlardan bir kaçı; json, xml, text vs.
  • @Produces -> Methodun üreteceği MIME type’ı ayarlamaya yarar.

JAX-RS annotationlar javax.ws.rs paketi altında tanımlanmıştır.

RESTful Annotationlarının kullanılması

* Http methodlarını belirten @GET, @POST, @DELETE ve @PUT annotationları methodların üzerine konumlandırır. Class başına konumlandıramaz. Genelde url ayarlayarak methodlara ulaşabiliriz. Özel path belirtmeden de http method annotationları sayesinde de ilgili methoda ulaşabiliriz. Bu ise class içerisinde yanlız tek bir tane @GET, @POST, @DELETE ve @PUT methodlarının olması ile olabilir. Method tipi örneğin get ise class içerisindeki tek get methoduna bağlanacaktır.

* @Path notasyonu kaynağa ulaşmada url template belirlemede kullanılır. Sınıf ve method üzerinde konumlanabilir. Class level -> Method level olarak ilgili kaynağa ulaşılır. @Path(“/”) class level için default annotationdur. Örn; @Path(“/api”)

* @PathParam notasyonu url template içerisinde gelir. path + degisken parametre olarak gösterilir. @Path notasyoununda kullanılan parametreyi almaya yarar. @Path(“/api/{key}”) key burada PathParam’dır. Kulllanmak için ise method declarasyoununda belirtilmelidir.

Url olarak ise : http://wora:8080/rest/service/hello/CaySever requestini gönderdiğimizde çıktımız aşağıdaki gibi olucaktır;

2015-03-01 00:06:45

* PathParam’da regex de kullanabiliriz;

Yukarıdaki regexe göre name değişkeninin ilk karekteri küçük yada büyük bir harf ile başlamalı ve devamında ise harf, _ ve rakam içerebilir. name değişkeni regexe uymaz ise 404 hatası döndürelecektir.

Not : Path içerisinde birden fazla PathParam kullanabiliriz. /hello/{name}/{surname} gibi.

Not : Default regex "[^/]+?".

* @QueryParam notasyonu url içerisindeki parametreleri okumaya yarar.

Url ise şu şekilde; http://wora:8080/rest/service/hello?name=CaySever name alanı query paramdır.

* Default value de kullanabiliriz;

Yukarıdaki yapıyı kullanırsak eger name alanı boş ise default olarak CaySever kullanılacaktır.

* Url içerisinde aynı isimde query paramı birden fazla kullanabiliriz. Otomatik olarak java.util.List‘e çevrilir.

Url : http://wora:8080/rest/service/hello?name=CaySever&name=CaySever2

2015-03-01 00:41:27

* @FormParam, form ile submit olunan değişkenleri almayı yarar. Nasıl kullanılır bir bakalım;

index.html

 RESTful method

* @Consumes ve  @Produces notasyonları sayesinde request ve response MIME type’ını ayarlayabiliriz. Method yada class üzerinde konumlanabilir.Class üzerinde konumlandırılırsa class içerisindeki tüm methodlara da uygulanmış olur. Aynı anda birden fazla mime type belirleyebiliriz. Uygun veri Http Header alanı içerisinde bulunursa accept olunur.  Örn;

* Consumes olarak farklı tipte veri gelirse “415 Unsupported Media Type”  hatası geri döndürelecektir.

* Yazımı burada sonlandırmak istiyorum arkadaşlar, bir sonraki yazıda görüşmek üzere.

* Mutlu kalın, kod’la kalın ve bol bol Çay için

~ Alican Akkuş

 

1417 Total Views 1 Views Today