7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. Flask

Xây dựng RESTful API Với Flask: Theo hướng Tự làm

Scroll to top
Read Time: 7 mins
This post is part of a series called Building RESTful APIs With Flask.
Building RESTful APIs With Flask: An ORM With SQLAlchemy

Vietnamese (Tiếng Việt) translation by Dai Phong (you can also view the original English article)

REpresentational State Transfer (REST) ​​là một kiểu thiết kế kiến ​​trúc phát triển web chỉ đến việc phân chia các nguồn tài nguyên API một cách hợp lý để dễ dàng truy cập, thao tác và mở rộng. Các thành phần có thể được tái sử dụng được viết theo một cách để chúng có thể dễ dàng được quản lý thông qua các yêu cầu HTTP đơn giản và trực quan, đó có thể là GET, POST, PUT, PATCH và DELETE (có thể có nhiều hơn, nhưng ở trên là những yêu cầu được sử dụng phổ biến nhất).

Dù nó trông như như thế nào, nhưng REST không phải là một giao thức hoặc một tiêu chuẩn. Nó chỉ thiết lập một kiểu kiến ​​trúc phần mềm để viết các ứng dụng web và các API, và kết quả là các giao diện đơn giản bên trong và bên ngoài ứng dụng. Các API dịch vụ Web được viết để tuân theo các nguyên tắc REST, chúng được gọi là các RESTful API.

Trong loạt bài hướng dẫn gồm ba phần này, tôi sẽ khái quát những cách khác nhau trong đó các RESTful API có thể được tạo ra bằng cách sử dụng Flask như một web framework. Trong phần đầu tiên, tôi sẽ giới thiệu cách tạo REST API dựa trên lớp giống như DIY (Tự làm), tức là tự mình thực hiện tất cả chúng mà không sử dụng bất kỳ extension của bên thứ ba nào. Trong các phần sau của loạt bài này, tôi sẽ giới thiệu cách sử dụng các extension khác nhau cho Flask để xây dựng các REST API hiệu quả hơn một cách dễ dàng hơn.

Tôi giả sử rằng bạn đã có một sự hiểu biết cơ bản về cách làm tốt nhất với Flask và thiết lập môi trường bằng virtualenv khi phát triển một ứng dụng Python.

Cài đặt các Phụ thuộc

Các gói sau đây cần phải được cài đặt cho ứng dụng mà chúng ta sẽ phát triển.

Các lệnh ở trên sẽ cài đặt tất cả các gói cần thiết để cho ứng dụng hoạt động.

Ứng dụng Flask

Đối với hướng dẫn này, tôi sẽ tạo một ứng dụng nhỏ, trong đó tôi sẽ tạo ra một model bình thường cho Product (Sản phẩm). Sau đó, tôi sẽ minh hoạ cách chúng ta có thể viết một RESTful API. Dưới đây là cấu trúc của ứng dụng.

Tôi sẽ không tạo một front-end cho ứng dụng này vì các endpoint của RESTful API có thể được kiểm tra trực tiếp bằng cách gọi HTTP theo nhiều cách khác.

flask_app/my_app/__init__.py

Trong tập tin ở trên, ứng dụng đã được cấu hình với sự khởi tạo của các extension và cuối cùng tạo cơ sở dữ liệu. Câu lệnh cuối cùng tạo một cơ sở dữ liệu mới tại vị trí được cung cấp dựa vào SQLALCHEMY_DATABASE_URI nếu một cơ sở dữ liệu không tồn tại ở vị trí đó, ngược lại nó sẽ tải ứng dụng cùng với một cơ sở dữ liệu tương tự.

flask_app/my_app/catalog/models.py

Trong tập tin ở trên, tôi đã tạo ra một model rất đơn giản để lưu trữ tên và giá của một Product. Điều này sẽ tạo ra một bảng tương ứng trong SQLite với các chi tiết được cung cấp trong model.

flask_app/my_app/catalog/views.py

Mấu chốt của hướng dẫn này được xử lý trong tập tin ở trên. Flask cung cấp một tiện ích được gọi là pluggable view, cho phép bạn tạo các view dưới dạng các lớp thay vì bình thường là các hàm. Việc phân phối dựa trên phương thức (MethodView) là việc triển khai các pluggable view, nó cho phép bạn viết các phương thức tương ứng với các phương thức HTTP dưới dạng chữ viết thường. Trong ví dụ ở trên, tôi đã viết phương thức get()post() tương ứng với GETPOST của HTTP.

Định tuyến cũng được cài đặt theo một cách khác, trong vài dòng code cuối của tập tin ở trên. Chúng ta có thể chỉ định các phương thức sẽ được hỗ trợ bởi bất kỳ quy tắc cụ thể nào. Bất kỳ cuộc gọi HTTP nào khác sẽ được đáp ứng bởi Error 405 Method not allowed.

Chạy Ứng dụng

Để chạy ứng dụng, hãy chạy script run.py. Nội dung của script này là:

Bây giờ chỉ cần thực thi từ dòng lệnh:

Để kiểm tra ứng dụng có hoạt động hay không, hãy mở http://127.0.0.1:5000/ trong trình duyệt của bạn, và một màn hình đơn giản với một thông điệp chào mừng sẽ chào đón bạn.

Kiểm tra RESTful API

Để kiểm tra API này, chúng ta chỉ cần thực hiện các cuộc gọi HTTP bằng bất kỳ phương thức nào có sẵn. Các cuộc gọi GET có thể được thực hiện trực tiếp thông qua trình duyệt. Các cuộc gọi POST có thể được thực hiện bằng cách sử dụng extension của Chrome như Postman hoặc từ dòng lệnh bằng cách sử dụng curl hoặc chúng ta có thể sử dụng thư viện requests của Python để thực hiện công việc cho chúng ta. Tôi sẽ sử dụng thư viện requests ở đây cho mục đích minh hoạ.

Hãy tạo một cuộc gọi GET trước để đảm bảo rằng chúng ta chưa có sản phẩm nào được tạo ra. Theo từng thiết kế của RESTful API, một cuộc gọi GET giống như /product/ sẽ liệt kê tất cả các sản phẩm. Sau đó tôi sẽ tạo ra một vài sản phẩm bằng cách tạo các cuộc gọi POST đến /product/ với một số dữ liệu. Sau đó một cuộc gọi GET đến /product/ sẽ liệt kê tất cả các sản phẩm được tạo ra. Để truy vấn một sản phẩm cụ thể, hãy tạo cuộc gọi GET đến /product/<product id>. Dưới đây là một mẫu các cuộc gọi có thể được thực hiện bằng ví dụ này.

Tóm tắt

Trong hướng dẫn này, bạn đã được học cách tự tạo ra các giao diện RESTful bằng tiện ích pluggable view của Flask. Đây là cách làm linh hoạt nhất khi viết các REST API nhưng phải viết nhiều code.

Có nhiều extension giúp chúng ta dễ dàng hơn và tự động tạo các RESTful API ở mức độ lớn. Tôi sẽ khái quát những điều này trong hai phần tiếp theo của loạt bài hướng dẫn này.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.