Ne Geliştireceğiz?
Merhaba,
Bu yazımızda Spring Boot kullanarak https://jsonplaceholder.typicode.com/ sitesi üzerinden RESTful Web Servis consume eden bir kod geliştirmeye çalışacağız.
Neler Gerekiyor?
- IntelliJ IDEA (Ben bu IDE’yi kullanacağım)
- Java 1.8 ya da üzeri JDK
- Maven 3.2 ya da üzeri
- Postman
Bağımlıklıkların Tanımlanması
Bu projemizde Spring Web haricinde bir bağımlılık kullanmayacağız. Pom.xml dosyamız işe şu şekilde olacak:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.0</version> <relativePath/> </parent> <groupId>com.codingbytime</groupId> <artifactId>consumeRestfulWebService</artifactId> <version>0.0.1-SNAPSHOT</version> <name>demo</name> <description>codingbytime.com</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
Consume Edilecek Rest Servis
Bağımlılıklarımızı tanımladıktan sonra şimdi geliştirme ortamımızda bazı yeni class tanımlamaları yapacağız. Tanımlayacağımız 4 adet sınıf bulunmakta. Bunlar: User, Address, Geo ve Company. Aşağıda bu sınıflara ait değişken tiplerini birazdan vereceğim ancak bunların nereden geldiğini anlamanız için bu linke tıkladığınızda gelen verileri incelemenizi istiyorum. https://jsonplaceholder.typicode.com/users/1
Sınıf tanımlamaları içerisinde Getter, Setter ve Constructor tanımlamaları yazıyı uzatmamak amacıyla verilmemiştir. Getter, Setter ve ToString metodlarını oluşturmayı unutmayınız. Yoksa çalışmayacaktır.
Geo sınıfımız;
public class Geo { String lat; String lng; }
Address sınıfımız;
public class Address { String street; String suite; String city; String zipcode; Geo geo; }
Company sınıfımız;
public class Company { String name; String catchPhrase; String bs; }
User sınıfımız ise bu şekilde;
public class User { Long id; String name; String username; String email; String phone; String website; Address address; Company company; }
Main Metodumuzu Oluşturalım
Main metodumuzda RestTemplate ve CommandLineRunner kullanarak uygulamamızdan dış bir API servisine request atacağız ve oradan dönen veriyi ekrana yazdıracağız. CommandLineRunner ise uygulama başladığı zaman çalışacak olan @Bean’inimizi oluşturmakla görevli. Burada dikkat etmemiz gereken kısım ise requesting atıldığı linktir. Çünkü yukarıda size vermiş olduğum link 100 adet User döndüren bir api endpoint’ini işaret ederken burada verdiğim ise Id değeri 1 olarak User objesini bana döndürmekte. Bu nedenle linke dikkat etmeniz gerekiyor. Ayrıca sınıflarımızız Getter, Setter ve ToString metodlarını da implement etmeyi unutmayınız.
@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } @Bean public RestTemplate restTemplate(RestTemplateBuilder builder) { return builder.build(); } @Bean public CommandLineRunner runner(RestTemplate restTemplate) { return args -> { User user = restTemplate.getForObject( "https://jsonplaceholder.typicode.com/users/1", User.class ); System.out.println(user.toString()); }; } }
Projeyi Çalıştıralım
Projeyi IDE aracılığı ile de çalıştırabilirsiniz. Ya da benim gibi terminalden bu komut ile çalıştırabilirsiniz:
./mvnw spring-boot:run
Çıktımız: