Twitter Youtube Github
Burak Kutbay'ın Kişisel Blog'u |

Type and hit Enter to search

  • Quarkus Dersleri
  • Spring Dersleri
    • Spring Cloud
    • Spring Boot
    • Spring Uygulama Örnekleri
    • Spring Core
    • Spring JDBC Template
    • Spring MVC
  • İleri Java Dersleri
    • Java Server Faces
    • Java Server Pages
    • PrimeFaces
    • Servlet
    • JDBC
    • JSTL
    • Java 8
  • Hibernate Dersleri
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale
  • Hakkımda
Spring Boot

Spring Boot RestTemplate Nedir ve Kullanımı

Paylaş

Spring Boot Dersleri‘ne devam ediyorum.

Bu yazıda RestTemplate’nin ne olduğuna ve hangi amaçlarda kullanacağımızı anlatacağım.

RestTemplate Nedir?


Spring projelerimizde HTTP isteklerini yapıp yönetebileceğimiz Spring Boot Web kütüphanesinin içerisinde yer alan bir yapıdır. Bu sayede bir client olarak bir servisten veri çekebiliriz.

Özellikleri


  • getForObject
  • getForEntity
  • postForEntity
  • postForObject

Örnek


Projemiz için elimizde Ricky and Morty dizisinin Rest API’si bulunmakta.

https://rickandmortyapi.com/api/character

Yukarıkadaki API’dan dizideki karakterlerin verilerini çeken bir uygulama yapalım.

Maven bağımlılığımız aşağıdaki gibi olacaktır.

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
   <version>1.18.22</version>
</dependency>

Sadece Spring’in web kütüphanesi yeterli ve lombok kullanıyorum.

Spring Boot uygulamamızın her yerinde RestTemplate’imizi ve Http Header’i kullanabilmemiz için bir adet instance oluşturmalıyız. Bunu da uygulamamızın çalıştırdığımız application sınıfımızın içerisinde yapalım.

@Bean
public RestTemplate restTemplate() {
  return new RestTemplate();
}

@Bean
public HttpHeaders httpHeaders() {
  return new HttpHeaders();
}

Entitymizi hazırlayalım. Client Apimi’ze bakarsak Karakterler için bir INFO bilgisi ve devamında RESULT dizini bulunuyor. Bunlar için ayrı ayrı entitylerimizi hazırlayalım.

@Data
public class Info {
    private Integer count;
    private Integer pages;
    private String next;
    private String prev;
}

Info sınıfımız tamam. Result enttiymizi yapalım.

@Data
public class Result {
    private Integer id;
    private String name;
    private String status;
    private String species;
    private String type;
    private String gender;
    private String image;
    private String url;
    private Date created;
}

Entitymiz hazır. Ve son olarak Character sınıfımız oluşturuyoruz.

@Data
public class Character {
    Info info;
    List<Result> results;
}

API’mizden bize gerekli olan değerler bunlar. Controller’imizi oluşturalım.

@RestController
public class ApiController {

    @Autowired
    private ApiService apiService;

    @GetMapping("/")
    public ResponseEntity<Character> getCharacters() {
        Character characters = apiService.getAllCharacter();
        return new ResponseEntity<>(characters, HttpStatus.OK);
    }
}

Kullanıcının istek oluşturduktan sonra karşılık gelen servisi oluşturalım. Bu servisimizde API’mize bağlanacağız ve gelen datayı parse edip, bir listeye alacağız.

@Service
public class ApiService {

    @Autowired
    private RestTemplate restTemplate;

    @Autowired
    private HttpHeaders httpHeaders;

    private static final String CHAHRACTER_API = "https://rickandmortyapi.com/api/character";

    public Character getAllCharacter() {

        httpHeaders.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));

        HttpEntity<String> entity = new HttpEntity<>(httpHeaders);

        ResponseEntity<Character> response = restTemplate.exchange(CHAHRACTER_API, HttpMethod.GET,
                entity, Character.class);

        return response.getBody();
    }
}

Servisimiz yazdık. Burada dikkat etmemiz gereken satır

restTemplate.exchange(CHAHRACTER_API, HttpMethod.GET,entity,Character.class);

Burada exchange metodunu kullanarak API adresimizi, header bilgimizi ve mapper etmemiz için gerekli olan tipimizi yani gelen verinin aslında Character sınıfında olacağınız belirtiyoruz.

Bu cevabının body’sinde bizim sınıfımıza göre maplenmiş veriler bulunmakta.

Postman’dan istek atalım ve sonucumuza bakalım.

Spring Boot RestTemplate Örneği

Sonraki Spring Boot Derslerslerinde görüşmek üzere.


Projenin Kaynak Kodlarına Ulaş


Önceki Ders: Spring Boot Projelerinde Jackson Kullanımı
Spring Boot Dersleri
Sonraki Ders:

Tags:

spring boot derslerispring boot resttemplateSpring Boot Uygulama Örneğispring boot uygulamaları

Paylaş

Diğer Yazılar

blank
Previous

JsonBackReference, ve JsonManagedReference Many to Many, Many to One İlişkisi (Infinite Recursion , StackOverflowError Hatası Çözümü)

RabbitMQ Dersleri
Next

RabbitMQ Java Publisher Uygulaması

Next
RabbitMQ Dersleri
23 Ocak 2022

RabbitMQ Java Publisher Uygulaması

Previews
11 Ocak 2022

JsonBackReference, ve JsonManagedReference Many to Many, Many to One İlişkisi (Infinite Recursion , StackOverflowError Hatası Çözümü)

blank

No Comment! Be the first one.

Bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İlgini Çekebilir

blank

Spring Boot Transaction, Isolation, Propagation ve RollBack

blank

Spring Boot Projelerinde Jackson Kullanımı

blank

Spring Boot Bean Validation Uygulama Örneği

SPRİNG BOOT DERSLERİ UYGULAMA ÖRNEKLERİ

Spring Boot ile Apache Kafka Uygulaması

Burak Kutbay'ın Kişisel Blog'u |

© 2008 - ∞, Her hakkı saklıdır.

Link

  • Hakkımda
  • İletişim
  • Arşiv

Kategori

Röportaj
Struts
Android
Vue.js
Node.js
Redis
XCode
Spring Data
Debezium
Mikroservis Mimarisi
Spring Native
Video
Spring Security
Objective C
iPhone Uygulama Geliştirme
JPA
DevOps
PostgreSQL
Apache Kafka
Git
Design Patterns
Yaptığım Projeler
Servlet
Maven
Spring Cloud
Linux
Spring
JDBC
PrimeFaces
Spring Jdbc Template
RabbitMQ
Google
Manset
Spring MVC
OCA Java SE 8
Quarkus
Spring Core
Microsoft
Veritabanı
Tanıyalım
Java SE
Hibernate
Teknoloji
Okuduğum Kitaplar
Java Server Faces
Yazılım Mühendisliği
C Sharp
Spring Boot
Java
Günlüğüm
Java Server Page
Makale

Takip Et

Twitter Youtube Github