OpenFeign ব্যবহার করে HTTP Request করা

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

315

OpenFeign হলো Spring Cloud-এর একটি ডিক্লারেটিভ HTTP ক্লায়েন্ট। এটি REST API-এর সাথে যোগাযোগ করার জন্য সহজ এবং কার্যকর সমাধান প্রদান করে। Feign ব্যবহার করে আপনি HTTP রিকোয়েস্ট তৈরি করতে পারেন একদম ডিক্লারেটিভ স্টাইলে, যেমন একটি ইন্টারফেস ডিফাইন করে।


OpenFeign-এর বৈশিষ্ট্য

  1. ডিক্লারেটিভ পদ্ধতি:
    • HTTP রিকোয়েস্ট ম্যানুয়ালি কোড করার পরিবর্তে সহজ ডিক্লারেটিভ পদ্ধতিতে লেখা যায়।
  2. সহজ ইন্টিগ্রেশন:
    • Spring Boot এবং Spring Cloud-এর সঙ্গে সহজ ইন্টিগ্রেশন।
  3. লোড ব্যালেন্সিং সমর্থন:
    • Spring Cloud Load Balancer বা Eureka-এর মাধ্যমে লোড ব্যালেন্সিং সমর্থন করে।
  4. বিভিন্ন HTTP মেথড সমর্থন:
    • GET, POST, PUT, DELETE, ইত্যাদি সহজে ব্যবহার করা যায়।

OpenFeign সেটআপ এবং ব্যবহার

1. ডিপেনডেন্সি যোগ করা

আপনার pom.xml-এ OpenFeign এর ডিপেনডেন্সি যোগ করুন।

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

2. Feign Client সক্রিয় করা

Feign Client ব্যবহার করতে @EnableFeignClients অ্যানোটেশনটি আপনার মেইন ক্লাসে যোগ করুন।

@SpringBootApplication
@EnableFeignClients
public class FeignClientApplication {
    public static void main(String[] args) {
        SpringApplication.run(FeignClientApplication.class, args);
    }
}

3. Feign Client তৈরি করা

একটি ইন্টারফেস তৈরি করুন এবং HTTP মেথডের জন্য Spring MVC অ্যানোটেশন ব্যবহার করুন।

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

@FeignClient(name = "jsonplaceholder", url = "https://jsonplaceholder.typicode.com")
public interface JsonPlaceholderClient {

    @GetMapping("/posts/{id}")
    String getPostById(@PathVariable("id") Long id);
}

ব্যাখ্যা:

  • @FeignClient: Feign-এর মাধ্যমে এই ইন্টারফেসটি HTTP রিকোয়েস্ট পরিচালনা করবে।
  • name: Feign Client-এর একটি নাম।
  • url: যে API এর সঙ্গে যোগাযোগ করতে হবে।
  • @GetMapping: HTTP GET রিকোয়েস্ট নির্দেশ করে।
  • @PathVariable: URL প্যারামিটার হিসেবে ID পাঠায়।

4. Feign Client ব্যবহার করা

একটি Spring Controller বা Service-এ Feign Client ইনজেক্ট করে ব্যবহার করুন।

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class PostController {

    private final JsonPlaceholderClient jsonPlaceholderClient;

    public PostController(JsonPlaceholderClient jsonPlaceholderClient) {
        this.jsonPlaceholderClient = jsonPlaceholderClient;
    }

    @GetMapping("/post/{id}")
    public String getPostById(@PathVariable("id") Long id) {
        return jsonPlaceholderClient.getPostById(id);
    }
}

5. অ্যাপ্লিকেশন চালানো এবং API কল করা

Spring Boot অ্যাপ্লিকেশন চালিয়ে /post/{id} এপয়েন্টে কল করুন। উদাহরণ:

GET http://localhost:8080/post/1

OpenFeign-এর মাধ্যমে POST Request করা

OpenFeign দিয়ে POST রিকোয়েস্ট তৈরি করা যায় সহজেই। উদাহরণস্বরূপ:

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

@FeignClient(name = "jsonplaceholder", url = "https://jsonplaceholder.typicode.com")
public interface JsonPlaceholderClient {

    @PostMapping("/posts")
    String createPost(@RequestBody Post post);
}

class Post {
    private String title;
    private String body;
    private Long userId;

    // Getters and Setters
}

Controller-এ POST রিকোয়েস্ট কল:

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

@RestController
public class PostController {

    private final JsonPlaceholderClient jsonPlaceholderClient;

    public PostController(JsonPlaceholderClient jsonPlaceholderClient) {
        this.jsonPlaceholderClient = jsonPlaceholderClient;
    }

    @PostMapping("/create-post")
    public String createPost(@RequestBody Post post) {
        return jsonPlaceholderClient.createPost(post);
    }
}

Feign Client কাস্টমাইজেশন

1. হেডার যোগ করা

আপনার রিকোয়েস্টে কাস্টম হেডার যোগ করতে @RequestHeader ব্যবহার করুন।

@FeignClient(name = "jsonplaceholder", url = "https://jsonplaceholder.typicode.com")
public interface JsonPlaceholderClient {

    @GetMapping("/posts/{id}")
    String getPostById(@PathVariable("id") Long id, 
                       @RequestHeader("Authorization") String token);
}

2. ডিফল্ট কনফিগারেশন

Feign Client-এর জন্য ডিফল্ট টাইমআউট বা রিট্রাই কনফিগারেশন সেট করা যায়।

@Bean
public Request.Options requestOptions() {
    return new Request.Options(5000, 10000); // Connect and Read timeout
}

উপসংহার

  • OpenFeign হলো Spring Boot-এ HTTP রিকোয়েস্ট করার একটি সহজ এবং কার্যকর পদ্ধতি।
  • এটি ডিক্লারেটিভ HTTP ক্লায়েন্ট পদ্ধতি ব্যবহার করে কোডকে আরও রিডেবল এবং মেইনটেইনেবল করে তোলে।
  • Spring Boot এর মধ্যে Feign Client ব্যবহার করা নতুন মাইক্রোসার্ভিস আর্কিটেকচারের জন্য অত্যন্ত উপযোগী।
Content added By
Promotion

Are you sure to start over?

Loading...