23 Ocak 2017 Pazartesi

Spring RestTemplate Kullanımı


Bir önceki yazımda yazdığımız web service’i başka bir uygulama da kullanmak istediğimizi bir anlık düşünelim. Zaten web service’lerin görevi de bu şekil bir ara katman görevi görmektir. İşte tam bu esnada devreye RestTemplate girer.

Ben yazdığım service’i stand alone bir Java uygulamasında kullanacağım. Siz de kendi yazdığınız web service’i bir Android uygulamasında ya da başka bir web uygulamasında kullanabilirsiniz. Tek yapmanız gereken şey yazdığınız web service’in bir server üzerinde deploy edilmiş olmasıdır.

Lafı fazla uzatmadan kodlamaya başlayalım.

 RestTemplateKullanimiMain.java


public class RestTemplateKullanimiMain {

     private static final String LIST_URL = "http://localhost:9090
/SpringDispatcherServlet/kitaplarRest/kitaplar";
     private static final String FIND_BY_ID_URL= "http://localhost:9090/SpringDispatcherServlet/kitaplarRest/findKitapById";
     private static final String CREATE_URL = "http://localhost:9090/SpringDispatcherServlet/kitaplarRest/createKitap";
     private static final String UPDATE_URL = "http://localhost:9090/SpringDispatcherServlet/kitaplarRest/updateKitap";
     private static final String DELETE_URL = "http://localhost:9090/SpringDispatcherServlet/kitaplarRest/deleteKitap";

   public static void main(String[] args) {
     RestTemplate restTemplate = new RestTemplate();
     Kitap kitap = new Kitap();
     KitapResult kitapResult = new KitapResult();
     ArrayList<MediaType> acceptableMediaTypes = new ArrayList<MediaType>();
                acceptableMediaTypes.add(MediaType.APPLICATION_JSON);

     HttpHeaders headers = new HttpHeaders();
     headers.setAccept(acceptableMediaTypes);

     HttpEntity<Kitap> entity = new HttpEntity<Kitap>(kitap, headers);
     HttpEntity<KitapResult> resultEntity = new HttpEntity<KitapResult>   (kitapResult, headers);
     HttpStatus statusCode = null;
     ResponseEntity<Kitap> result = null;
     ResponseEntity<KitapResult> kayitResult = null;

   
    // Kitap Listesi
    kitapListele(restTemplate);
  
    // Kitap Arama
    kitap.setKitapId(126);
 
    try {
       result = kitapAra(restTemplate, entity, kitap);
       statusCode = result.getStatusCode();
    } catch (HttpClientErrorException e) {
       statusCode = e.getStatusCode();
    }
    if(statusCode == HttpStatus.NOT_FOUND){
      System.err.println("Kayıt bulunamadı.");
    }else if(statusCode == HttpStatus.OK){
      System.out.println(result.getBody().getKitapAd() + " "   +result.getBody().getYazarAd());
    }

   //Kitap Kayıt
   kitapResult.setKitapAd("Şah Baba");
   kitapResult.setYazarAd("Murat BARDAKÇI");
   kitapResult.setKitaptur("Tarih");
   kitapResult.setKitapDurum("Rafta");
   try {
       kayitResult = kitapKayit(restTemplate,resultEntity,kitap);
       statusCode = kayitResult.getStatusCode();
   } catch (HttpClientErrorException e) {
       statusCode = e.getStatusCode();
   }

   if(statusCode == HttpStatus.CREATED){
      System.out.println(kitapResult.getKitapAd()+" adlı kitap kaydedildi.");
   }
 
   //Kitap Sil
   kitap.setKitapId(275);
   try {
      result = deleteKitap(restTemplate, entity, kitap);
      statusCode = result.getStatusCode();
   } catch (HttpClientErrorException e) {
      statusCode = e.getStatusCode();
   }
   if(statusCode == HttpStatus.OK){
      System.out.println(result.getBody().getKitapAd()+" adlı kitap silindi!");
   }else if(statusCode == HttpStatus.NOT_FOUND){
      System.out.println("Kayıt bulunamadı!");
   }

}


private static void kitapListele(RestTemplate restTemplate){
    List<LinkedHashMap> emps = restTemplate.getForObject(LIST_URL, List.class);
    for(LinkedHashMap map : emps){
       System.out.println("Kitap ID="+map.get("kitapId")+" , Kitap  Ad="+map.get("kitapAd")+" "
+ ", Yazar Ad="+map.get("yazarAd")+" , Kitap Tür = "+map.get("kitaptur")+" , "
+ "Kitap Durum = "+map.get("kitapDurum"));
    }
}

private static ResponseEntity<Kitap> kitapAra(RestTemplate  restTemplate,HttpEntity<Kitap> entity,Kitap kitap){
    return restTemplate.exchange(FIND_BY_ID_URL,
           HttpMethod.POST, entity, Kitap.class);
}

private static ResponseEntity<KitapResult> kitapKayit(RestTemplate restTemplate,HttpEntity<KitapResult> entity,Kitap kitap){
    return restTemplate.exchange(CREATE_URL,
           HttpMethod.POST, entity, KitapResult.class);
}

private static ResponseEntity<Kitap> deleteKitap(RestTemplate restTemplate,HttpEntity<Kitap> entity,Kitap kitap){
    return restTemplate.exchange(DELETE_URL,
           HttpMethod.POST, entity, Kitap.class);
}

private static ResponseEntity<Kitap> updateKitap(RestTemplate restTemplate,HttpEntity<Kitap> entity,Kitap kitap) {
    return restTemplate.exchange(UPDATE_URL,
          HttpMethod.POST, entity, Kitap.class);
   }

}

 Bir sonra ki yazımda görüşmek üzere. İyi çalışmalar...

1 yorum:

  1. Kodlarını açıklarsan daha iyi olur.
    Her satırı açıklamasan da, hiç değilse satıriçi yorumlar olursa takip eden artar.

    YanıtlaSil