Trong quá trình phát triển ứng dụng web hoặc ứng dụng di động, việc xây dựng các Web API (Application Programming Interface) để giao tiếp giữa client và server là kĩ năng cốt lõi. Trong bài viết này, chúng ta sẽ cùng tìm hiểu cách thiết lập một RESTful API đơn giản hỗ trợ các phương thức GET và POST bằng khung làm việc Flask trong Python.
1. Chuẩn Bị Môi Trường Và Cài Đặt Flask
Để bắt đầu, bạn cần cài đặt thư viện Flask. Hãy mở terminal/command prompt và thực hiện cài đặt thông qua pip:
pip install flaskSau khi cài đặt thành công, ta tạo một file Python mới có tên là app.py làm điểm khởi chạy cho dịch vụ API.
2. Khởi Tạo Khung Ứng Dụng Flask
Đầu tiên, chúng ta khai báo và khởi tạo ứng dụng Flask cơ bản cùng hàm jsonify giúp chuyển đổi dữ liệu Python (như dictionary, list) thành định dạng JSON chuẩn cho API:
from flask import Flask, jsonify, request
app = Flask(__name__)
# Dữ liệu mẫu lưu trữ trong bộ nhớ (In-memory data)
tasks = [
{
'id': 1,
'title': 'Học Python cơ bản',
'done': True
},
{
'id': 2,
'title': 'Xây dựng RESTful API với Flask',
'done': False
}
]
3. Định Nghĩa Phương Thức GET Để Truy Xuất Dữ Liệu
Phương thức GET dùng để truy vấn và lấy dữ liệu từ hệ thống mà không làm thay đổi trạng thái của tài nguyên.
Lấy toàn bộ danh sách công việc
Đoạn mã sau tạo endpoint /api/v1.0/tasks lắng nghe các request GET để trả về toàn bộ danh sách công việc:
@app.route('/api/v1.0/tasks', methods=['GET'])
def get_tasks():
return jsonify({'tasks': tasks}), 200
Lấy chi tiết một công việc theo ID
Để lấy thông tin của từng công việc cụ thể, chúng ta có thể truyền tham số động trên URL dạng <int:task_id>:
@app.route('/api/v1.0/tasks/<int:task_id>', methods=['GET'])
def get_task(task_id):
task = next((item for item in tasks if item['id'] == task_id), None)
if task is None:
return jsonify({'error': 'Resource not found'}), 404
return jsonify({'task': task}), 200
4. Định Nghĩa Phương Thức POST Để Tạo Dữ Liệu Mới
Phương thức POST cho phép client gửi dữ liệu (thường dưới dạng chuỗi JSON trong Request Body) lên server để khởi tạo một tài nguyên mới.
Trong hàm xử lý, chúng ta dùng request.json hoặc request.get_json() để đọc dữ liệu gửi lên. Nếu yêu cầu thiếu thông tin bắt buộc (như tiêu đề title), server sẽ phản hồi mã lỗi 400 Bad Request.
@app.route('/api/v1.0/tasks', methods=['POST'])
def create_task():
# Kiểm tra xem dữ liệu gửi lên có phải dạng JSON và chứa trường 'title' hay không
if not request.json or 'title' not in request.json:
return jsonify({'error': 'Bad request, title is required'}), 400
# Tạo bản ghi mới
new_task = {
'id': tasks[-1]['id'] + 1 if tasks else 1,
'title': request.json['title'],
'done': False
}
tasks.append(new_task)
# Trả về đối tượng vừa tạo kèm theo HTTP Status Code 201 (Created)
return jsonify({'task': new_task}), 201
5. Chạy Ứng Dụng Và Kiểm Thử API
Để chạy ứng dụng Flask, thêm đoạn mã sau vào cuối file app.py:
if __name__ == '__main__':
app.run(debug=True, port=5000)
Thực thi file bằng lệnh python app.py. Ứng dụng sẽ chạy tại địa chỉ http://127.0.0.1:5000/.
Cách kiểm thử API:
- Trình duyệt hoặc Curl (Lấy danh sách): Mở trình duyệt và truy cập
http://127.0.0.1:5000/api/v1.0/tasks. Hoặc chạy lệnh trong terminal:curl -i http://127.0.0.1:5000/api/v1.0/tasks - Gửi dữ liệu POST bằng Curl:
curl -i -H
Nguồn tham khảo
- Designing a RESTful API with Python and Flask - miguelgrinberg.com
- Developing RESTful APIs with Python and Flask | Auth0
- How to Build an API With Python Flask | Moesif Blog
- Create a RESTful API Using Python and Flask | Linode Docs
- Python REST API Tutorial for Beginners | How to Build a Flask REST API
Nhận xét
Đăng nhận xét