ধরা যাক, আমাদের একটি রুট আছে যেখানে ব্যবহারকারীর ইনপুটের ভ্যালিডেশন করতে হবে। আমরা Joi দিয়ে একটি নতুন রুট তৈরি করে উদাহরণ দেখবো।
const express = require("express");
const config = require("./config/config");
const Joi = require("joi");
const app = express();
// JSON ডেটা গ্রহণের জন্য express.json() Middleware ব্যবহার করা
app.use(express.json());
// হোম রুট
app.get("/", (req, res) => {
res.send("Hello World! Joi Validation is working.");
});
// POST রুট যেখানে request.body থেকে ইনপুট গ্রহণ ও ভ্যালিডেশন করা হচ্ছে
app.post("/api/data", (req, res) => {
// Joi স্কিমা তৈরি করে ইনপুটের কাঠামো এবং ভ্যালিডেশন নিয়ম নির্ধারণ করা
const schema = Joi.object({
name: Joi.string().min(3).required(),
age: Joi.number().integer().min(0).required(),
email: Joi.string().email().required(),
});
// request.body তে ভ্যালিডেশন করা
const { error } = schema.validate(req.body);
// যদি ভ্যালিডেশন ব্যর্থ হয়, তাহলে ত্রুটি মেসেজ সহ রেসপন্স ফেরত দেওয়া
if (error) {
return res.status(400).send(error.details[0].message);
}
// যদি ভ্যালিডেশন সফল হয়, তাহলে সফল মেসেজ রিটার্ন করা
res.send("Data is valid!");
});
// সার্ভার চালু করা
app.listen(config.port, () => {
console.log(`Server is running on port ${config.port}`);
});
কীভাবে কাজ করে
- express.json() Middleware:
app.use(express.json())
Middleware ব্যবহার করেrequest.body
তে JSON ডেটা পড়া সম্ভব হয়।
- schema.validate(req.body):
Joi
দিয়ে তৈরি স্কিমার সাহায্যে আমরাrequest.body
এর ডেটা যাচাই (ভ্যালিডেশন) করি।- যদি কোনো ইনপুট ভ্যালিডেশন পাস না করে,
error
অবজেক্টে ত্রুটি বার্তা পাওয়া যাবে।
- Response:
- যদি ভ্যালিডেশন সফল হয়, তাহলে আমরা “Data is valid!” মেসেজ পাঠাচ্ছি।
- যদি ভ্যালিডেশন ব্যর্থ হয়, তাহলে আমরা ৪০০ স্ট্যাটাস কোড এবং ত্রুটি মেসেজ সহ রেসপন্স পাঠাচ্ছি।