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

Type and hit Enter to search

  • Etkinliklerim
  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • RabbitMQ
  • Hibernate
  • JSP
  • Java 21
  • Java 8
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale
Spring Boot

Spring Boot RestTemplate Nedir ve Kullanımı

Paylaş

Spring Boot Dersleri‘ne devam ediyorum.

İçindekiler

Toggle
  • RestTemplate Nedir?
    • Özellikleri
  • Örnek

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/characterCode language: JavaScript (javascript)

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>
Code language: HTML, XML (xml)

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();
}Code language: PHP (php)

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;
}Code language: PHP (php)

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;
}Code language: PHP (php)

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

@Data
public class Character {
    Info info;
    List<Result> results;
}
Code language: PHP (php)

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);
    }
}Code language: PHP (php)

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();
    }
}Code language: JavaScript (javascript)

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

restTemplate.exchange(CHAHRACTER_API, HttpMethod.GET,entity,Character.class);Code language: CSS (css)

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 yanıt yazın Yanıtı iptal et

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İlgini Çekebilir

Chaos Monkey Spring Boot Uygulama Ornegi

Chaos Monkey Nedir? #1 Uygulamanızın Sınırlarını Test Edin

TestContainers Nedir Spring Boot MongoDB Uygulama Örneği

TestContainers ile Spring Boot & MongoDB Test İşlemleri

Spring Boot Dersleri @ConditionalOnExpression Uygulama Ornegi

Spring Boot @ConditionalOnExpression Nedir? Uygulama Örneği

Spring Boot Dersleri Content Negotiation Uygulama Örneği

Spring Boot Content Negotiation XML – JSON Uygulama Örneği

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

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

Link

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

Kategori

Cloud
Node.js
Java 24
Android
Struts
Röportaj
Gradle
Amazon Web Services
Vue.js
Video
Redis
Spring Boot 3.0
Debezium
Mikroservis Mimarisi
Spring Native
Spring Cloud Stream
Etkinlikler
XCode
JPA
Objective C
iPhone Uygulama Geliştirme
PostgreSQL
Spring Security
MongoDB
Java 21
Spring Data
Apache Kafka
Yaptığım Projeler
Servlet
Git
Maven
Design Patterns
DevOps
Linux
Spring Jdbc Template
RabbitMQ
JDBC
PrimeFaces
Manset
Google
Spring
Spring MVC
Spring Cloud
OCA Java SE 8
Quarkus
Spring Core
Microsoft
Veritabanı
Java SE
Tanıyalım
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
  • Etkinliklerim
  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • RabbitMQ
  • Hibernate
  • JSP
  • Java 21
  • Java 8
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale