REST API (Representational State Transfer Application Programming Interface) là một phương pháp phổ biến để giao tiếp giữa ứng dụng và máy chủ. Nó giúp lấy, gửi, cập nhật hoặc xóa dữ liệu từ một nguồn dữ liệu từ xa. Trong Flutter, công cụ này đóng vai trò quan trọng trong việc xây dựng các ứng dụng động, kết nối với cơ sở dữ liệu hoặc các dịch vụ bên ngoài. Hãy cùng Neutron Academy tìm hiểu về REST API trong Flutter nhé!
1. REST API Là Gì?
REST API là một giao thức sử dụng HTTP để trao đổi dữ liệu, với các phương thức phổ biến:
- GET: Lấy dữ liệu từ máy chủ.
- POST: Gửi dữ liệu mới lên máy chủ.
- PUT/PATCH: Cập nhật dữ liệu hiện có trên máy chủ.
- DELETE: Xóa dữ liệu khỏi máy chủ.

2. REST API Hoạt Động Như Thế Nào?
Ví dụ: Yêu cầu lấy danh sách người dùng từ một API.
- URL yêu cầu:
https://api.example.com/users
- Kết quả trả về (JSON)
[
{
"id": 1,
"name": "Nguyen Van A",
"email": "van.a@example.com"
},
{
"id": 2,
"name": "Tran Thi B",
"email": "thi.b@example.com"
}
]
Flutter có thể sử dụng các dữ liệu này để hiển thị trên giao diện người dùng.
3. Cách Làm Việc Với REST API Trong Flutter
Cài Đặt Thư Viện http
Đầu tiên, thêm thư viện http vào dự án Flutter:
dependencies:
http: ^0.15.0
Chạy lệnh:
flutter pub get
Lấy Dữ Liệu Từ API (GET)
import 'dart:convert';
import 'package:http/http.dart' as http;
Future<List<dynamic>> fetchUsers() async {
final response = await http.get(Uri.parse('https://api.example.com/users'));
if (response.statusCode == 200) {
return jsonDecode(response.body);
} else {
throw Exception('Failed to load users');
}
}
Hiển thị dữ liệu trên giao diện:
class UserList extends StatelessWidget {
final Future<List<dynamic>> users;
UserList({required this.users});
@override
Widget build(BuildContext context) {
return FutureBuilder<List<dynamic>>(
future: users,
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return CircularProgressIndicator();
} else if (snapshot.hasError) {
return Text('Error: ${snapshot.error}');
} else {
return ListView.builder(
itemCount: snapshot.data?.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(snapshot.data?[index]['name']),
subtitle: Text(snapshot.data?[index]['email']),
);
},
);
}
},
);
}
}
Gửi Dữ Liệu Lên API (POST)
Future<void> createUser(String name, String email) async {
final response = await http.post(
Uri.parse('https://api.example.com/users'),
headers: {'Content-Type': 'application/json'},
body: jsonEncode({'name': name, 'email': email}),
);
if (response.statusCode == 201) {
print('User created successfully');
} else {
throw Exception('Failed to create user');
}
}
Xử Lý Lỗi
Khi làm việc với công cụ này, cần đảm bảo xử lý các lỗi có thể xảy ra, như:
- Mã trạng thái HTTP khác 200 (OK).
- Lỗi kết nối mạng.
- Lỗi định dạng dữ liệu.
Xem thêm về Mẹo xử lý sự cố cơ bản trong Flutter
Ví dụ xử lý lỗi cơ bản:
try {
final users = await fetchUsers();
print(users);
} catch (error) {
print('Error fetching users: $error');
}
4. Công Cụ Hỗ Trợ Kiểm Tra REST API
- Postman: Công cụ mạnh mẽ để kiểm tra và gửi yêu cầu API.
- Insomnia: Một lựa chọn thay thế với giao diện đơn giản.
- cURL: Công cụ dòng lệnh để gửi yêu cầu HTTP.

Kết luận
REST API là một phần không thể thiếu khi phát triển các ứng dụng Flutter kết nối với dữ liệu từ xa. Bằng cách sử dụng các phương pháp như http.get và http.post, bạn có thể dễ dàng tích hợp các dịch vụ API vào ứng dụng của mình.
Chúc bạn thành công trên con đường sự nghiệp công nghệ thông tin!