Hầu hết các ứng dụng web hiện đại đều được cung cấp bởi API REST dưới mui xe. Bằng cách đó, các nhà phát triển có thể tách mã mặt trước khỏi logic mặt sau và người dùng có thể tương tác với giao diện một cách linh hoạt. Trong loạt bài hướng dẫn gồm ba phần này, bạn sẽ xây dựng API REST với khung web Flask
Bạn sẽ tạo nền tảng với một dự án Flask cơ bản, sau đó thêm các điểm cuối và kết nối chúng với cơ sở dữ liệu SQLite. Bạn sẽ kiểm tra API của mình bằng tài liệu API giao diện người dùng Swagger mà bạn sẽ xây dựng trong quá trình thực hiện
Trong phần đầu tiên của loạt bài hướng dẫn này, bạn sẽ học cách
- Xây dựng dự án Flask cơ bản với API REST
- Xử lý các yêu cầu HTTP với Connexion
- Xác định các điểm cuối API bằng cách sử dụng đặc tả OpenAPI
- Tương tác với API của bạn để quản lý dữ liệu
- Xây dựng tài liệu API với Swagger UI
Sau khi kết thúc phần đầu tiên của loạt bài này, bạn sẽ chuyển sang phần thứ hai, nơi bạn sẽ học cách sử dụng cơ sở dữ liệu phù hợp để lưu trữ dữ liệu của mình vĩnh viễn thay vì dựa vào bộ nhớ trong
Loạt bài hướng dẫn này là hướng dẫn thực hành về cách tạo API REST bằng Flask và tương tác với nó bằng các thao tác CRUD. Nếu bạn muốn làm mới kiến thức của mình khi làm việc với API, thì bạn có thể cung cấp API Python và REST. Tương tác với các dịch vụ web đã đọc
Bạn có thể tải xuống mã cho phần đầu tiên của dự án này bằng cách nhấp vào liên kết bên dưới
Mã nguồn. Nhấp vào đây để tải xuống mã nguồn miễn phí mà bạn sẽ sử dụng để xây dựng API REST với khung web Flask
Thử nghiệm
Trong loạt bài hướng dẫn gồm ba phần này, bạn sẽ xây dựng API REST để theo dõi các ghi chú cho những người có thể ghé thăm bạn trong suốt cả năm. Trong hướng dẫn này, bạn sẽ tạo ra những người như Cô Tiên Răng, Chú Thỏ Phục Sinh và Knecht Ruprecht
Lý tưởng nhất là bạn muốn có quan hệ tốt với cả ba người họ. Đó là lý do tại sao bạn sẽ gửi cho họ những ghi chú, để tăng cơ hội nhận được những món quà giá trị từ họ
Bạn có thể tương tác với ứng dụng của mình bằng cách tận dụng tài liệu API. Đồng thời, bạn sẽ xây dựng một giao diện người dùng cơ bản phản ánh nội dung cơ sở dữ liệu của bạn
Trong phần đầu tiên của loạt bài này, bạn sẽ tạo một dự án Flask cơ sở và cắm vào các điểm cuối API đầu tiên của mình. Ở cuối phần này, bạn sẽ có thể xem danh sách những người ở mặt trước và quản lý từng người ở mặt sau
Bằng cách tận dụng giao diện người dùng Swagger, bạn sẽ tạo tài liệu hữu ích cho API của mình trong quá trình thực hiện. Bằng cách đó, bạn sẽ có cơ hội kiểm tra cách API của mình hoạt động ở từng giai đoạn của hướng dẫn này và có được cái nhìn tổng quan hữu ích về tất cả các điểm cuối của bạn
Loại bỏ các quảng cáoLập kế hoạch Phần Một
Bên cạnh việc xây dựng nền tảng dự án Flask, bạn sẽ tạo một API REST cung cấp quyền truy cập vào một tập hợp người và các cá nhân trong tập hợp đó. Đây là thiết kế API cho bộ sưu tập người
Hành độngHTTP Động từURL Đường dẫnMô tảĐọc
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
6PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
7Đọc một bộ sưu tập người. Tạo______08PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
7Tạo người mới. ReadPS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
6$ python -m venv venv
$ source venv/bin/activate
[venv] $
1Đọc một người cụ thể. Cập nhật______52$ python -m venv venv
$ source venv/bin/activate
[venv] $
1Cập nhật một người hiện có. Xóa$ python -m venv venv
$ source venv/bin/activate
[venv] $
4$ python -m venv venv
$ source venv/bin/activate
[venv] $
1Xóa một người hiện cóAPI REST mà bạn sẽ xây dựng sẽ phục vụ cấu trúc dữ liệu người đơn giản trong đó mọi người được nhập vào họ và mọi cập nhật đều được đánh dấu bằng dấu thời gian mới
Tập dữ liệu mà bạn sẽ làm việc trông như thế này
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
0Một trong những mục đích của API là tách dữ liệu khỏi ứng dụng sử dụng nó, do đó ẩn chi tiết triển khai dữ liệu. Ở phần sau của loạt bài hướng dẫn này, bạn sẽ lưu dữ liệu của mình vào cơ sở dữ liệu. Nhưng để bắt đầu, cấu trúc dữ liệu trong bộ nhớ hoạt động tốt
Bắt đầu
Trong phần này, bạn sẽ chuẩn bị môi trường phát triển cho dự án Flask REST API của mình. Đầu tiên, bạn sẽ tạo một môi trường ảo và cài đặt tất cả các phụ thuộc mà bạn cần cho dự án của mình
Tạo môi trường ảo
Trong phần này, bạn sẽ xây dựng cấu trúc dự án của mình. Bạn có thể đặt tên cho thư mục gốc của dự án theo bất kỳ cách nào bạn muốn. Ví dụ, bạn có thể đặt tên nó là
$ python -m venv venv
$ source venv/bin/activate
[venv] $
6. Tạo thư mục và điều hướng vào đóPS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
2Trong trường hợp này, bạn đặt tên cho thư mục gốc của dự án của bạn là
$ python -m venv venv
$ source venv/bin/activate
[venv] $
6. Các tệp và thư mục mà bạn tạo trong suốt loạt bài này sẽ nằm trong thư mục này hoặc các thư mục con của nóSau khi bạn điều hướng đến thư mục dự án, bạn nên tạo và kích hoạt một môi trường ảo. Bằng cách đó, bạn đang cài đặt bất kỳ phụ thuộc dự án nào không phải trên toàn hệ thống mà chỉ trong môi trường ảo của dự án của bạn
Chọn hệ điều hành của bạn bên dưới và sử dụng lệnh dành riêng cho nền tảng của bạn để thiết lập môi trường ảo
- các cửa sổ
- Linux + macOS
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
$ python -m venv venv
$ source venv/bin/activate
[venv] $
Với các lệnh được hiển thị ở trên, bạn tạo và kích hoạt một môi trường ảo có tên là
$ python -m venv venv
$ source venv/bin/activate
[venv] $
8 bằng cách sử dụng mô-đun $ python -m venv venv
$ source venv/bin/activate
[venv] $
8 tích hợp sẵn của Python. Dấu ngoặc đơn PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
80 trước lời nhắc cho biết bạn đã kích hoạt thành công môi trường ảoThêm phụ thuộc
Sau khi bạn đã tạo và kích hoạt môi trường ảo của mình, đã đến lúc cài đặt Flask với
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
81PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
8Khung web vi mô Flask là phần phụ thuộc chính mà dự án của bạn yêu cầu. Trên Flask, cài đặt Connexion để xử lý các yêu cầu HTTP
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
1Để tận dụng tài liệu API được tạo tự động, bạn cài đặt Connexion với hỗ trợ bổ sung cho giao diện người dùng Swagger. Ở phần sau của hướng dẫn này, bạn sẽ tìm hiểu thêm về các gói Python mà bạn vừa cài đặt
Loại bỏ các quảng cáoBắt đầu dự án Flask của bạn
Tệp chính của dự án Flask của bạn sẽ là
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
82. Tạo PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
82 trong $ python -m venv venv
$ source venv/bin/activate
[venv] $
6 và thêm nội dung sauPS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
5Bạn nhập mô-đun
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
85, cấp cho ứng dụng quyền truy cập vào chức năng Flask. Sau đó, bạn tạo một phiên bản ứng dụng Flask có tên là PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
86. Tiếp theo, bạn kết nối tuyến URL PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
87 với chức năng PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
88 bằng cách trang trí nó bằng PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
89. Hàm này gọi hàm Flask PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
10 để lấy tệp PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
11 từ thư mục mẫu và trả lại cho trình duyệtTóm lại, đoạn mã này thiết lập và chạy một máy chủ web cơ bản và làm cho nó phản hồi bằng một mẫu
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
11, mẫu này sẽ được cung cấp cho trình duyệt khi điều hướng đến URL PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
87Ghi chú. Máy chủ phát triển của Flask mặc định là cổng
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
14. Trên các phiên bản macOS mới hơn, cổng này đã được bộ thu macOS AirPlay sử dụng. Ở trên, bạn đã thay đổi cổng ứng dụng Flask của mình bằng PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
15. Nếu muốn, thay vào đó, bạn có thể thay đổi tùy chọn bộ thu AirPlay trên máy Mac của mìnhFlask mong đợi
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
11 trong thư mục mẫu có tên PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
17. Tạo thư mục PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
17 và thêm PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
11PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
1Flask đi kèm với Công cụ tạo khuôn mẫu Jinja, cho phép bạn nâng cao các mẫu của mình. Nhưng mẫu
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
11 của bạn là một tệp HTML cơ bản không có bất kỳ tính năng Jinja nào. Hiện tại thì không sao, vì mục đích của PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
11 là để xác minh rằng dự án Flask của bạn đáp ứng như dự kiếnVới môi trường ảo Python đang hoạt động, bạn có thể chạy ứng dụng của mình bằng dòng lệnh này trong thư mục chứa tệp
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
82PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
5Khi bạn chạy
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
82, máy chủ web sẽ khởi động trên cổng 8000. Nếu bạn mở trình duyệt và điều hướng đến PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
54, bạn sẽ thấy Hello, World. hiển thịXin chúc mừng, máy chủ web của bạn đang chạy. Sau này, bạn sẽ mở rộng tệp
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
11 để hoạt động với API REST mà bạn đang phát triểnBây giờ, cấu trúc dự án Flask của bạn sẽ trông như thế này
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
9Đây là một cấu trúc tuyệt vời để bắt đầu bất kỳ dự án Flask nào. Bạn có thể thấy rằng mã nguồn sẽ hữu ích khi bạn làm việc với các dự án trong tương lai. Bạn có thể tải về tại đây
Mã nguồn. Nhấp vào đây để tải xuống mã nguồn miễn phí mà bạn sẽ sử dụng để xây dựng API REST với khung web Flask
Trong các phần tiếp theo, bạn sẽ mở rộng dự án và thêm các điểm cuối API REST đầu tiên của mình
Thêm điểm cuối API REST đầu tiên của bạn
Bây giờ bạn đã có một máy chủ web đang hoạt động, bạn có thể thêm điểm cuối API REST đầu tiên của mình. Để làm điều này, bạn sẽ sử dụng Connexion mà bạn đã cài đặt trong phần trước
Mô-đun Connexion cho phép chương trình Python sử dụng đặc tả OpenAPI với Swagger. Đặc tả OpenAPI là định dạng mô tả API cho API REST và cung cấp nhiều chức năng, bao gồm
- Xác thực dữ liệu đầu vào và đầu ra đến và từ API của bạn
- Cấu hình của các điểm cuối URL API và các tham số dự kiến
Khi bạn sử dụng OpenAPI với Swagger, bạn có thể tạo giao diện người dùng [UI] để khám phá API. Tất cả điều này có thể xảy ra khi bạn tạo tệp cấu hình mà ứng dụng Flask của bạn có thể truy cập
Loại bỏ các quảng cáoTạo tệp cấu hình API
Tệp cấu hình Swagger là tệp YAML hoặc JSON chứa định nghĩa OpenAPI của bạn. Tệp này chứa tất cả thông tin cần thiết để định cấu hình máy chủ của bạn nhằm cung cấp xác thực tham số đầu vào, xác thực dữ liệu phản hồi đầu ra và định nghĩa điểm cuối URL
Tạo một tệp có tên
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
56 và bắt đầu thêm siêu dữ liệu vào đóPS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
20Khi bạn xác định API, bạn phải bao gồm phiên bản định nghĩa OpenAPI của mình. Bạn sử dụng từ khóa
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
57 cho việc này. Chuỗi phiên bản rất quan trọng vì một số phần của cấu trúc OpenAPI có thể thay đổi theo thời gianNgoài ra, giống như mỗi phiên bản Python mới bao gồm các tính năng mới, có thể có các từ khóa được thêm hoặc loại bỏ trong đặc tả OpenAPI
Từ khóa
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
58 bắt đầu phạm vi của khối thông tin API
59 Tiêu đề được bao gồm trong hệ thống giao diện người dùng do Connexion tạoPS> python -m venv venv PS> .\venv\Scripts\activate [venv] PS>
10 Mô tả về những gì API cung cấp hoặc nói vềPS> python -m venv venv PS> .\venv\Scripts\activate [venv] PS>
11 Giá trị phiên bản cho APIPS> python -m venv venv PS> .\venv\Scripts\activate [venv] PS>
Tiếp theo, thêm
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
12 và PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
13, xác định đường dẫn gốc của API của bạnPS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
21Bằng cách cung cấp
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
14 làm giá trị của PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
13, bạn sẽ có thể truy cập vào tất cả các đường dẫn API của mình so với PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
16Bạn xác định điểm cuối API của mình trong khối
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
17PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
22Khối
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
17 bắt đầu cấu hình đường dẫn điểm cuối URL API
19 URL tương đối của điểm cuối API của bạnPS> python -m venv venv PS> .\venv\Scripts\activate [venv] PS>
50 Phương thức HTTP mà điểm cuối URL này sẽ phản hồiPS> python -m venv venv PS> .\venv\Scripts\activate [venv] PS>
Cùng với định nghĩa
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
13 trong PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
12, điều này tạo ra điểm cuối URL PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
53 mà bạn có thể truy cập tại PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
54Khối
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
55 bắt đầu cấu hình của điểm cuối URL PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
7 duy nhất
57 Hàm Python sẽ đáp ứng yêu cầuPS> python -m venv venv PS> .\venv\Scripts\activate [venv] PS>
58 Các thẻ được gán cho điểm cuối này, cho phép bạn nhóm các hoạt động trong giao diện người dùngPS> python -m venv venv PS> .\venv\Scripts\activate [venv] PS>
59. Văn bản hiển thị giao diện người dùng cho điểm cuối nàyPS> python -m venv venv PS> .\venv\Scripts\activate [venv] PS>
90. Các mã trạng thái mà điểm cuối phản hồi vớiPS> python -m venv venv PS> .\venv\Scripts\activate [venv] PS>
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
91 phải chứa một chuỗi. Connexion sẽ sử dụng PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
92 để tìm một hàm Python có tên là PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
93 trong mô-đun PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
94 của dự án của bạn. Bạn sẽ tạo mã Python tương ứng sau trong hướng dẫn nàyKhối
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
90 xác định cấu hình của các mã trạng thái có thể. Tại đây, bạn xác định phản hồi thành công cho mã trạng thái PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
96, chứa một số văn bản PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
97Bạn có thể tìm thấy nội dung đầy đủ của tệp
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
56 trong phần thu gọn bên dưới
56 Mã nguồnHiển thị/ẨnPS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
Bên dưới, bạn sẽ tìm thấy mã nguồn đầy đủ của định nghĩa OpenAPI của mình
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
23Bạn đã tổ chức tệp này theo cách phân cấp. Mỗi mức thụt đầu dòng đại diện cho một mức độ sở hữu hoặc phạm vi
Ví dụ:
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
17 đánh dấu điểm bắt đầu nơi tất cả các điểm cuối URL API được xác định. Giá trị PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
201 được thụt vào bên dưới đại diện cho điểm bắt đầu nơi tất cả các điểm cuối URL của PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
7 sẽ được xác định. Phạm vi PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
50 được thụt vào trong PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
201 chứa các định nghĩa được liên kết với yêu cầu HTTP GET tới điểm cuối URL PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
7. Mẫu này tiếp tục cho toàn bộ cấu hìnhTệp
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
56 giống như bản thiết kế cho API của bạn. Với các thông số kỹ thuật mà bạn đưa vào PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
56, bạn xác định dữ liệu nào máy chủ web của bạn có thể mong đợi và cách máy chủ của bạn sẽ phản hồi các yêu cầu. Nhưng cho đến nay, dự án Flask của bạn không biết về tệp PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
56 của bạn. Đọc tiếp để sử dụng Connexion để kết nối đặc tả OpenAPI của bạn với ứng dụng Flask của bạnLoại bỏ các quảng cáoThêm Connexion vào ứng dụng
Có hai bước để thêm điểm cuối URL API REST vào ứng dụng Flask của bạn với Connexion
- Thêm tệp cấu hình API vào dự án của bạn
- Kết nối ứng dụng Flask của bạn với tệp cấu hình
Bạn đã thêm tệp cấu hình có tên
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
56 trong phần trước. Để kết nối tệp cấu hình API với ứng dụng Flask của bạn, bạn phải tham khảo PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
56 trong tệp PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
82 của mìnhPS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
24Câu lệnh
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
212 thêm module vào chương trình. Bước tiếp theo là tạo phiên bản ứng dụng bằng Connexion thay vì Flask. Trong nội bộ, ứng dụng Flask vẫn được tạo, nhưng giờ đây nó có thêm chức năng bổ sungMột phần của quá trình tạo phiên bản ứng dụng bao gồm tham số
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
213 ở dòng 6. Điều này cho Connexion biết thư mục nào cần tìm tệp cấu hình của nó. Trong trường hợp này, đó là cùng một thư mục mà bạn chạy PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
82 từTrong dòng 7, bạn yêu cầu phiên bản ứng dụng đọc tệp
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
56 từ thư mục đặc tả và định cấu hình hệ thống để cung cấp chức năng ConnexionTrả lại dữ liệu từ điểm cuối người của bạn
Trong tệp
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
56, bạn đã định cấu hình Connexion với giá trị PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
91 PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
92. Vì vậy, khi API nhận được yêu cầu HTTP cho PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
53, ứng dụng Flask của bạn sẽ gọi hàm PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
93 trong mô-đun PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
94Để thực hiện công việc này, hãy tạo một tệp
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
222 với hàm PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
93PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
25Ở dòng 5, bạn tạo một hàm trợ giúp có tên là
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
224 để tạo ra một chuỗi đại diện cho dấu thời gian hiện tạiSau đó, bạn xác định cấu trúc dữ liệu từ điển
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
225 ở dòng 8, đây là dữ liệu bạn sẽ làm việc với phần này của loạt bài hướng dẫnTừ điển
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
225 đại diện cho một cơ sở dữ liệu thích hợp. Vì PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
225 là một biến mô-đun, nên trạng thái của nó vẫn tồn tại giữa các lần gọi API REST. Tuy nhiên, mọi dữ liệu bạn thay đổi sẽ bị mất khi bạn khởi động lại ứng dụng web của mình. Điều này không phải là lý tưởng, nhưng bây giờ nó ổnSau đó, bạn tạo hàm
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
93 ở dòng 26. Máy chủ của bạn sẽ chạy PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
93 khi nhận được yêu cầu HTTP tới PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
53. Giá trị trả về của PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
93 là danh sách từ điển có thông tin về một ngườiChạy mã máy chủ của bạn và điều hướng trình duyệt của bạn đến
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
54 sẽ hiển thị danh sách những người trên màn hìnhXin chúc mừng, bạn đã tạo điểm cuối API đầu tiên của mình. Trước khi tiếp tục xây dựng API REST của bạn với nhiều điểm cuối, hãy dành chút thời gian và khám phá thêm một chút về API trong phần tiếp theo
Khám phá tài liệu API của bạn
Hiện tại bạn có API REST đang chạy với một điểm cuối URL duy nhất. Ứng dụng Flask của bạn biết những gì sẽ phục vụ dựa trên thông số kỹ thuật API của bạn trong
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
56. Ngoài ra, Connexion sử dụng PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
56 để tạo tài liệu API cho bạnĐiều hướng đến
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
235 để xem tài liệu API của bạn đang hoạt độngĐây là giao diện Swagger ban đầu. Nó hiển thị danh sách các điểm cuối URL được hỗ trợ tại điểm cuối
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
16 của bạn. Connexion tự động xây dựng điều này khi nó phân tích cú pháp tệp PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
56Nếu bạn nhấp vào điểm cuối
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
201 trong giao diện thì giao diện sẽ mở rộng để hiển thị thêm thông tin về API của bạnPhần này hiển thị cấu trúc của phản hồi dự kiến,
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
239 của phản hồi đó và văn bản mô tả mà bạn đã nhập về điểm cuối trong tệp PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
56. Bất cứ khi nào tệp cấu hình thay đổi, giao diện người dùng Swagger cũng thay đổi theoBạn thậm chí có thể dùng thử điểm cuối bằng cách nhấp vào nút Dùng thử. Tính năng này có thể cực kỳ hữu ích khi API của bạn phát triển. Tài liệu API giao diện người dùng Swagger cung cấp cho bạn một cách để khám phá và thử nghiệm API mà không phải viết bất kỳ mã nào để làm như vậy
Sử dụng OpenAPI với giao diện người dùng Swagger cung cấp một cách hay, rõ ràng để tạo các điểm cuối URL API. Cho đến nay, bạn mới chỉ tạo một điểm cuối để phục vụ tất cả mọi người. Trong phần tiếp theo, bạn sẽ thêm các điểm cuối bổ sung để tạo, cập nhật và xóa mọi người trong bộ sưu tập của mình
Loại bỏ các quảng cáoXây dựng API hoàn chỉnh
Cho đến nay, Flask REST API của bạn có một điểm cuối. Bây giờ là lúc xây dựng một API cung cấp quyền truy cập CRUD đầy đủ vào cấu trúc con người của bạn. Như bạn nhớ lại, định nghĩa về API của bạn trông như thế này
Hành độngHTTP Động từURL Đường dẫnMô tảĐọc
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
6PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
7Đọc một bộ sưu tập người. Tạo______08PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
7Tạo người mới. ReadPS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
6$ python -m venv venv
$ source venv/bin/activate
[venv] $
1Đọc một người cụ thể. Cập nhật______52$ python -m venv venv
$ source venv/bin/activate
[venv] $
1Cập nhật một người hiện có. Xóa$ python -m venv venv
$ source venv/bin/activate
[venv] $
4$ python -m venv venv
$ source venv/bin/activate
[venv] $
1Xóa một người hiện cóĐể đạt được điều này, bạn sẽ mở rộng cả tệp
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
56 và PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
222 để hỗ trợ đầy đủ API được xác định ở trênLàm việc với các thành phần
Trước khi bạn xác định các đường dẫn API mới trong
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
56, bạn sẽ thêm một khối mới cho các thành phần. Các thành phần là các khối xây dựng trong đặc tả OpenAPI của bạn mà bạn có thể tham khảo từ các phần khác trong đặc tả của mìnhThêm một khối
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
254 với PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
255 cho một ngườiPS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
26Để tránh trùng mã, bạn tạo một khối
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
254. Hiện tại, bạn chỉ lưu mô hình dữ liệu PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
257 trong khối PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
255
259 Kiểu dữ liệu của lược đồPS> python -m venv venv PS> .\venv\Scripts\activate [venv] PS>
260 Các thuộc tính bắt buộcPS> python -m venv venv PS> .\venv\Scripts\activate [venv] PS>
Dấu gạch ngang [
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
261] ở phía trước của PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
262 cho biết rằng PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
263 có thể chứa một danh sách các thuộc tính. Bất kỳ tài sản nào bạn xác định là PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
263 cũng phải tồn tại trong PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
265, bao gồm những điều sau đây
266 Tên của một ngườiPS> python -m venv venv PS> .\venv\Scripts\activate [venv] PS>
267 Họ của một ngườiPS> python -m venv venv PS> .\venv\Scripts\activate [venv] PS>
Khóa
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
268 xác định giá trị được liên kết với khóa gốc của nó. Đối với PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
257, tất cả các thuộc tính là chuỗi. Bạn sẽ trình bày lược đồ này trong mã Python của mình dưới dạng từ điển ở phần sau của hướng dẫn nàyTạo một người mới
Mở rộng các điểm cuối API của bạn bằng cách thêm một khối mới cho yêu cầu
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
270 trong khối PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
201PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
27Cấu trúc cho
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
270 trông tương tự như lược đồ PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
55 hiện có. Một điểm khác biệt là bạn cũng gửi PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
274 đến máy chủ. Rốt cuộc, bạn cần nói cho Flask biết thông tin mà nó cần để tạo một người mới. Một điểm khác biệt nữa là PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
91, mà bạn đặt thành PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
276Bên trong
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
277, bạn xác định PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
278 là định dạng trao đổi dữ liệu của API của bạnBạn có thể phân phát các loại phương tiện khác nhau trong các yêu cầu API và phản hồi API của mình. Ngày nay, các API thường sử dụng JSON làm định dạng trao đổi dữ liệu. Đây là tin tốt cho bạn với tư cách là nhà phát triển Python, vì các đối tượng JSON trông rất giống từ điển Python. Ví dụ
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
28Đối tượng JSON này giống với thành phần
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
257 mà bạn đã xác định trước đó trong PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
56 và bạn đang tham chiếu với PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
281 trong PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
282Bạn cũng đang sử dụng mã trạng thái HTTP 201, đây là phản hồi thành công cho biết việc tạo tài nguyên mới
Ghi chú. Nếu bạn muốn tìm hiểu thêm về mã trạng thái HTTP, thì bạn có thể xem tài liệu của Mozilla về mã trạng thái phản hồi HTTP
Với
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
276, bạn đang yêu cầu máy chủ của mình tìm kiếm hàm PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
284 trong mô-đun PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
94. Mở PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
222 và thêm PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
284 vào tệpPS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
29Ở dòng 4, bạn đang nhập chức năng
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
288 của Flask. Sử dụng PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
288 giúp bạn gửi thông báo lỗi ở dòng 20. Bạn đưa ra phản hồi lỗi khi nội dung yêu cầu không chứa họ hoặc khi một người có họ này đã tồn tạiGhi chú. Họ của một người phải là duy nhất, vì bạn đang sử dụng
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
290 làm khóa từ điển của PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
225. Điều đó có nghĩa là hiện tại bạn không thể có hai người có cùng họ trong dự án của mìnhNếu dữ liệu trong nội dung yêu cầu hợp lệ, bạn cập nhật
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
225 ở dòng 13 và phản hồi bằng đối tượng mới và mã HTTP 201 ở dòng 18Loại bỏ các quảng cáoxử lý một người
Cho đến nay, bạn có thể tạo một người mới và nhận danh sách với tất cả những người của bạn. Trong phần này, bạn sẽ cập nhật
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
56 và PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
222 để làm việc với một đường dẫn mới xử lý một người hiện cóMở
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
56 và thêm mã bên dướiPS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
0Tương tự với đường dẫn
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
201 của bạn, bạn bắt đầu với thao tác PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
55 cho đường dẫn PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
298. Chuỗi con PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
299 là một trình giữ chỗ cho họ mà bạn phải chuyển vào dưới dạng tham số URL. Vì vậy, ví dụ: đường dẫn URL PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
00 chứa PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
01 là PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
290Ghi chú. Các tham số URL có phân biệt chữ hoa chữ thường. Điều đó có nghĩa là bạn phải nhập họ như Ruprecht với chữ R viết hoa
Bạn cũng sẽ sử dụng tham số
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
290 trong các hoạt động khác. Vì vậy, thật hợp lý khi tạo một thành phần cho nó và tham chiếu nó khi cần thiếtPS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
91 trỏ đến một hàm PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
05 trong PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
222, vì vậy hãy quay lại tệp đó và tạo hàm bị thiếuPS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
1Khi ứng dụng Flask của bạn tìm thấy họ được cung cấp trong
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
225, thì ứng dụng này sẽ trả về dữ liệu cho người cụ thể này. Nếu không, máy chủ sẽ trả về lỗi HTTP 404Để cập nhật một người hiện có, hãy cập nhật
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
56 bằng mã nàyPS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
2Với định nghĩa này của hoạt động
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
09, máy chủ của bạn mong đợi PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
10 trong PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
222PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
3Hàm
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
10 mong đợi các đối số PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
290 và PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
14. Khi một người có họ được cung cấp tồn tại, thì bạn cập nhật các giá trị tương ứng trong PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
225 với dữ liệu PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
14Để loại bỏ một người trong tập dữ liệu của bạn, bạn cần thực hiện thao tác
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
17PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
4Thêm hàm
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
18 tương ứng vào PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
19PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
5Nếu người bạn muốn xóa tồn tại trong tập dữ liệu của bạn, thì bạn xóa mục đó khỏi
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
225Cả
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
222 và PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
56 đều hoàn thành cho phần này của hướng dẫn. Bạn có thể tải xuống các tệp đầy đủ bằng cách nhấp vào liên kết bên dướiMã nguồn. Nhấp vào đây để tải xuống mã nguồn miễn phí mà bạn sẽ sử dụng để xây dựng API REST với khung web Flask
Với tất cả các điểm cuối để quản lý mọi người, đã đến lúc dùng thử API của bạn. Vì bạn đã sử dụng Connexion để kết nối dự án Flask của mình với Swagger nên tài liệu API của bạn đã sẵn sàng cho bạn khi bạn khởi động lại máy chủ của mình
Loại bỏ các quảng cáoKhám phá tài liệu API hoàn chỉnh của bạn
Khi bạn đã cập nhật các tệp
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
56 và PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
222 để hoàn thành chức năng API người, hệ thống giao diện người dùng Swagger sẽ cập nhật tương ứng và trông giống như thế nàyGiao diện người dùng này cho phép bạn xem tất cả tài liệu mà bạn đã đưa vào tệp
PS> python -m venv venv
PS> .\venv\Scripts\activate
[venv] PS>
56 và tương tác với tất cả các điểm cuối URL tạo nên chức năng CRUD của giao diện ngườiThật không may, bất kỳ thay đổi nào bạn thực hiện sẽ không tồn tại khi bạn khởi động lại ứng dụng Flask của mình. Đó là lý do tại sao bạn sẽ cắm một cơ sở dữ liệu thích hợp vào dự án của mình trong phần tiếp theo của loạt bài hướng dẫn này
Phần kết luận
Trong phần này của loạt bài hướng dẫn, bạn đã tạo API REST toàn diện với khung web Flask của Python. Với mô-đun Connexion và một số công việc cấu hình bổ sung, tài liệu hữu ích và hệ thống tương tác có thể được triển khai. Điều này làm cho việc xây dựng API REST trở thành một trải nghiệm rất thú vị
Trong phần đầu tiên của loạt bài hướng dẫn này, bạn đã học cách
- Xây dựng dự án Flask cơ bản với API REST
- Xử lý các yêu cầu HTTP với Connexion
- Xác định các điểm cuối API bằng cách sử dụng đặc tả OpenAPI
- Tương tác với API của bạn để quản lý dữ liệu
- Xây dựng tài liệu API với Swagger UI
Trong phần hai của loạt bài này, bạn sẽ học cách sử dụng cơ sở dữ liệu phù hợp để lưu trữ dữ liệu của mình vĩnh viễn thay vì dựa vào lưu trữ trong bộ nhớ như bạn đã làm ở đây
Phần 1. API REST với Flask + Connexion
Phần 2. Tính bền vững của cơ sở dữ liệu »
Đánh dấu là đã hoàn thành
🐍 Thủ thuật Python 💌
Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python
Gửi cho tôi thủ thuật Python »
Giới thiệu về Philipp Accany
Philipp là một kỹ sư phần mềm có trụ sở tại Berlin với nền tảng thiết kế đồ họa và niềm đam mê phát triển web toàn diện
» Thông tin thêm về PhilippMỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là
Aldren
Đan
Doug
Geir Arne
Joanna
kate
Martin
Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực
Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia
Nâng cao kỹ năng Python của bạn »
Bậc thầy Kỹ năng Python trong thế giới thực
Với quyền truy cập không giới hạn vào Python thực
Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia
Nâng cao kỹ năng Python của bạn »
Bạn nghĩ sao?
Đánh giá bài viết này
Tweet Chia sẻ Chia sẻ EmailBài học số 1 hoặc điều yêu thích mà bạn đã học được là gì?
Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. Nhận các mẹo để đặt câu hỏi hay và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi