[Báo Cáo Lớp] Nhập Môn Phát Triển Hệ Thống – Tuần 23: Dự Án Tích Hợp Mini API – Thuyết Trình & Cải Tiến
Trong tuần học thứ 23, sinh viên đã trình bày và cải tiến các dự án nhỏ sử dụng API bên ngoài mà họ đã học tuần trước (ví dụ: ứng dụng thời tiết, ứng dụng trích dẫn ngẫu nhiên). Trọng tâm là xây dựng ứng dụng hoạt động được, đồng thời cải thiện xử lý lỗi và khả năng sử dụng — một buổi học mang tính thực tiễn cao.
■ Lời mở đầu của giảng viên: “API là ‘sức mạnh kết nối’, nhưng cần thận trọng”
GS. Tanaka:
“Kết nối với dịch vụ bên ngoài có thể nâng cao đáng kể giá trị của ứng dụng. Nhưng chúng ta cũng cần dự đoán lỗi kết nối và dữ liệu bất thường. Hôm nay, đừng chỉ làm cho nó ‘chạy được’ — hãy làm cho nó vững chắc.”
■ Giờ thuyết trình: Demo nhóm và tính năng nổi bật
Mỗi nhóm sinh viên lần lượt trình bày ứng dụng tự xây. Dưới đây là một số điểm nhấn và phản hồi trong lớp:
-
Nhóm Ứng dụng Thời Tiết:
Hiển thị thời tiết và nhiệt độ hiện tại dựa trên tên thành phố nhập vào. Họ đã thêm thông báo “Đang tải…” khi fetch dữ liệu và xử lý trường hợp thành phố không tồn tại.
Phản hồi: “Có màn hình loading rất yên tâm khi mạng chậm!” -
Nhóm Ứng dụng Trích Dẫn Ngẫu Nhiên:
Lấy một câu trích dẫn qua API, và rơi về danh sách cục bộ nếu API ngừng hoạt động.
Phản hồi: “Giờ em mới hiểu giá trị của việc không phụ thuộc hoàn toàn vào dịch vụ ngoài!” -
Nhóm Quy trình Dịch & Hiển Thị:
Gửi câu ngắn đến API dịch thuật và hiển thị kết quả. Họ giải thích cách xử lý lỗi xác thực và giới hạn độ dài đầu ra.
Phản hồi: “Em nhận ra tầm quan trọng của việc thiết kế dựa trên giới hạn API như giới hạn ký tự.”
■ Thực hành kỹ thuật: Mẹo triển khai để tăng độ tin cậy
Các thực hành lập trình then chốt được thảo luận và cải thiện trong buổi học:
1) Timeout và Xử lý ngoại lệ
Luôn giả định rằng giao tiếp bên ngoài có thể thất bại. Ví dụ với requests
(mã giả phục vụ học tập):
import os
import requests
API_URL = "https://api.example.com/weather"
API_KEY = os.getenv("API_KEY") # Dùng biến môi trường để bảo mật
try:
resp = requests.get(API_URL, params={"q": "Tokyo", "appid": API_KEY}, timeout=5)
resp.raise_for_status() # Báo lỗi nếu không phải trạng thái 2xx
data = resp.json()
# Truy cập JSON lồng an toàn (xử lý khóa thiếu)
temp = data.get("main", {}).get("temp")
if temp is None:
print("Không thể lấy dữ liệu nhiệt độ.")
else:
print(f"Nhiệt độ hiện tại: {temp}℃")
except requests.exceptions.Timeout:
print("Yêu cầu hết thời gian chờ. Vui lòng thử lại sau.")
except requests.exceptions.RequestException as e:
print(f"Đã xảy ra lỗi giao tiếp: {e}")
2) Chiến lược Dự phòng
Các nhóm triển khai phương án dự phòng (ví dụ: cache cục bộ) để duy trì trải nghiệm người dùng khi API không khả dụng.
3) Giới hạn tốc độ và Bộ nhớ đệm
Để tránh gọi API quá nhiều, một số nhóm cache phản hồi cho các truy vấn trùng bằng dictionary trong bộ nhớ — một chiến lược thực tiễn trong lớp học.
■ Cải tiến khả năng sử dụng: Giao diện và thông điệp
Ngoài cải tiến kỹ thuật, thời gian cũng được dành cho việc nâng cao ứng dụng từ góc nhìn người dùng.
- Thay thông điệp chung chung như “Đã xảy ra lỗi” bằng thông điệp cụ thể như “Không thể lấy thông tin do [lý do]. Vui lòng thử lại sau.”
- Trích lọc và hiển thị phần quan trọng của phản hồi JSON dài để dễ đọc hơn
- Hiển thị mẹo hoặc hướng dẫn khi mạng đang tải để giảm bỏ cuộc
Phản hồi sinh viên:
“Chỉ cần cải thiện thông điệp lỗi thôi mà em đã được khen là thân thiện với người dùng!”
■ Ghi chú của giảng viên
“Ứng dụng kết nối dịch vụ bên ngoài rất mạnh mẽ, nhưng cũng tăng độ phức tạp thiết kế do phụ thuộc. Hôm nay, chúng ta tập trung vào 3 điều cốt lõi với lập trình viên:
tính vững chắc (xử lý lỗi),
tính dễ dùng (hướng dẫn & dự phòng), và
tuân thủ quy định (API key, giới hạn gọi).”
■ Sắp tới: Nhập môn AI tạo sinh (buổi chuẩn bị)
Tuần tới, sinh viên sẽ được giới thiệu các nguyên lý cơ bản của AI tạo sinh, một chủ đề thường được dạy năm thứ 3. Chúng ta sẽ khám phá:
- AI tạo sinh là gì?
- Đạo đức và sử dụng có trách nhiệm
- Khác biệt giữa REST API và model API
- Cơ bản về thiết kế prompt
Tuần 23 đã kết nối sinh viên với “thế giới bên ngoài.” Các em trải nghiệm không chỉ niềm vui khi tích hợp, mà còn cả trách nhiệm đi kèm, khơi gợi sự tò mò cho những nội dung sắp tới.