Java Technologies @RestController এবং Jackson এর মাধ্যমে JSON Response Handling গাইড ও নোট

310

@RestController হল Spring Framework-এর একটি অ্যানোটেশন যা বিশেষভাবে RESTful Web Services তৈরি করতে ব্যবহৃত হয়। এটি @Controller এবং @ResponseBody এর সমন্বয়ে তৈরি, যার মাধ্যমে Spring আপনাকে JSON বা XML ফরম্যাটে ডেটা রিটার্ন করতে সক্ষম করে। Jackson স্বয়ংক্রিয়ভাবে JSON Response Handling করতে সাহায্য করে, এবং Spring Boot এর সাথে এর ইন্টিগ্রেশন খুবই সহজ।

এই প্রক্রিয়াতে, @RestController ব্যবহার করে আপনার অ্যাপ্লিকেশনকে REST API হিসেবে কনফিগার করতে পারেন, এবং Jackson স্বয়ংক্রিয়ভাবে Java Objects কে JSON ফরম্যাটে রূপান্তর করে।


@RestController এবং JSON Response Handling

1. @RestController এর ব্যবহার

@RestController Spring MVC এর একটি বিশেষ অ্যানোটেশন যা REST API তৈরি করতে ব্যবহৃত হয়। এটি ক্লাসকে RESTful Web Service Controller হিসেবে চিহ্নিত করে, যেখানে ক্লাসের প্রতিটি মেথড স্বয়ংক্রিয়ভাবে HTTP Response হিসেবে JSON বা XML ফরম্যাটে ডেটা রিটার্ন করে। @ResponseBody অ্যানোটেশনটির ব্যবহার এখানে অন্তর্ভুক্ত থাকে, যার মাধ্যমে মেথডের রিটার্ন ভ্যালু সরাসরি HTTP Response Body তে চলে আসে।

Java Class Example with @RestController:

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

@RestController
public class UserController {

    @GetMapping("/user")
    public User getUser() {
        return new User(1, "Rahim", "rahim@example.com");
    }
}

User Class Example:

public class User {
    private int id;
    private String name;
    private String email;

    public User(int id, String name, String email) {
        this.id = id;
        this.name = name;
        this.email = email;
    }

    // Getters and Setters
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

JSON Response Handling

Spring Boot Application Setup:

Spring Boot নিজেই Jackson এর সাথে ইন্টিগ্রেটেড থাকে, যার মাধ্যমে Java objects স্বয়ংক্রিয়ভাবে JSON ফরম্যাটে রূপান্তরিত হয়। আপনি @RestControllerGET মেথড তৈরি করে যখন JSON রেসপন্স ফেরত দেবেন, তখন Jackson আপনার User অবজেক্টকে JSON ফরম্যাটে রূপান্তর করবে।

JSON Response Example:

মনে করুন আপনি /user URL এ একটি GET রিকোয়েস্ট পাঠাচ্ছেন। Spring Boot এবং Jackson স্বয়ংক্রিয়ভাবে User অবজেক্টকে JSON রেসপন্সে রূপান্তর করবে।

{
  "id": 1,
  "name": "Rahim",
  "email": "rahim@example.com"
}

@JsonFormat এবং JSON Response Formatting

Jackson-এ আপনি @JsonFormat অ্যানোটেশন ব্যবহার করে Date বা Time ফরম্যাটিং কাস্টমাইজ করতে পারেন, যাতে JSON রেসপন্সে টাইম বা ডেটা ফরম্যাট নির্দিষ্টভাবে আসে।

Java Class with @JsonFormat:

import com.fasterxml.jackson.annotation.JsonFormat;

import java.util.Date;

public class Event {
    private String name;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Kolkata")
    private Date eventDate;

    public Event(String name, Date eventDate) {
        this.name = name;
        this.eventDate = eventDate;
    }

    // Getters and Setters
}

@RestController এর সাথে @JsonFormat Example:

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

import java.util.Date;

@RestController
public class EventController {

    @GetMapping("/event")
    public Event getEvent() {
        return new Event("Workshop", new Date());
    }
}

JSON Output with Date:

{
  "name": "Workshop",
  "eventDate": "2024-12-21 14:30:00"
}

এখানে, @JsonFormat ব্যবহার করা হয়েছে, যাতে eventDate ফিল্ডের তারিখ এবং সময় yyyy-MM-dd HH:mm:ss ফরম্যাটে প্রদর্শিত হয়।


Spring Boot Configuration for Jackson

Spring Boot-এর মধ্যে Jackson ডিফল্টভাবে কনফিগার করা থাকে, তবে আপনি application.properties বা application.yml ফাইলের মাধ্যমে Jackson এর কনফিগারেশন পরিবর্তন করতে পারেন।

Example: Customizing JSON Formatting

# application.properties file
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=Asia/Kolkata

application.yml Example:

spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: Asia/Kolkata

এভাবে আপনি Spring Boot অ্যাপ্লিকেশনে Jackson এর JSON রেসপন্স কাস্টমাইজ করতে পারেন।


@JsonProperty এবং JSON Response Handling

Jackson এর @JsonProperty অ্যানোটেশন ব্যবহার করে আপনি ফিল্ড নাম কাস্টমাইজ করতে পারেন, যাতে আপনার JSON রেসপন্সে ফিল্ড নামগুলি আপনার চাহিদা অনুযায়ী হয়।

Example:

import com.fasterxml.jackson.annotation.JsonProperty;

public class User {
    @JsonProperty("user_id")
    private int id;

    @JsonProperty("user_name")
    private String name;

    private String email;

    // Getters and Setters
}

JSON Output:

{
  "user_id": 1,
  "user_name": "Rahim",
  "email": "rahim@example.com"
}

@JsonIgnore এবং JSON Response Handling

@JsonIgnore অ্যানোটেশন ব্যবহার করে আপনি JSON রেসপন্স থেকে নির্দিষ্ট ফিল্ড বাদ দিতে পারেন।

Example:

import com.fasterxml.jackson.annotation.JsonIgnore;

public class User {
    private int id;
    private String name;

    @JsonIgnore
    private String password;

    // Getters and Setters
}

JSON Output (Password field excluded):

{
  "id": 1,
  "name": "Rahim"
}

এখানে, password ফিল্ড @JsonIgnore দ্বারা বাদ দেওয়া হয়েছে, এবং JSON রেসপন্সে এটি প্রদর্শিত হয়নি।


  1. @RestController অ্যানোটেশন Spring Boot-এ RESTful API তৈরি করতে ব্যবহৃত হয়, এবং Jackson স্বয়ংক্রিয়ভাবে Java Object কে JSON ফরম্যাটে রূপান্তর করে।
  2. Jackson এর মাধ্যমে আপনি JSON রেসপন্স ফরম্যাট কাস্টমাইজ করতে পারেন, যেমন @JsonFormat, @JsonProperty, এবং @JsonIgnore ব্যবহার করে।
  3. Spring Boot Configuration দিয়ে আপনি Jackson এর কনফিগারেশন সহজেই নিয়ন্ত্রণ করতে পারেন (যেমন তারিখ এবং টাইমজোন ফরম্যাটিং)।
  4. Jackson এর মাধ্যমে আপনি JSON রেসপন্সকে আরও কাস্টমাইজড, নিয়ন্ত্রিত এবং নিরাপদ করতে পারেন।

Jackson এবং Spring Boot এর সাহায্যে JSON Response Handling একেবারে সহজ এবং শক্তিশালী, যা RESTful APIs-কে আরও নমনীয় এবং ব্যবস্থাপনাযোগ্য করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...