Flutter এ HTTP Requests (GET, POST, PUT, DELETE) ব্যবহার করে API কল করা যায়, যার মাধ্যমে আপনি অ্যাপ্লিকেশনের সাথে সার্ভারের ডেটা আদানপ্রদান করতে পারেন। http প্যাকেজ Flutter এ HTTP রিকোয়েস্ট ব্যবস্থাপনা করার জন্য সবচেয়ে জনপ্রিয় এবং সহজ প্যাকেজ। নিচে প্রতিটি HTTP রিকোয়েস্ট (GET, POST, PUT, DELETE) এর বিস্তারিত আলোচনা এবং উদাহরণ দেয়া হলো।
HTTP প্যাকেজ সেটআপ করা:
Flutter এ HTTP রিকোয়েস্ট ব্যবহারের জন্য প্রথমে http প্যাকেজ ইনস্টল করতে হবে। আপনার pubspec.yaml এ নিচের মত করে http প্যাকেজ যোগ করুন:
dependencies:
http: ^0.13.4
তারপর আপনার ডার্ট ফাইলে import করুন:
import 'package:http/http.dart' as http;
import 'dart:convert';
১. GET Request:
GET রিকোয়েস্ট ব্যবহার করে API থেকে ডেটা আনা যায়। এটি সাধারণত ডেটা ফেচ করার জন্য ব্যবহৃত হয়।
GET Request এর উদাহরণ:
Future<void> fetchData() async {
final response = await http.get(Uri.parse('https://jsonplaceholder.typicode.com/posts/1'));
if (response.statusCode == 200) {
final Map<String, dynamic> jsonData = json.decode(response.body);
print('Title: ${jsonData['title']}');
} else {
print('Failed to load data');
}
}
- http.get: এটি একটি GET রিকোয়েস্ট যা নির্দিষ্ট URL থেকে ডেটা আনে।
- response.statusCode: রিকোয়েস্টের সফলতা বা ব্যর্থতা যাচাই করার জন্য ব্যবহার করা হয়।
200মানে সফল, অন্যথায় ব্যর্থ। - json.decode(response.body): JSON ডেটাকে Dart Map এ রূপান্তরিত করা হয়।
২. POST Request:
POST রিকোয়েস্ট সাধারণত নতুন ডেটা ক্রিয়েট বা সার্ভারে পাঠানোর জন্য ব্যবহৃত হয়, যেমন ফর্ম ডেটা বা নতুন রিসোর্স তৈরি করা।
POST Request এর উদাহরণ:
Future<void> createPost() async {
final response = await http.post(
Uri.parse('https://jsonplaceholder.typicode.com/posts'),
headers: <String, String>{
'Content-Type': 'application/json; charset=UTF-8',
},
body: json.encode(<String, String>{
'title': 'New Post',
'body': 'This is the body of the new post.',
'userId': '1',
}),
);
if (response.statusCode == 201) {
print('Post created: ${response.body}');
} else {
print('Failed to create post');
}
}
- http.post: এটি একটি POST রিকোয়েস্ট যা সার্ভারে ডেটা পাঠায়।
- headers: API এর কনফিগারেশন অনুযায়ী হেডার সেট করা হয়। সাধারণত Content-Type হিসেবে
application/jsonনির্ধারণ করা হয়। - body: JSON ডেটা encode করে API তে পাঠানো হয়।
৩. PUT Request:
PUT রিকোয়েস্ট ব্যবহার করে বিদ্যমান রিসোর্স আপডেট করা হয়। এটি সাধারণত সম্পূর্ণ রিসোর্স আপডেটের জন্য ব্যবহৃত হয়।
PUT Request এর উদাহরণ:
Future<void> updatePost() async {
final response = await http.put(
Uri.parse('https://jsonplaceholder.typicode.com/posts/1'),
headers: <String, String>{
'Content-Type': 'application/json; charset=UTF-8',
},
body: json.encode(<String, String>{
'title': 'Updated Title',
'body': 'This is the updated body of the post.',
'userId': '1',
}),
);
if (response.statusCode == 200) {
print('Post updated: ${response.body}');
} else {
print('Failed to update post');
}
}
- http.put: এটি একটি PUT রিকোয়েস্ট যা বিদ্যমান রিসোর্স আপডেট করতে ব্যবহৃত হয়।
- response.statusCode: ২০০ হলে সফল, অন্যথায় ব্যর্থতা নির্দেশ করে।
৪. DELETE Request:
DELETE রিকোয়েস্ট ব্যবহার করে সার্ভার থেকে একটি রিসোর্স মুছে ফেলা যায়।
DELETE Request এর উদাহরণ:
Future<void> deletePost() async {
final response = await http.delete(
Uri.parse('https://jsonplaceholder.typicode.com/posts/1'),
);
if (response.statusCode == 200) {
print('Post deleted');
} else {
print('Failed to delete post');
}
}
- http.delete: এটি একটি DELETE রিকোয়েস্ট, যা নির্দিষ্ট রিসোর্স মুছে ফেলে।
- response.statusCode: ২০০ হলে সফলতা নির্দেশ করে।
HTTP Requests এর সংক্ষিপ্ত তুলনা:
| রিকোয়েস্ট | ব্যবহারিক উদ্দেশ্য |
|---|---|
| GET | ডেটা ফেচ করা বা সার্ভার থেকে রিসোর্স আনা |
| POST | নতুন ডেটা ক্রিয়েট করা বা সার্ভারে ডেটা পাঠানো |
| PUT | বিদ্যমান ডেটা সম্পূর্ণভাবে আপডেট করা |
| DELETE | একটি রিসোর্স বা ডেটা মুছে ফেলা |
Error Handling (ত্রুটি ম্যানেজমেন্ট):
HTTP রিকোয়েস্টের সময় বিভিন্ন ধরনের ত্রুটি হতে পারে। তাই, ত্রুটি ম্যানেজমেন্ট করার জন্য try-catch ব্লক ব্যবহার করা হয়।
Future<void> fetchDataWithErrorHandling() async {
try {
final response = await http.get(Uri.parse('https://jsonplaceholder.typicode.com/posts/1'));
if (response.statusCode == 200) {
print('Data fetched successfully: ${response.body}');
} else {
print('Error: ${response.statusCode}');
}
} catch (e) {
print('An error occurred: $e');
}
}
- try-catch: এটি অ্যাসিঙ্ক্রোনাস অপারেশন চলাকালে কোনো ত্রুটি ধরলে তাকে ম্যানেজ করে।
- response.statusCode: HTTP স্ট্যাটাস কোড চেক করে, যা সফলতা বা ব্যর্থতা নির্দেশ করে।
HTTP Requests এর সেরা চর্চা:
- Headers ব্যবহার করুন: API এর সাথে কনফিগারেশন অনুযায়ী সঠিক হেডার ব্যবহার করা গুরুত্বপূর্ণ, যেমন Content-Type নির্ধারণ।
- Error Handling: প্রতিটি API কলের সময় ত্রুটি ম্যানেজ করার জন্য
try-catchব্যবহার করা উচিত। - Model এবং Serialization: JSON ডেটাকে Dart Model এ রূপান্তরিত করা ভালো, যাতে ডেটা ব্যবস্থাপনা সহজ হয়।
- async এবং await ব্যবহার করুন: HTTP কল অ্যাসিঙ্ক্রোনাস হওয়ায়
asyncএবংawaitব্যবহার করা সেরা পদ্ধতি।
Flutter এ HTTP Requests ব্যবহার করে ডেটা ম্যানেজমেন্ট:
HTTP Requests (GET, POST, PUT, DELETE) ব্যবহারের মাধ্যমে Flutter এ আপনি ডায়নামিক অ্যাপ্লিকেশন তৈরি করতে পারেন, যেখানে ব্যবহারকারীর ইন্টারঅ্যাকশনের উপর ভিত্তি করে ডেটা ফেচ, আপডেট, এবং মুছে ফেলার কাজ করা যায়। এই পদ্ধতিগুলো ব্যবহার করে Flutter এ একটি কার্যকরী এবং পেশাদার API Integration সিস্টেম তৈরি করা সম্ভব।
Read more