HTTP এবং RESTful ওয়েব সার্ভিস
HTTP (Hypertext Transfer Protocol) হল একটি অ্যাপ্লিকেশন প্রোটোকল যা ওয়েব ব্রাউজার এবং ওয়েব সার্ভারের মধ্যে যোগাযোগের জন্য ব্যবহৃত হয়। RESTful Web Services হল এমন একটি ওয়েব আর্কিটেকচারাল স্টাইল যা HTTP প্রটোকল ব্যবহার করে ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা এক্সচেঞ্জ করতে সহায়তা করে। RESTful ওয়েব সার্ভিসগুলি সাধারণত HTTP GET, POST, PUT, DELETE, PATCH মেথডগুলির মাধ্যমে যোগাযোগ করে এবং এতে একটি নির্দিষ্ট কাঠামো অনুসরণ করে ডেটা পাঠানো ও গ্রহণ করা হয়।
HTTP Request এবং Response মডেল
HTTP Request এবং HTTP Response মডেল হল ওয়েব সার্ভিসের মধ্যে ডেটা এক্সচেঞ্জের প্রধান উপাদান। যখন ক্লায়েন্ট কোনো সার্ভিসে অনুরোধ পাঠায় (request), সার্ভার তার জন্য একটি উত্তর প্রদান করে (response)। এই মডেলটি একটি ক্লায়েন্ট-সার্ভার ভিত্তিক আর্কিটেকচার তৈরি করে যেখানে ক্লায়েন্ট সার্ভারের কাছে কিছু তথ্য অনুরোধ করে এবং সার্ভার সেই তথ্য প্রদান করে।
১. HTTP Request
HTTP Request হল ক্লায়েন্টের সার্ভারের কাছে পাঠানো তথ্য বা অনুরোধ। HTTP রিকোয়েস্ট মূলত পাঁচটি প্রধান অংশে বিভক্ত:
- Request Line: এটি রিকোয়েস্টের প্রথম লাইন যা HTTP মেথড, URL এবং HTTP ভার্সন ধারণ করে।
- Headers: এই অংশে অতিরিক্ত তথ্য থাকে, যেমন ব্রাউজার টাইপ, কুকি, কন্টেন্ট টাইপ ইত্যাদি।
- Body: কিছু HTTP মেথডের জন্য, রিকোয়েস্টের সাথে প্রাসঙ্গিক তথ্য পাঠানো হয় যা body তে থাকে, যেমন POST বা PUT রিকোয়েস্টে ডেটা।
- Query Parameters: URL এর পরে যেসব ডেটা প্যারামিটার থাকে, সেগুলি ক্লায়েন্ট সার্ভারের কাছে তথ্য পাঠানোর জন্য ব্যবহৃত হয়। যেমন
?id=123&name=abc। - URL: এটি ওয়েব রিসোর্সের অবস্থান নির্দেশ করে (যেমন
/users/123বা/products), যেখানে ক্লায়েন্ট সার্ভার থেকে তথ্য পেতে চায়।
উদাহরণ:
GET /users/123 HTTP/1.1
Host: api.example.com
Authorization: Bearer your-token
এখানে:
GETহল HTTP মেথড।/users/123হল রিসোর্সের অবস্থান (URL)।HTTP/1.1হল HTTP ভার্সন।HostএবংAuthorizationহল হেডারগুলি, যা সার্ভারকে নির্দেশ দেয় যে কোন রিসোর্সের জন্য অনুরোধ করা হচ্ছে এবং ক্লায়েন্টের পরিচিতি কী।
২. HTTP Response
HTTP Response হল সার্ভারের পাঠানো উত্তর যা ক্লায়েন্টের অনুরোধের ফলস্বরূপ তৈরি হয়। রেসপন্সও কয়েকটি প্রধান অংশে বিভক্ত:
- Status Line: এতে সার্ভারের অবস্থা (HTTP স্ট্যাটাস কোড) এবং বার্তা থাকে।
- Headers: এখানে অতিরিক্ত তথ্য থাকে, যেমন কন্টেন্ট টাইপ, কুকি, কন্টেন্ট-লেংথ ইত্যাদি।
- Body: রেসপন্সের মূল ডেটা যা ক্লায়েন্টের অনুরোধের সাথে সম্পর্কিত। উদাহরণস্বরূপ, যদি ক্লায়েন্ট একটি প্রোডাক্টের তথ্য চায়, তবে রেসপন্স বডিতে সেই প্রোডাক্টের বিস্তারিত তথ্য থাকবে।
উদাহরণ:
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 85
{
"id": 123,
"name": "John Doe",
"email": "john@example.com"
}
এখানে:
HTTP/1.1 200 OKহল স্ট্যাটাস লাইন, যা সার্ভার থেকে সফল রেসপন্স (200 OK) নির্দেশ করছে।Content-Type: application/jsonহল হেডার যা জানাচ্ছে যে রেসপন্সটি JSON ফরম্যাটে রয়েছে।- রেসপন্স বডিতে একটি JSON অবজেক্ট রয়েছে যা ইউজারের তথ্য প্রদান করছে।
৩. HTTP Status Codes
HTTP স্ট্যাটাস কোড হল সার্ভারের পক্ষ থেকে ক্লায়েন্টকে দেওয়া একটি কোড যা রিকোয়েস্টের ফলাফল সম্পর্কে জানায়। HTTP স্ট্যাটাস কোডের মূল বিভাগগুলি হল:
- 1xx (Informational): অনুরোধ প্রক্রিয়াধীন।
- 2xx (Successful): অনুরোধ সফলভাবে সম্পন্ন হয়েছে।
- 200 OK: রিকোয়েস্ট সফল।
- 201 Created: নতুন রিসোর্স তৈরি হয়েছে।
- 3xx (Redirection): ক্লায়েন্টকে অন্য কোনো রিসোর্সে রিডিরেক্ট করতে হবে।
- 4xx (Client Error): ক্লায়েন্টের ভুল বা অনুপস্থিত ডেটার কারণে সমস্যা।
- 400 Bad Request: রিকোয়েস্টে কোনো ভুল আছে।
- 404 Not Found: রিসোর্স পাওয়া যায়নি।
- 5xx (Server Error): সার্ভারের কোনো ত্রুটি হয়েছে।
- 500 Internal Server Error: সার্ভারে সমস্যা।
রেস্টফুল ওয়েব সার্ভিসে HTTP Request এবং Response মডেল
RESTful ওয়েব সার্ভিসে HTTP রিকোয়েস্ট এবং রেসপন্স মডেল নির্ধারণ করার সময়, আমরা কয়েকটি মূল HTTP মেথড ব্যবহার করি:
১. GET:
- কাজ: ডেটা পড়া (Retrieve).
- ব্যবহার: ক্লায়েন্ট সার্ভার থেকে ডেটা নিতে GET মেথড ব্যবহার করে।
উদাহরণ: একটি নির্দিষ্ট প্রোডাক্টের তথ্য পেতে:
GET /products/123 HTTP/1.1
Host: api.example.com
Response:
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 123,
"name": "Product Name",
"price": 50
}
২. POST:
- কাজ: নতুন ডেটা তৈরি করা (Create).
- ব্যবহার: নতুন ডেটা বা রিসোর্স তৈরি করতে POST মেথড ব্যবহার করা হয়।
উদাহরণ: নতুন প্রোডাক্ট তৈরি করা:
POST /products HTTP/1.1
Host: api.example.com
Content-Type: application/json
{
"name": "New Product",
"price": 100
}
Response:
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": 124,
"name": "New Product",
"price": 100
}
৩. PUT:
- কাজ: ডেটা আপডেট করা (Update).
- ব্যবহার: একটি সম্পূর্ণ রিসোর্স আপডেট করতে PUT মেথড ব্যবহার করা হয়।
উদাহরণ: একটি প্রোডাক্টের তথ্য আপডেট করা:
PUT /products/123 HTTP/1.1
Host: api.example.com
Content-Type: application/json
{
"name": "Updated Product",
"price": 120
}
Response:
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 123,
"name": "Updated Product",
"price": 120
}
৪. DELETE:
- কাজ: ডেটা মুছে ফেলা (Delete).
- ব্যবহার: একটি রিসোর্স মুছে ফেলতে DELETE মেথড ব্যবহার করা হয়।
উদাহরণ: একটি প্রোডাক্ট মুছে ফেলা:
DELETE /products/123 HTTP/1.1
Host: api.example.com
Response:
HTTP/1.1 204 No Content
সারাংশ
HTTP Request এবং HTTP Response হল RESTful ওয়েব সার্ভিসের ভিত্তি, যেখানে ক্লায়েন্ট সার্ভারে অনুরোধ পাঠায় এবং সার্ভার সেই অনুরোধের প্রতিক্রিয়া জানায়। GET, POST, PUT, এবং DELETE মেথডগুলো HTTP রিকোয়েস্টের মূল অংশ, এবং স্ট্যাটাস কোডের মাধ্যমে সার্ভার তার স্ট্যাটাস জানায়। RESTful ওয়েব সার্ভিসে HTTP মডেলটি নির্ধারণ করে ডেটা এক্সচেঞ্জ এবং সার্ভিসের কার্যক্রম।
Read more