GET/api/bagiscilar diye yapılan bir istekte bize bağışçıların tümünün döneceğini öğrenmiştik.Fakat kullanıcının bunu daha fazla sınırlayabildiğini de biliyoruz.Örneğin 3 id numarasına sahip bagışcı.Peki ya biz Hatay'daki AB+ kan grubuna sahip bağışçıları istiyoruz.Aklınıza GET/api/bagiscilar/Hatay/ABRH+ gelmis olabilir.Fakat bu isteği çok daha fazla uzatabilir.Mesela Hatay'daki 25 yaşüstü erkek ve A RH+ kan grubuna sahip bagışçıları getir deyince kaç türlü kombinasyon çıktığını düşünün :)İşte bu durumlarda yardımımıza @QueryParam yetişiyor.Yazdığımız query string'e göre istenilen veriyi çekiyor.Şimdi örneğimize geçelim.Örneğimizdeki sorgu GET/api/order?startPage=10&&pageSize=20 gibi.Bu çok daha fazla uzayabilir.Herzamanki gibi ApplicationConfig classımız aynı şekilde görevine hazır bir şekilde projemizde yerini almış durumda :)Daha sonra yazdığımız orderService classımızda kullandığımız @QueryParam ve @DefaultValue açıklamalarına dikkat edelim.@DefaultValue belirtilen isime ait her hangi bir veri girilmezse o alanın hangi değere sahip olacağını belirtiyor.Kodlarımızı inceleyip uygulamamızı çalıştıralım.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.mycompany.restqueryparam; | |
import javax.ws.rs.*; | |
@Path("/orders") | |
public class OrderService { | |
@GET | |
public String getOrders( | |
@QueryParam("stateCode") | |
String stateCode, | |
@QueryParam("dateFrom") | |
String fromDateString, | |
@QueryParam("dateTo") | |
String toDateString, | |
@DefaultValue("-1") | |
@QueryParam("pageStart") | |
int pageStart, | |
@DefaultValue("-1") | |
@QueryParam("pageSize") | |
int pageSize | |
) { | |
String message="Started from all orders."; | |
if(stateCode!=null){ | |
message+="filtered orders for the state"+stateCode+"."; | |
} | |
if(fromDateString !=null && toDateString !=null){ | |
message+="Filtered orders for the date range,from"+fromDateString+"to"+toDateString+"."; | |
} | |
if(pageStart !=-1 && pageSize!=-1){ | |
message+="Did pagination from order start : "+pageStart+",pageSize:"+pageSize; | |
} | |
return message; | |
} | |
} |
Bir sonraki yazımızda görüşmek dileğiyle.İyi çalışmalar.
Hiç yorum yok:
Yorum Gönder