Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Trang Chủ Hướng Dẫn Đồ Án Hướng dẫn làm CRUD với Flask API đơn giản
Hướng Dẫn Đồ Án

Hướng dẫn làm CRUD với Flask API đơn giản

Chia sẻ
Chia sẻ

Flask là một micro-framework Python lý tưởng cho việc tạo RESTful API. Nếu bạn đang làm đồ án môn học hay bài tập lớn, việc xây dựng một API hỗ trợ CRUD (Create – Read – Update – Delete) sẽ giúp bạn làm quen với kiến trúc backend, xử lý JSON và giao tiếp giữa client-server. Trong bài viết này, bạn sẽ từng bước hướng dẫn bạn.

Thiết lập môi trường và cài đặt gói cần thiết

Trước hết, bạn cần tạo một thư mục dự án và tạo virtual environment để cách ly thư viện:

mkdir flask_crud_api
cd flask_crud_api
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

Tiếp theo cài đặt các thư viện cần dùng:

pip install flask flask-restful flask_sqlalchemy

Ở đây:

  • Flask tạo web framework cơ bản.

  • Flask-RESTful hỗ trợ nhanh việc định nghĩa tài nguyên và endpoint.

  • Flask-SQLAlchemy giúp bạn xử lý database theo ORM đơn giản.

Cấu trúc thư mục dự án phù hợp cho CRUD API

Tổ chức thư mục rất quan trọng để ứng dụng dễ đọc, bảo trì và mở rộng sau này. Ví dụ:

flask_crud_api/
│
├── app.py                # Entry point chính
├── models.py             # Định nghĩa Model & database
├── resources.py          # Định nghĩa endpoint CRUD
├── database.db           # SQLite database file
└── requirements.txt      # Danh sách thư viện

Bạn nên giữ cấu trúc gọn nhưng rõ ràng, phù hợp cho cả đồ án và làm khóa luận.

Xây dựng model và kết nối database

Trong models.py, thêm code sau để định nghĩa bảng Item có các trường cơ bản:

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class Item(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80), nullable=False)
    price = db.Column(db.Float, nullable=False)

    def json(self):
        return {'id': self.id, 'name': self.name, 'price': self.price}

Hàm json() giúp item dễ trả về qua API.

Viết endpoint CRUD bằng Flask-RESTful

Tạo file resources.py, định nghĩa tài nguyên ItemResourceItemListResource:

from flask_restful import Resource, reqparse
from models import Item, db

parser = reqparse.RequestParser()
parser.add_argument('name', type=str, required=True, help='Name cannot be blank')
parser.add_argument('price', type=float, required=True, help='Price must be a float')

class ItemResource(Resource):
    def get(self, item_id):
        item = Item.query.get(item_id)
        if item:
            return item.json(), 200
        return {'message': 'Item not found'}, 404

    def put(self, item_id):
        data = parser.parse_args()
        item = Item.query.get(item_id)
        if item:
            item.name = data['name']
            item.price = data['price']
        else:
            item = Item(id=item_id, name=data['name'], price=data['price'])
            db.session.add(item)
        db.session.commit()
        return item.json(), 200

    def delete(self, item_id):
        item = Item.query.get(item_id)
        if item:
            db.session.delete(item)
            db.session.commit()
            return {'message': 'Item deleted'}, 200
        return {'message': 'Item not found'}, 404

class ItemListResource(Resource):
    def get(self):
        return {'items': [item.json() for item in Item.query.all()]}, 200

    def post(self):
        data = parser.parse_args()
        item = Item(name=data['name'], price=data['price'])
        db.session.add(item)
        db.session.commit()
        return item.json(), 201

Khởi tạo ứng dụng và đăng ký các resource

Trong app.py, tạo Flask app, kết nối database và đăng ký các URL:

from flask import Flask
from flask_restful import Api
from models import db
from resources import ItemResource, ItemListResource

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db.init_app(app)
api = Api(app)

api.add_resource(ItemListResource, '/items')
api.add_resource(ItemResource, '/items/<int:item_id>')

if __name__ == '__main__':
    with app.app_context():
        db.create_all()
    app.run(debug=True)

Chạy python app.py, API sẽ hoạt động trên http://127.0.0.1:5000.

Test API nhanh qua POSTMAN hoặc CURL

Bạn có thể dùng các lệnh sau kiểm tra:

  • POST tạo item:

curl -X POST -H "Content-Type: application/json" -d '{"name":"Book","price":29.9}' http://localhost:5000/items
  • GET tất cả items:
curl http://localhost:5000/items
  • GET item theo id:

curl http://localhost:5000/items/1
  • PUT cập nhật item:

curl -X PUT -H "Content-Type: application/json" -d '{"name":"NewBook","price":39.9}' http://localhost:5000/items/1
  • DELETE xóa item:
curl -X DELETE http://localhost:5000/items/1

Xử lý lỗi và bảo mật cơ bản

  • Nếu không có field cần thiết, reqparse sẽ trả lỗi 400 với hint bạn thiết lập.

  • Validations đơn giản được thực hiện qua kiểu dữ liệu của các argument.

  • Đối với đồ án, để bảo vệ tốt hơn, bạn có thể thêm xác thực token hoặc API key đơn giản bằng decorator.

Mở rộng API

Tùy theo nội dung thực hiện, bạn có thể nâng cấp như:

  • Giao diện frontend (React/Vue/HTML template) gọi API.

  • Phân trang (limit, offset) cho GET list.

  • Nâng cấp lên SQL Server hoặc PostgreSQL.

  • Thêm chức năng xác thực, phân quyền, ghi log.

  • Thêm unit test để kiểm tra endpoint.

Kết luận

Việc xây dựng một CRUD API với Flask không hề phức tạp nếu bạn biết cách chia nhỏ từng bước. Từ việc thiết lập môi trường, tổ chức dự án rõ ràng, định nghĩa database bằng SQLAlchemy, cho đến việc viết các endpoint bằng Flask-RESTful — tất cả đều có thể áp dụng vào thực tế như đồ án, bài tập nhóm, hoặc làm nền tảng cho các dự án lớn hơn.

Flask tuy là micro-framework nhưng lại cực kỳ linh hoạt và dễ mở rộng. Nếu bạn đã hiểu được nguyên lý hoạt động qua bài viết này, bạn hoàn toàn có thể nâng cấp hệ thống lên JWT, bảo mật bằng Token, dùng PostgreSQL, triển khai trên cloud hoặc tích hợp với React/Vue để hoàn thiện một ứng dụng full-stack.

Tham Gia Nhóm – Hỗ Trợ Lập Trình

Hỗ Trợ Đồ Án – ThueDoAn.vn

Liên quan
Hướng Dẫn Đồ Án

Checklist 10 bước kiểm tra cuối cùng trước khi nhấn nút nộp đồ án

Thời điểm chuẩn bị nhấn nút nộp đồ án luôn mang lại...

Hướng Dẫn Đồ Án

Tuyệt chiêu đối phó với những giảng viên hướng dẫn ‘khó tính’ nhất

Giai đoạn làm đồ án tốt nghiệp luôn đi kèm với vô...

Hướng Dẫn Đồ Án

Tại sao việc quản lý Source Code bằng Git lại quan trọng hơn bạn nghĩ?

Trong thế giới lập trình hiện đại, mã nguồn chính là linh...

Hướng Dẫn Đồ Án

Những chức năng ‘thừa’ khiến bạn tốn thời gian mà không được cộng điểm

Làm đồ án tốt nghiệp là một cuộc đua thực thụ với...

Hướng Dẫn Đồ Án

Cách xử lý khi đề tài bị trùng lặp ý tưởng với các khóa trước quá nhiều

Lựa chọn đề tài đồ án luôn là bước khởi đầu đầy...

Hướng Dẫn Đồ Án

Làm sao để giải trình với giảng viên khi code bị nghi ngờ là đi chép?

Trong quá trình thực hiện đồ án, việc tham khảo mã nguồn...

Hướng Dẫn Đồ Án

Cảnh báo: Những nguồn share code ‘rác’ trên mạng cần tuyệt đối tránh

Trong quá trình làm đồ án, việc tìm kiếm sự hỗ trợ...

Hướng Dẫn Đồ Án

Sai lầm khi chọn công nghệ quá khó so với năng lực thực tế của bản thân

Chọn đề tài và công nghệ cho đồ án luôn là bước...

Liên Hệ
Liên hệ để được tư vấn & hỗ trợ đồ án CNTT nhé bạn!