উদাহরণ সহ RestTemplate ব্যবহার

RestTemplate এর পরিচিতি - স্প্রিং বুট ক্লায়েন্ট (Spring Boot Client) - Java Technologies

292

নিচে স্প্রিং বুট ক্লায়েন্টে (Spring Boot Client) RestTemplate ব্যবহার করে একটি উদাহরণ দেখানো হয়েছে:


১. প্রজেক্ট তৈরি করুন

Spring Initializr-এ যান এবং Spring Boot Starter Web ডিপেনডেন্সি যুক্ত করে একটি নতুন প্রজেক্ট তৈরি করুন। এরপরে প্রজেক্টে RestTemplate ব্যবহার করা হবে।


২. pom.xml ডিপেনডেন্সি যুক্ত করুন

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

৩. RestTemplate কনফিগারেশন

RestTemplate ব্যবহারের জন্য একটি @Bean কনফিগারেশন তৈরি করুন।

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

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

৪. RestTemplate ব্যবহার করে ক্লায়েন্ট ক্লাস তৈরি করুন

import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

@Service
public class ApiClient {
    private final RestTemplate restTemplate;

    public ApiClient(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }

    // GET রিকোয়েস্ট
    public String getData(String url) {
        return restTemplate.getForObject(url, String.class);
    }

    // POST রিকোয়েস্ট
    public String postData(String url, Object requestBody) {
        return restTemplate.postForObject(url, requestBody, String.class);
    }
}

৫. Controller ক্লাস

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ClientController {
    private final ApiClient apiClient;

    public ClientController(ApiClient apiClient) {
        this.apiClient = apiClient;
    }

    // GET রিকোয়েস্ট
    @GetMapping("/fetch-data")
    public String fetchData() {
        String url = "https://jsonplaceholder.typicode.com/posts/1"; // উদাহরণ API URL
        return apiClient.getData(url);
    }

    // POST রিকোয়েস্ট
    @PostMapping("/send-data")
    public String sendData(@RequestBody Object requestBody) {
        String url = "https://jsonplaceholder.typicode.com/posts"; // উদাহরণ API URL
        return apiClient.postData(url, requestBody);
    }
}

৬. GET এবং POST রিকোয়েস্ট টেস্ট করুন

GET রিকোয়েস্ট টেস্ট:

  • API Endpoint: http://localhost:8080/fetch-data
  • এটি https://jsonplaceholder.typicode.com/posts/1 থেকে ডেটা রিট্রিভ করবে।

POST রিকোয়েস্ট টেস্ট:

  • API Endpoint: http://localhost:8080/send-data
  • Request Body (JSON):

    {
        "title": "foo",
        "body": "bar",
        "userId": 1
    }
    
  • এটি https://jsonplaceholder.typicode.com/posts API-তে POST করবে এবং রেসপন্স ফিরিয়ে দেবে।

৭. Error Handling

RestTemplate ব্যবহার করার সময় try-catch ব্লক দিয়ে এক্সসেপশন হ্যান্ডেল করুন:

public String getData(String url) {
    try {
        return restTemplate.getForObject(url, String.class);
    } catch (Exception e) {
        return "Error occurred: " + e.getMessage();
    }
}

৮. উদাহরণ রেসপন্স

GET রেসপন্স:

{
    "userId": 1,
    "id": 1,
    "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
    "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
}

POST রেসপন্স:

{
    "id": 101,
    "title": "foo",
    "body": "bar",
    "userId": 1
}

RestTemplate ব্যবহার করার সুবিধা:

  1. সহজ ও ব্যবহারবান্ধব।
  2. স্প্রিং বুটে আগে থেকেই অন্তর্ভুক্ত।
  3. GET, POST, PUT, DELETE ইত্যাদি HTTP মেথড সমর্থন করে।

তবে, নতুন প্রোজেক্টে স্প্রিং বুট ২.৪+ এ WebClient ব্যবহার করাই সুপারিশ করা হয়। RestTemplate মূলত blocking এবং synchronous কাজ করে।

Content added By
Promotion

Are you sure to start over?

Loading...