Merhabalar arkadaşlar. Bu yazıda RestEasy API içerisindeki bir başka parametre alma yöntemi olan HeaderParam’ı göreceğiz.

HeaderParam notasyonu sizin yazmış olduğunuz web servis metoduna HTTP Header’ından bir bilgi geçirmenizi sağlar. İlk yazıdan hatırlayacağımız üzere Restful Servis’ler HTTP protokolü üzerine yayılıyor ve işlerini HTTP metotları ile görüyor. İşte bu HTTP’nin özelliklerinden biri olan Request Header bilgisini parametre olarak geçirmek için de RestEasy içine @HeaderParam notasyonu koyulmuş durumda.

Şimdi bir örnek uygulama yapalım. Örnek uygulamayı önceki yazıdaki koda ekleme yaparak yapalım.

HeaderParamExample.java

package com.mycompany.resteasytutorials;

import java.util.ArrayList;
import java.util.List;
import javax.ws.rs.GET;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

@Path("/getBooks")
public class HeaderParamExample {
    @GET
    @Produces(MediaType.TEXT_HTML+";charset=UTF-8")
    public String getBook(@QueryParam("bookName") String bookName,@HeaderParam("Host") String host) {
        String returnedBook="";
        List<String> books = new ArrayList<>();
        
        books.add("1984");
        books.add("Hayvan Çiftliği");
        books.add("Cesur Yeni Dünya");
        
        for(String s : books) {
            if (s.equals(bookName)) {
                returnedBook = s;
            }
        }
        return "Kitap Adı : "+returnedBook +"<br/> Host Bilgisi : " +host;
    }           
}

Önceki yazıdaki kodumuzdan farklı olarak buradaki metodumuz HeaderParam notasyonu kullanılarak fazladan bir parametre alıyor, ve return edilen String’e bu parametreyi ekliyor. Onun dışında kod tamamen aynı.

@HeaderParam notasyonuna parametre olarak verdiğimiz String bizim HTTP Header’ından hangi bilgiyi okumak istediğimizi söylediğimiz String’tir. Şimdi hangi tarayıcıyı kullanıyorsanız önceki yazıda yaptığımız gibi web servis’in sayfasını açın ve orada tarayıcının Network tabını bulun arkadaşlar. Ben Chrome üzerinde göstereceğim ve Chrome + Windows kullanan arkadaşlar F12’ye basarak ya da sağ tıklayıp incele diyerek Chrome’un konsolunu açabilirler. Açılan konsolda Network tabına tıklayıp sayfayı yenileyelim. Şöyle bir ekran sayfa içinde açılacak:

Buradaki getBooks ile başlayan yere tıklayın, kaşınıza HTTP isteği ve cevabına dair bazı bilgiler dönecek.

İşte biz web servis metodumuza HeaderParam notasyonu ile Request Headers içindeki bilgileri parametre olarak geçirebiliriz. Bu yazıdaki örnek için Host bilgisini çekeceğiz. Bunun için metodun aldığı parametrelere @HeaderParam(“Host”) String host ifadesini eklememiz yeterli.

Ekran Çıktısı

Web servisin sayfasını açtığımızda bizi şöyle bir ekran karşılıyor olacak.

Request Header’daki host bilgisini başarı ile aldık ve kitap adı ile birlikte ekrana yazdırdık arkadaşlar.

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

Selam ve Sevgilerimle