গ্রাফকিউএল (GraphQL) এ Validation Errors এবং Field Level Error Handling হল একটি গুরুত্বপূর্ণ দিক যা API-এর সঠিক ব্যবহার নিশ্চিত করতে সহায়ক। গ্রাফকিউএল কুয়েরি বা মিউটেশন যখন কিছু ভুল বা অযাচিত ইনপুট পায়, তখন ব্যবহারকারীদের সঠিকভাবে ভুল বার্তা প্রদান করা উচিত। গ্রাফকিউএল এ Error Handling এর সঠিক প্রক্রিয়া শুধুমাত্র ব্যবহারকারীর জন্য ভালো অভিজ্ঞতা তৈরি করে না, বরং সার্ভারের জন্যও কার্যকারিতা নিশ্চিত করে।
Validation Errors কী?
Validation Errors হলো এমন ত্রুটি যা occurs যখন একটি ইনপুট কুয়েরি বা মিউটেশন কোনো নির্দিষ্ট নিয়ম বা শর্ত পূর্ণ করে না। উদাহরণস্বরূপ, একটি ফিল্ড যদি required হয় এবং সেই ফিল্ডটি কুয়েরিতে না দেয়া হয়, অথবা কোনো ফিল্ড যদি ভুল ধরনের ডেটা পায় (যেমন স্ট্রিং এর পরিবর্তে নম্বর), তবে গ্রাফকিউএল সেই কুয়েরি বা মিউটেশনকে গ্রহণ করবে না এবং একটি Validation Error প্রদান করবে।
গ্রাফকিউএলে Validation Error Handling:
- Input Type Validation:
- গ্রাফকিউএল স্কিমায় ইনপুট টাইপ নির্ধারণ করা হয়, এবং গ্রাফকিউএল নিজে থেকেই টাইপের সঠিকতা পরীক্ষা করে। যেমন একটি স্ট্রিং ফিল্ডে যদি আপনি একটি নম্বর প্রদান করেন, তাহলে তা একটি Validation Error সৃষ্টি করবে।
type Query {
getUser(id: ID!): User
}
এখানে id ফিল্ডের জন্য ID! টাইপ নির্ধারণ করা হয়েছে, যা মানে এই ফিল্ডটি কখনই null হতে পারে না। যদি কুয়েরিতে আপনি একটি null বা ভুল টাইপের ভ্যালু পাঠান, তাহলে এটি একটি validation error তৈরি করবে।
- Required Fields:
- যদি একটি ফিল্ড
!চিহ্ন দ্বারা বাধ্যতামূলক (required) হিসাবে চিহ্নিত হয় এবং আপনি কুয়েরিতে ঐ ফিল্ডের মান প্রদান না করেন, তাহলে গ্রাফকিউএল একটি validation error দিবে।
- যদি একটি ফিল্ড
type Mutation {
createUser(name: String!, email: String!): User
}
এখানে, name এবং email ফিল্ড দুটি ! চিহ্নিত, যা মানে তাদের মান অবশ্যই প্রদান করতে হবে। যদি আপনি মিউটেশনে এই ফিল্ডগুলোর মান না পাঠান, তাহলে validation error হবে।
Field Level Error Handling
Field Level Error Handling হল যখন একটি নির্দিষ্ট ফিল্ডের জন্য ত্রুটি পরিচালনা করা হয়, যাতে আপনি কুয়েরির শুধু সেই ফিল্ডটিতে ত্রুটি নির্দেশ করতে পারেন, তবে পুরো কুয়েরি বা মিউটেশন নয়। এটি ব্যবহারকারীর অভিজ্ঞতা উন্নত করে, কারণ তারা জানবে যে কোন ফিল্ডে সমস্যা হচ্ছে এবং সঠিকভাবে সমস্যা সমাধান করতে পারবে।
Field Level Error Handling Example:
ধরা যাক, আপনি একটি createUser মিউটেশন তৈরি করেছেন যেখানে name এবং email ফিল্ড আছে। যদি name ফিল্ডটি 3 অক্ষরের কম হয়, তবে আপনি একটি ত্রুটি বার্তা প্রেরণ করতে চান, কিন্তু বাকি ফিল্ডগুলোতে কিছু ভুল থাকলে পুরো কুয়েরি ব্যর্থ না হয়ে শুধুমাত্র সংশ্লিষ্ট ফিল্ডে ত্রুটি দেখাবে।
type Mutation {
createUser(name: String!, email: String!): User
}
type User {
id: ID!
name: String!
email: String!
}
এখানে, যদি name ফিল্ডের মান কমপক্ষে 3 অক্ষর না হয়, তবে আপনি কেবল ওই ফিল্ডের জন্য একটি ত্রুটি তৈরি করতে পারেন। এর জন্য GraphQL resolvers এ error handling যুক্ত করা যেতে পারে।
const resolvers = {
Mutation: {
createUser: async (_, { name, email }) => {
if (name.length < 3) {
throw new Error("Name must be at least 3 characters long.");
}
// user creation logic here
return {
id: "1",
name: name,
email: email
};
},
},
};
এখানে:
- যদি name ফিল্ডের দৈর্ঘ্য 3 এর কম হয়, তবে এটি Field Level Error হিসাবে ধরা হবে এবং নির্দিষ্ট ত্রুটি বার্তা প্রদর্শিত হবে।
- ত্রুটি অন্য কোন ফিল্ডের জন্য হবে না।
Field Level Error Example Response:
{
"errors": [
{
"message": "Name must be at least 3 characters long.",
"path": ["createUser", "name"]
}
],
"data": null
}
এখানে:
pathফিল্ডে ত্রুটির সঠিক অবস্থান উল্লেখ করা হয়েছে, যা এই ক্ষেত্রেcreateUser.name।dataহলnull, কারণ মিউটেশন ব্যর্থ হয়েছে, কিন্তু অন্য ফিল্ডগুলো email ঠিক ছিল।
Error Types in GraphQL
গ্রাফকিউএল ত্রুটির জন্য বিভিন্ন ধরনের শ্রেণীবিভাগ ব্যবহার করে। এখানে কিছু সাধারণ error types:
- Validation Errors: যখন ইনপুট টাইপ বা required ফিল্ডে ভুল হয়, তখন এটি validation error হয়।
- Execution Errors: যখন কোনো রেজোলভার বা সার্ভার সাইড সমস্যার কারণে কুয়েরি বা মিউটেশন এক্সিকিউট করা সম্ভব হয় না।
- Authentication/Authorization Errors: যখন ব্যবহারকারীর অনুমতি বা প্রমাণীকরণ ব্যর্থ হয়, তখন এই ধরনের ত্রুটি আসে।
সারাংশ
Validation Errors এবং Field Level Error Handling গ্রাফকিউএল API-তে নিরাপত্তা এবং সঠিক ডেটা প্রবাহ নিশ্চিত করার জন্য অত্যন্ত গুরুত্বপূর্ণ। Validation Errors ইনপুটের সঠিকতা পরীক্ষা করে এবং ব্যবহারকারীর ভুল কমাতে সহায়ক, আবার Field Level Error Handling নির্দিষ্ট ফিল্ডে ত্রুটি নির্দেশ করে এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করে। গ্রাফকিউএল কুয়েরি বা মিউটেশন রেজোলভারসে ত্রুটি পরিচালনা সঠিকভাবে বাস্তবায়িত করা উচিত, যাতে ব্যবহারকারীরা সহজে তাদের সমস্যাগুলি শনাক্ত করতে পারে এবং দ্রুত সমাধান করতে সক্ষম হয়।
Read more