JSON স্কিমা (JSON Schema) একটি ডেটা ডেসক্রিপশন ল্যাঙ্গুয়েজ যা JSON ডেটা ফরম্যাটের কাঠামো, কনটেন্ট এবং কনস্ট্রেইন্ট (নিয়মাবলী) বর্ণনা করে। এটি JSON ডেটার একটি কাঠামো নির্ধারণ করে এবং ডেটার ধরন, ফিল্ড নাম, মানের সীমা ইত্যাদি সুনির্দিষ্ট করে। JSON স্কিমা সাধারণত JSON ডেটা ভ্যালিডেশন, ডকুমেন্টেশন এবং API বা ডেটাবেসে ডেটার স্ট্রাকচার নিশ্চিত করতে ব্যবহৃত হয়।
JSON স্কিমা একটি নির্দিষ্ট কাঠামোর JSON ডেটা ফাইল যা নির্দেশ করে ডেটার কাঠামো, ধরন, প্রয়োজনীয় ফিল্ড, ফিল্ডের মানের সীমা, এবং অন্যান্য বৈশিষ্ট্য। JSON স্কিমা আপনাকে JSON ডেটার অভ্যন্তরীণ কাঠামো এবং কনটেন্ট কিভাবে হওয়া উচিত তা সুনির্দিষ্ট করে দেয়।
JSON স্কিমা সাধারণত JSON অবজেক্ট হিসেবে থাকে, যেখানে কিছু মূল কিওয়ার্ড থাকে, যেমন:
type
: ডেটার ধরন (যেমন, string
, number
, array
, ইত্যাদি)properties
: অবজেক্টের প্রপার্টি/ফিল্ডের বিস্তারিত বর্ণনাrequired
: কোনো প্রপার্টি প্রয়োজনীয় কি না, তা নির্ধারণ করেitems
: অ্যারে (array)-এর এলিমেন্টসের ধরনএকটি সাধারণ JSON স্কিমার উদাহরণ:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"name": {
"type": "string"
},
"age": {
"type": "integer",
"minimum": 18
},
"email": {
"type": "string",
"format": "email"
}
},
"required": ["name", "age"]
}
এখানে:
type: "object"
: JSON ডেটার মূল কাঠামো একটি অবজেক্ট (object)।properties
: অবজেক্টের মধ্যে থাকা প্রপার্টি/ফিল্ডগুলির বর্ণনা।required
: name
এবং age
ফিল্ড দুটি প্রয়োজনীয় (অন্যথায় এটা ভ্যালিড হবে না)।JSON ভ্যালিডেশন হল একটি প্রক্রিয়া যেখানে JSON ডেটার কাঠামো এবং কনটেন্ট চেক করা হয়, যেন তা একটি নির্দিষ্ট স্কিমার সাথে সঙ্গতিপূর্ণ থাকে। অর্থাৎ, JSON ডেটা ওই স্কিমার নিয়ম ও কনস্ট্রেইন্ট অনুসরণ করছে কিনা তা যাচাই করা হয়। এটি বিভিন্ন জায়গায় ব্যবহৃত হয়:
আপনি JSON স্কিমা ভ্যালিডেশন করার জন্য বিভিন্ন লাইব্রেরি এবং টুলস ব্যবহার করতে পারেন। কিছু জনপ্রিয় JSON স্কিমা ভ্যালিডেশন লাইব্রেরি:
Java তে JSON স্কিমা ভ্যালিডেশন করার জন্য Everit JSON Schema
এবং Jackson
লাইব্রেরি বেশ জনপ্রিয়। এখানে আমরা Everit JSON Schema লাইব্রেরি ব্যবহার করে JSON স্কিমা ভ্যালিডেশন করার একটি উদাহরণ দেখব।
<dependency>
<groupId>org.everit.json</groupId>
<artifactId>everit-json-schema</artifactId>
<version>1.13.0</version>
</dependency>
import org.everit.json.schema.Schema;
import org.everit.json.schema.loader.SchemaLoader;
import org.json.JSONObject;
import org.json.JSONTokener;
public class JSONValidator {
public static void main(String[] args) {
// JSON স্কিমা (schema) এবং JSON ডেটা
String schemaString = "{\n" +
" \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n" +
" \"type\": \"object\",\n" +
" \"properties\": {\n" +
" \"name\": { \"type\": \"string\" },\n" +
" \"age\": { \"type\": \"integer\", \"minimum\": 18 }\n" +
" },\n" +
" \"required\": [\"name\", \"age\"]\n" +
"}";
String jsonString = "{ \"name\": \"John\", \"age\": 30 }";
// JSON স্কিমা লোড করা
JSONObject jsonSchema = new JSONObject(new JSONTokener(schemaString));
Schema schema = SchemaLoader.load(jsonSchema);
// JSON ডেটা লোড করা
JSONObject jsonData = new JSONObject(jsonString);
// ভ্যালিডেশন করা
try {
schema.validate(jsonData); // JSON ডেটা স্কিমার সাথে মিলছে কিনা পরীক্ষা করা
System.out.println("JSON is valid.");
} catch (Exception e) {
System.out.println("JSON is invalid: " + e.getMessage());
}
}
}
এখানে:
JSON স্কিমা ভ্যালিডেশন টুলস বা অনলাইন প্ল্যাটফর্মগুলি JSON স্কিমা ফাইল পরীক্ষা করতে সহায়তা করে। কিছু জনপ্রিয় টুলস:
সারাংশ:
JSON স্কিমা একটি গুরুত্বপূর্ণ টুল যা JSON ডেটার কাঠামো নির্ধারণ করে এবং ভ্যালিডেশন প্রক্রিয়ার মাধ্যমে ডেটার সঠিকতা যাচাই করতে সাহায্য করে। Java তে JSON স্কিমা ভ্যালিডেশন করতে আপনি লাইব্রেরি ব্যবহার করতে পারেন, যেমন Everit JSON Schema বা Jackson। JSON স্কিমা এবং ভ্যালিডেশন টুলস ডেভেলপারদের জন্য JSON ডেটার সঠিকতা এবং ডেটা ইন্টিগ্রিটি নিশ্চিত করতে অত্যন্ত কার্যকরী।
JSON Schema হল একটি নির্দিষ্ট স্ট্রাকচারে JSON ডেটা ভ্যালিডেট এবং বর্ণনা করার জন্য একটি নির্ধারিত কাঠামো। এটি মূলত JSON ডেটার গঠন, প্রকার, সীমাবদ্ধতা এবং বৈশিষ্ট্যগুলির জন্য নিয়মাবলী (rules) সংজ্ঞায়িত করে, যার মাধ্যমে JSON ডেটা যাচাই করা যায়। JSON Schema JSON ডেটার জন্য একটি পদ্ধতি তৈরি করে, যার মাধ্যমে নিশ্চিত করা যায় যে ডেটা কাঠামো ঠিকঠাক এবং নির্দিষ্ট শর্ত পূরণ করছে।
JSON Schema সাধারণত একটি JSON অবজেক্ট হিসেবে থাকে, যেখানে বিভিন্ন প্রপার্টি, ডেটা প্রকার (data types), এবং অন্যান্য বৈশিষ্ট্যগুলির বর্ণনা থাকে। JSON Schema ডেটা স্ট্রাকচারের নির্দিষ্ট রুল এবং শর্তগুলো নির্ধারণ করে, যেমন:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"name": {
"type": "string"
},
"age": {
"type": "integer",
"minimum": 18
},
"email": {
"type": "string",
"format": "email"
}
},
"required": ["name", "email"]
}
এখানে:
object
।JSON Schema একটি গুরুত্বপূর্ণ টুল যা JSON ডেটার স্ট্রাকচার নির্ধারণ, ডেটা ভ্যালিডেশন এবং ডকুমেন্টেশনকে সহজ করে তোলে। এটি ডেভেলপারদের জন্য ডেটা ম্যানিপুলেশন প্রক্রিয়া দ্রুত, নির্ভরযোগ্য এবং ত্রুটিহীন করতে সহায়তা করে। JSON Schema ব্যবহার করে ডেটার গঠন এবং বৈশিষ্ট্য পরীক্ষা করা যায়, যা সিস্টেমগুলির মধ্যে ডেটার এক্সচেঞ্জকে সহজ এবং নিরাপদ করে তোলে।
JSON Schema একটি স্ট্যান্ডার্ড ফরম্যাট যা JSON ডেটার স্ট্রাকচার, বৈশিষ্ট্য এবং ডেটা টাইপ নির্ধারণ করে। এটি JSON ডেটার বৈধতা যাচাই করতে এবং ডেটা কনট্রোল করার জন্য ব্যবহৃত হয়। JSON Schema ডেভেলপারদের JSON ডেটার গঠন এবং এর বৈশিষ্ট্য নির্ধারণ করতে সহায়তা করে, যাতে ডেটা ট্রান্সফারের সময় ত্রুটি কম হয় এবং ডেটার গুণমান বজায় থাকে।
JSON Schema হল একটি নির্দিষ্ট কাঠামো যা JSON ডেটার ভিতরে থাকা কিপল-পেয়ার বা অ্যারের আকার, ডেটা টাইপ, এবং তাদের অন্যান্য বৈশিষ্ট্য সম্পর্কিত নিয়ম নির্ধারণ করে। JSON Schema ব্যবহার করে আপনি JSON ডেটা যাচাই করতে পারেন এবং এটি সঠিকভাবে স্ট্রাকচারড কিনা তা নিশ্চিত করতে পারেন।
JSON Schema সাধারণত একটি JSON ডকুমেন্টের মাধ্যমে প্রকাশ করা হয়, যা ডেটার প্রোপার্টি, ডেটা টাইপ এবং বাধ্যতামূলক ক্ষেত্রগুলি নির্ধারণ করে।
1. $schema
:
এটি JSON Schema ডকুমেন্টের স্কিমার সংস্করণ উল্লেখ করে।
2. type
:
এটি JSON ডেটার প্রকার (যেমন, object
, array
, string
, integer
ইত্যাদি) নির্দেশ করে।
3. properties
:
এটি একটি অবজেক্টের ক্ষেত্রগুলির জন্য প্রোপার্টি নির্ধারণ করে।
4. required
:
এটি নিশ্চিত করে যে কোন প্রোপার্টি বাধ্যতামূলক (required) হতে হবে।
5. items
:
এটি অ্যারের জন্য উপাদানগুলির টাইপ বা স্কিমা নির্ধারণ করে।
6. enum
:
এটি একটি সেটের মধ্যে অনুমোদিত মানগুলির তালিকা দেয়।
7. additionalProperties
:
এটি নির্ধারণ করে যে একটি অবজেক্টে অতিরিক্ত অপ্রত্যাশিত প্রোপার্টি থাকতে পারবে কিনা।
এখানে একটি JSON Schema উদাহরণ দেওয়া হল যেখানে একটি ব্যবহারকারী (user) অবজেক্টের স্কিমা ডিজাইন করা হয়েছে।
{
"name": "John Doe",
"age": 30,
"email": "johndoe@example.com",
"isStudent": false
}
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"name": {
"type": "string"
},
"age": {
"type": "integer",
"minimum": 18
},
"email": {
"type": "string",
"format": "email"
},
"isStudent": {
"type": "boolean"
}
},
"required": ["name", "age", "email"],
"additionalProperties": false
}
$schema
:http://json-schema.org/draft-07/schema#
ব্যবহার করা হয়েছে।type
:type
এর মান object
, যা নির্দেশ করে যে এটি একটি অবজেক্ট টাইপ JSON ডেটা।properties
:name
: একটি স্ট্রিং।age
: একটি পূর্ণসংখ্যা এবং এর মান অবশ্যই ১৮ বা তার বেশি হতে হবে (minimum
নির্দেশক)।email
: একটি স্ট্রিং যা ইমেইল ফরম্যাটে হতে হবে (format
নির্দেশক)।isStudent
: একটি বুলিয়ান মান (true বা false)।required
:name
, age
, এবং email
।additionalProperties
:false
সেট করা হয়েছে, এর মানে হলো অবজেক্টে শুধুমাত্র নির্দিষ্ট প্রোপার্টিগুলিই থাকতে পারবে, অন্য কোনো অতিরিক্ত প্রোপার্টি থাকবে না।$schema
ফিল্ডে উল্লেখ করতে ভুলবেন না।required
ফিল্ডের মাধ্যমে আপনি কি কি প্রোপার্টি বাধ্যতামূলক তা নির্ধারণ করতে পারবেন।string
, integer
, boolean
, array
ইত্যাদি।minimum
, maximum
) নির্ধারণ করতে পারেন, যেমন একটি বয়সের মান অবশ্যই ১৮ বা তার বেশি হতে হবে।JSON Schema ডেটার কাঠামো এবং বৈশিষ্ট্য নির্ধারণ করার জন্য একটি শক্তিশালী টুল। এটি JSON ডেটার বৈধতা যাচাই করার জন্য ব্যবহৃত হয় এবং ডেভেলপারদের JSON ডেটা ঠিকমতো ব্যবহার করার জন্য সহায়তা করে। JSON Schema ব্যবহারের মাধ্যমে ডেটার গঠন এবং প্রোপার্টি নিশ্চিত করা যায়, যার ফলে ডেটার নিরাপত্তা এবং সঠিকতা বৃদ্ধি পায়।
JSON Schema একটি ডেটা ফরম্যাট যা JSON ডেটার স্ট্রাকচার, ডেটা টাইপ এবং কন্টেন্টের বৈধতা পরীক্ষা করতে ব্যবহৃত হয়। এটি একটি স্ট্যান্ডার্ড যা JSON ডেটার গঠন এবং বৈধতা যাচাই করতে সাহায্য করে। JSON Schema Validation ব্যবহারের মাধ্যমে আপনি নিশ্চিত করতে পারেন যে JSON ডেটা সঠিকভাবে স্ট্রাকচার্ড এবং নির্দিষ্ট শর্ত পূরণ করছে কিনা।
Java তে JSON Schema Validation করার জন্য বিভিন্ন লাইব্রেরি ব্যবহার করা যেতে পারে। এই লাইব্রেরিগুলি JSON ডেটার স্কিমা অনুযায়ী বৈধতা যাচাই করতে সহায়তা করে এবং আপনি সহজেই আপনার অ্যাপ্লিকেশনে JSON ডেটা ভ্যালিডেশন ইন্টিগ্রেট করতে পারবেন।
Jackson
Jackson হল Java-এর একটি জনপ্রিয় লাইব্রেরি যা JSON পার্সিং এবং সিরিয়ালাইজেশনের জন্য ব্যবহৃত হয়। Jackson JSON Schema Validation এর জন্য একটি আনুষঙ্গিক লাইব্রেরি সরবরাহ করে, যার মাধ্যমে আপনি JSON ডেটা ভ্যালিডেশন করতে পারেন।
Jackson ব্যবহার করার জন্য স্টেপস:
jackson-databind
এবং jackson-module-jsonSchema
লাইব্রেরি ব্যবহার করা হয়।উদাহরণ:
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.module.jsonSchema.JsonSchema;
import com.fasterxml.jackson.module.jsonSchema.factories.SchemaFactoryWrapper;
public class JsonSchemaValidation {
public static void main(String[] args) throws Exception {
String jsonData = "{\"name\": \"John\", \"age\": 30}";
String jsonSchema = "{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"age\":{\"type\":\"integer\"}}}";
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree(jsonData);
JsonNode schemaNode = objectMapper.readTree(jsonSchema);
// Validate the JSON against the schema
SchemaFactoryWrapper visitor = new SchemaFactoryWrapper();
objectMapper.acceptJsonFormatVisitor(jsonNode.getClass(), visitor);
JsonSchema jsonSchema = visitor.finalSchema();
// Perform validation here
boolean valid = jsonSchema.validate(jsonNode).isEmpty();
System.out.println("Is the JSON valid? " + valid);
}
}
এখানে, Jackson এর মাধ্যমে JSON ডেটা এবং স্কিমা পোস্ট করা হয় এবং যাচাই করা হয়, JSON স্কিমার সাথে ডেটা মেলানো যাচ্ছে কিনা।
Everit JSON Schema
Everit JSON Schema হল একটি ছোট এবং দ্রুত JSON Schema validation লাইব্রেরি যা Java-তে JSON স্কিমা ভ্যালিডেশন সমর্থন করে। এটি একটি সহজ এবং হালকা লাইব্রেরি যা JSON Schema validation এফিশিয়েন্সি এবং কার্যকারিতা প্রদান করে।
Everit JSON Schema ব্যবহার করার জন্য স্টেপস:
উদাহরণ:
<dependency>
<groupId>org.everit.json</groupId>
<artifactId>everit-json-schema</artifactId>
<version>1.14.0</version>
</dependency>
Java কোড উদাহরণ:
import org.everit.json.schema.Schema;
import org.everit.json.schema.loader.SchemaLoader;
import org.json.JSONObject;
import org.json.JSONTokener;
public class JsonSchemaValidationExample {
public static void main(String[] args) {
String jsonData = "{\"name\": \"John\", \"age\": 30}";
String jsonSchema = "{\n" +
" \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n" +
" \"type\": \"object\",\n" +
" \"properties\": {\n" +
" \"name\": {\"type\": \"string\"},\n" +
" \"age\": {\"type\": \"integer\"}\n" +
" },\n" +
" \"required\": [\"name\", \"age\"]\n" +
"}";
JSONObject jsonSubject = new JSONObject(jsonData);
JSONObject jsonSchemaObject = new JSONObject(jsonSchema);
// Load the schema
Schema schema = SchemaLoader.load(jsonSchemaObject);
// Validate the JSON data against the schema
schema.validate(jsonSubject); // This will throw a ValidationException if invalid
System.out.println("JSON is valid according to the schema!");
}
}
এখানে, JSON ডেটা এবং JSON স্কিমার মধ্যে সঠিকতা যাচাই করা হয়েছে এবং JSON যদি সঠিক না হয়, তবে একটি ValidationException থ্রো হবে।
JSONassert
JSONassert লাইব্রেরি JSON এর মধ্যে ভার্চুয়াল কন্টেন্ট তুলনা করার জন্য ব্যবহৃত হয়, এবং এটি JSON ডেটার স্কিমা ভ্যালিডেশন করতে সক্ষম। এটি সাধারণত টেস্টিং ফ্রেমওয়ার্কে ব্যবহৃত হয়।
JSONassert ব্যবহার করার জন্য স্টেপস:
<dependency>
<groupId>org.skyscreamer</groupId>
<artifactId>jsonassert</artifactId>
<version>1.5.0</version>
<scope>test</scope>
</dependency>
Java কোড উদাহরণ:
import org.junit.Test;
import static org.junit.Assert.*;
import org.skyscreamer.jsonassert.JSONAssert;
public class JsonValidationTest {
@Test
public void testJsonSchema() throws Exception {
String expectedJson = "{\"name\":\"John\",\"age\":30}";
String actualJson = "{\"name\":\"John\",\"age\":30}";
// Validate that JSON is correct
JSONAssert.assertEquals(expectedJson, actualJson, false);
}
}
এখানে JSONAssert.assertEquals()
ব্যবহার করে দুইটি JSON অবজেক্টের মধ্যে সঠিকতা যাচাই করা হয়েছে।
Java তে JSON Schema Validation করার জন্য বেশ কিছু লাইব্রেরি পাওয়া যায়, যেমন Jackson, Everit JSON Schema, এবং JSONassert। এই লাইব্রেরিগুলি ব্যবহার করে আপনি সহজেই JSON ডেটা স্কিমার সাথে তুলনা করে তার বৈধতা যাচাই করতে পারেন। Everit JSON Schema লাইব্রেরি সবচেয়ে সরল এবং দ্রুত কাজ করে, যেখানে Jackson এবং JSONassert অন্য উন্নত বৈশিষ্ট্য প্রদান করে যেমন JSON ডেটার গভীর তুলনা এবং ফরম্যাটিং।
API ইনপুট ভ্যালিডেশন হল একটি অত্যন্ত গুরুত্বপূর্ণ প্রক্রিয়া যা অ্যাপ্লিকেশন থেকে ইনপুট ডেটা সঠিকভাবে প্রাপ্ত হচ্ছে কিনা তা নিশ্চিত করে। যদি ইনপুট ডেটা ঠিক না হয়, তবে তা অ্যাপ্লিকেশনের সঠিক কার্যকারিতা ব্যাহত করতে পারে। JSON ফরম্যাটে ইনপুট ডেটা পাঠানো হলে, Java-তে এই ইনপুট ডেটার ভ্যালিডেশন করা যায় সহজেই।
এখানে আমরা দেখব কিভাবে একটি RESTful API তৈরি করা যায় যেখানে JSON ইনপুট ডেটা গ্রহণ করা হয় এবং সেই ডেটার ভ্যালিডেশন করা হয়।
আপনি যদি Maven ব্যবহার করেন, তাহলে প্রথমে প্রয়োজনীয় লাইব্রেরি যোগ করতে হবে। এখানে আমরা Jackson লাইব্রেরি ব্যবহার করব JSON ডেটা পার্সিংয়ের জন্য এবং Hibernate Validator ব্যবহার করব ইনপুট ভ্যালিডেশনের জন্য।
<dependencies>
<!-- Jackson JSON Processor -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.5</version>
</dependency>
<!-- Hibernate Validator -->
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.1.0.Final</version>
</dependency>
<!-- Bean Validation API -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
</dependencies>
API ইনপুট ভ্যালিডেশনের জন্য প্রথমে একটি ক্লাস তৈরি করতে হবে যেটি JSON ইনপুট ডেটা ধারণ করবে। এখানে আমরা User নামের একটি ক্লাস তৈরি করব যেটি ব্যবহারকারীর নাম, বয়স এবং ইমেইল ধারণ করবে এবং আমাদের প্রয়োজনীয় ভ্যালিডেশন যুক্ত করব।
import javax.validation.constraints.Email;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
public class User {
@NotNull(message = "Name cannot be null")
private String name;
@Min(value = 18, message = "Age must be greater than or equal to 18")
private int age;
@Email(message = "Invalid email format")
private String email;
// গেটার এবং সেটার মেথড
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
public String getEmail() { return email; }
public void setEmail(String email) { this.email = email; }
}
এখানে আমরা @NotNull
, @Min
, এবং @Email
অ্যনোটেশন ব্যবহার করেছি, যা ইনপুট ডেটার ভ্যালিডেশন করতে সহায়তা করবে।
এখন একটি REST API কন্ট্রোলার তৈরি করতে হবে যেখানে ব্যবহারকারী JSON ডেটা POST রিকোয়েস্টের মাধ্যমে পাঠাবে এবং ইনপুট ভ্যালিডেশন করা হবে।
import com.fasterxml.jackson.databind.ObjectMapper;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.util.Set;
@Path("/user")
public class UserController {
// Validator ইনস্ট্যান্স
private static Validator validator;
static {
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
validator = factory.getValidator();
}
@POST
@Path("/create")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response createUser(String jsonInput) {
try {
// JSON থেকে User অবজেক্টে রূপান্তর
ObjectMapper objectMapper = new ObjectMapper();
User user = objectMapper.readValue(jsonInput, User.class);
// ইনপুট ভ্যালিডেশন
Set<javax.validation.ConstraintViolation<User>> violations = validator.validate(user);
if (!violations.isEmpty()) {
StringBuilder errorMessage = new StringBuilder();
for (javax.validation.ConstraintViolation<User> violation : violations) {
errorMessage.append(violation.getMessage()).append("\n");
}
return Response.status(Response.Status.BAD_REQUEST)
.entity("{\"error\":\"" + errorMessage.toString() + "\"}")
.build();
}
// যদি কোনো ত্রুটি না থাকে, সাফল্য মেসেজ পাঠানো
return Response.status(Response.Status.OK).entity("{\"message\":\"User created successfully\"}").build();
} catch (Exception e) {
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
.entity("{\"error\":\"Error processing request\"}")
.build();
}
}
}
এখানে, POST /create এ API পদ্ধতি, JSON ইনপুট গ্রহণ করে, Jackson ObjectMapper ব্যবহার করে User
অবজেক্টে রূপান্তরিত করছে। তারপর Hibernate Validator ব্যবহার করে ইনপুট ডেটা ভ্যালিডেট করা হচ্ছে।
এখন আমরা Postman বা অন্য কোন API টেস্টিং টুল ব্যবহার করে এই API টেস্ট করতে পারি। নিচে কিছু ইনপুট উদাহরণ দেয়া হলো:
{
"name": "John",
"age": 25,
"email": "john.doe@example.com"
}
এখানে ইনপুট সঠিক হলে, সাফল্য মেসেজ ফিরিয়ে আসবে:
{
"message": "User created successfully"
}
{
"name": "John",
"age": 15,
"email": "john.doe@example.com"
}
এই ক্ষেত্রে, ত্রুটি মেসেজ আসবে:
{
"error": "Age must be greater than or equal to 18"
}
{
"name": "John",
"age": 25,
"email": "john.doe"
}
এক্ষেত্রে ত্রুটি মেসেজ আসবে:
{
"error": "Invalid email format"
}
এই উদাহরণে দেখানো হয়েছে কিভাবে Java দিয়ে JSON ইনপুট ভ্যালিডেশন করা যায়। Hibernate Validator ব্যবহার করে JSON ইনপুটের বিভিন্ন ফিল্ডের ভ্যালিডেশন চেক করা হয়েছে, যেমন বয়স ১৮ এর বেশি হওয়া, নামের ফিল্ডের নাল না হওয়া এবং ইমেইল ফরম্যাট সঠিক হওয়া। এর ফলে, REST API এর ইনপুট ভ্যালিডেশন আরও সহজ এবং কার্যকর হয়, যা অ্যাপ্লিকেশনের সঠিক কার্যকারিতা নিশ্চিত করে।
Read more