Merhaba arkadaşlar. Bu yazıda parametre alma yöntemlerinden bir diğer olan MatrixParam kullanımını öğreneceğiz.

MatrixParam.java

package com.mycompany.resteasytutorials;

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

@Path("/matrixParam")
public class MatrixParamExample {
    @GET
    @Produces(MediaType.TEXT_HTML+";charset=UTF-8")
    public String getBook(@MatrixParam("bookName") String bookName) {
        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;
    }           
}

MatrixParamExample sınıfımınız içinde @GET notasyonu ile işaretlediğimiz ve ekrana çıktı verecek olan getBook metodu parametresini @MatrixParam notasyonu ile alıyor. Burada yine dikkat edeceğimiz gibi path üzerinde herhangi bir parametre tanımlaması yok. Bu metot gelen parametreyi MatrixParam’ın özelliklerine göre algılayacak.

Kod hemen hemen önceki yazıdaki kod ile aynı olduğundan laf kalabalığı olmaması için ayrıntısına girmiyorum.

Ekran Çıktısı

ApplicationConfig sınıfım içerisinde kök yolumu restful olarak belirledim. Şimdi

http://localhost:8080/RestEasyTutorials-1.0-SNAPSHOT/restful/matrixParam;bookName=Hayvan Çiftliği

adresine gidiyorum. QueryParam’da hatırlayacağımız üzere parametre web servis path’inin bitişini ? işareti ile takip ederek gönderiliyordu. MatrixParam’da ise web servis path’inin bitişini ; ile takip ederek parametre yolluyoruz. Bizim path’imiz …/restful/matrixParam ile bitiyor ve ;bookName=Hayvan Çiftliği ile parametremizi yolluyoruz.

Ekran çıktısında gördüğümüz üzere parametre alımı başarı ile sağlandı.

Peki bir değil de birden çok parametre göndermek istesek?

İşte o zaman da her parametreyi noktalı virgül ile birbirinden ayırmamız gerekirdi. Yani metodumuz diyelim ki 2 tane @MatrixParam ile işaretlenmiş parametre bekliyor, o zaman biz de webservisYolu;parametre1=deger1;parametre2=deger2 diyerek işimizi görecektik.

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