Practical উদাহরণ: REST API Client Application তৈরি করা

JavaFX এবং RESTful Web Services Integration - জাভাএফএক্স (JavaFx) - Java Technologies

275

JavaFX REST API Client Application তৈরি করার উদাহরণ আপনাকে একটি সাধারণ ক্লায়েন্ট অ্যাপ্লিকেশন তৈরি করতে সহায়তা করবে যা HTTP রিকোয়েস্ট পাঠিয়ে REST API থেকে ডেটা নিয়ে আসবে এবং তা UI তে প্রদর্শন করবে। এখানে আমরা JavaFX ব্যবহার করব UI তৈরি করার জন্য এবং HttpClient ব্যবহার করব REST API কল করার জন্য।

Steps to Create REST API Client Application:

  1. JavaFX UI তৈরি করা: একটি বেসিক UI তৈরি করা যেখানে API থেকে আনা ডেটা প্রদর্শন হবে।
  2. HTTP Request তৈরি করা: Java 11 এর HttpClient API ব্যবহার করে GET রিকোয়েস্ট পাঠানো হবে।
  3. API থেকে ডেটা গ্রহণ করা: JSON ডেটা পেতে এবং তা UI তে প্রক্রিয়া করা।
  4. JavaFX UI তে ডেটা প্রদর্শন করা: API থেকে পাওয়া ডেটা UI তে প্রদর্শন করা।

Complete Example: REST API Client in JavaFX

এখানে আমরা একটি পাবলিক API ব্যবহার করব (যেমন https://jsonplaceholder.typicode.com/posts) যা JSON ডেটা ফেরত দেয় এবং সেই ডেটা JavaFX UI তে দেখানো হবে।

1. JavaFX UI তৈরি করা এবং HTTP Request পাঠানো:

import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.scene.control.TextArea;
import javafx.concurrent.Task;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import org.json.JSONArray;
import org.json.JSONObject;

public class RestApiClientApp extends Application {

    // UI উপাদান তৈরি করা
    private TextArea textArea = new TextArea();
    private Button btnFetchData = new Button("Fetch Data from API");
    private Label label = new Label("Press the button to fetch data");

    @Override
    public void start(Stage primaryStage) {
        // StackPane Layout সেট করা
        StackPane root = new StackPane();
        root.getChildren().addAll(textArea, label, btnFetchData);
        label.setTranslateY(-100);
        textArea.setTranslateY(50);
        textArea.setPrefSize(400, 300);

        // Button-এ Action Event যোগ করা
        btnFetchData.setOnAction(event -> fetchApiData());

        // Scene তৈরি এবং Stage সেট করা
        Scene scene = new Scene(root, 500, 400);
        primaryStage.setTitle("REST API Client with JavaFX");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    // API থেকে ডেটা ফেচ করার জন্য Method
    private void fetchApiData() {
        // একটি নতুন Task তৈরি করা যাতে API কল ব্যাকগ্রাউন্ডে চলে
        Task<String> task = new Task<String>() {
            @Override
            protected String call() throws Exception {
                HttpClient client = HttpClient.newHttpClient();
                HttpRequest request = HttpRequest.newBuilder()
                        .uri(URI.create("https://jsonplaceholder.typicode.com/posts"))
                        .build();

                // API রেসপন্স পাঠানো
                HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

                // রেসপন্স থেকে JSON ডেটা পার্স করা
                JSONArray jsonArray = new JSONArray(response.body());
                StringBuilder result = new StringBuilder();
                for (int i = 0; i < jsonArray.length(); i++) {
                    JSONObject post = jsonArray.getJSONObject(i);
                    result.append("ID: ").append(post.getInt("id"))
                            .append("\nTitle: ").append(post.getString("title"))
                            .append("\nBody: ").append(post.getString("body"))
                            .append("\n\n");
                }
                return result.toString(); // API থেকে আনা ডেটা রিটার্ন করা
            }
        };

        // Task-এর সাফল্য হলে UI আপডেট করা
        task.setOnSucceeded(e -> textArea.setText(task.getValue()));

        // ব্যর্থ হলে UI-তে মেসেজ প্রদর্শন করা
        task.setOnFailed(e -> textArea.setText("Failed to fetch data!"));

        // Task শুরু করা
        new Thread(task).start();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

এখানে কী হচ্ছে?

  1. JavaFX UI তৈরি করা:
    • TextArea: এখানে API থেকে আনা ডেটা প্রদর্শিত হবে।
    • Button: ক্লিক করলে API কল শুরু হবে।
    • Label: একটি টেক্সট ডিসপ্লে করা হবে যেখানে ব্যবহারকারীকে তথ্য দেওয়া হবে।
  2. HttpClient ব্যবহার:
    • HttpClient ব্যবহার করে API থেকে ডেটা ফেচ করা হচ্ছে। এখানে আমরা https://jsonplaceholder.typicode.com/posts API ব্যবহার করেছি যা পোস্ট ডেটা ফেরত দেয়।
  3. JSON ডেটা পার্সিং:
    • JSONArray এবং JSONObject ব্যবহার করে JSON ডেটা পার্স করা হচ্ছে।
  4. Task ক্লাস ব্যবহার:
    • API কল ব্যাকগ্রাউন্ড থ্রেডে করা হচ্ছে যাতে UI থ্রেড ব্লক না হয়। Task ক্লাসের call() মেথডে HTTP রিকোয়েস্ট এবং JSON পার্সিং করা হচ্ছে।
  5. UI আপডেট:
    • ব্যাকগ্রাউন্ড থ্রেডে কাজ করার পর, UI আপডেট করা হচ্ছে যাতে API থেকে পাওয়া ডেটা UI-তে প্রদর্শিত হয়।

কোডটি চালানোর প্রক্রিয়া:

  1. JavaFX অ্যাপ্লিকেশন রান করা হলে, প্রথমে একটি বাটন প্রদর্শিত হবে।
  2. বাটনে ক্লিক করলে, API থেকে ডেটা ফেচ করতে HTTP রিকোয়েস্ট পাঠানো হবে।
  3. API থেকে ডেটা আসলে তা JSON ফরম্যাটে পার্স করা হবে এবং TextArea তে প্রদর্শিত হবে।

সম্ভাব্য API Endpoint:

এখানে আমরা jsonplaceholder.typicode.com নামক একটি পাবলিক API ব্যবহার করেছি, তবে আপনি অন্য যে কোনো REST API ব্যবহার করতে পারেন যেমন:


সারাংশ:

এই উদাহরণে আমরা JavaFX ব্যবহার করে একটি REST API Client অ্যাপ্লিকেশন তৈরি করেছি যা HTTP রিকোয়েস্ট পাঠিয়ে JSON ডেটা ফেচ করে এবং তা UI-তে প্রদর্শন করে। এখানে HttpClient এবং Task ব্যবহৃত হয়েছে যাতে API কল ব্যাকগ্রাউন্ড থ্রেডে পরিচালিত হয় এবং UI থ্রেড ব্লক না হয়।

Content added By
Promotion

Are you sure to start over?

Loading...