Merhabalar arkadaşlar. Bu yazıda JAX-RS içinde yer alan ve önceki gördüklerimizden bir tık ilerde olan bir parametre alma yöntemi olan FormParam’ı öğreneceğiz.

Daha önce Java web ile proje geliştirmiş arkadaşların aşina olduğu üzere biz kullanıcıdan veri alırdık ve onu bir yere yönlendirirdik. Örneğin JSP ve Servlet kullanılan bir arayüzde JSP ile verileri alır Servlet’e yönlendiririz. Ya da JSF içinde xhtml içinden verileri alır Managed Bean’e yollarız.

RestEasy de Servlet’in en üst katmanının üzerine kurulu bir çatı olduğundan yazdığımız bir formun action’ına web servis metodumuzu atayabiliriz. Tabii bu atama path bilgisi olmaktadır. Web servis metodumuz da @FormParam notasyonu ile form’dan gelen parametreleri tek tek alabilir.

Şimdi bir örnek uygulama ile ne demek istediğimi anlatmaya çalışayım.

index.html

<!DOCTYPE html>
<html>
    <head>
        <title>Form Sayfası</title>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    </head>
    <body>
        <h1>Ad ve Soyad Bilgilerinizi Girin</h1>
        <form method="POST" action="restful/formParamExample/postFormParams">
            <table>
                <tr>
                    <td>Adınız:</td>
                    <td><input type="text" name="firstname"/></td>
                </tr>
                <tr>
                    <td>Soyadınız:</td>
                    <td><input type="text" name="lastname"/></td>
                </tr>
            </table>
            <input type="submit" value="GÖNDER"/>
        </form>
    </body>
</html>

Html sayfamız içinde kullanıcıdan isim soyisim aldığımız bir form yer alıyor. Dikkatinizi iki yere çekeceğim. Birincisi form’un method özelliği. Bu özelliğe POST ataması yaparak formun verilerini HTTP-POST metodu ile iletileceğini söylüyoruz. İkinci nokta ise form’un action özelliği. Bu özellik de butona tıklanıldığında gidilecek yeri temsil ediyor. Biz action özelliğine @POST notasyonu ile işaretlenmiş olan web servis metodumuzun path bilgisini veriyoruz.

FormParamExample.java

package com.mycompany.resteasytutorials;

import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

@Path("/formParamExample")
public class FormParamExample {
    @Path("/postFormParams")
    @Produces(MediaType.TEXT_HTML+";charset=UTF-8")
    @POST
    public Response formParamMethod(@FormParam("firstname") String firstName,@FormParam("lastname") String lastname) {
        return Response.status(200).entity("---Gelen İsim   :"+firstName+"---"+"---Gelen Soyisim:"+lastname +"---").build();        
    }
}

FormParamExample sınıfımız @Path notasyonu ile işaretlenmiş ve formParamExample String’i bu sınıfın path’i olarak tanımlanmış. Sınıf içerisinde ise postFormParams string’inin path olarak tanımlandığı bir metodumuz yer alıyor. Bu metot @POST notasyonu ile işaretli gördüğümüz üzere. Yani POST isteklerini kabul eden bir metot. Html içinde form da POST isteği yapılarak gönderiliyor.

Metodun dönüş tipine baktığımızda Response’u görüyoruz. Önceki örneklerde String, void vs. dönüş tipleri ile çıktılar elde etmiştik. Genel olarak Response döndürmek web servis kullanımında daha iyi bir durumdur çünkü daha önce de bahsettiğimiz üzere Rest API HTPP üzerinde çalışıyor ve istek-cevap üzerinde daha yetkin olabilmek için dönüş tipimizin Response olmasında fayda var. Döndüreceğimiz değeri de Response sınıfı aracılığı ile yolluyoruz.

  • status() metodu cevabın durumunu kodu ile beraber Response’a ekliyor. 200 OK, 404 Not Found örnek verilebilir.
  • entity() göndereceğimiz bilgiyi Response’a gömdüğümüz kısım. Biz gelen isim soyisim bilgilerini Response’a koyduk.
  • build() döndürülecek response bu metot ile inşa edilip döndürülüyor.

Ekran Çıktısı

Projeyi çalıştırdığımızda karşımıza gelen index sayfası bu şekilde.

İsim ve soyisim alanlarını doldurup GÖNDER butonuna tıklıyorum.

POST metodu parametreleri başarı ile bize döndürdü.

Bu yazıda da bu kadar arkadaşlar. Gelecek yazıda görüşene kadar sağlıcakla kalın.

Selam ve Sevgilerimle {: style=”text-align: center”}s