Python đã nổi lên như một trong những ngôn ngữ lập trình phổ biến nhất trong hai thập kỷ qua. Một phần lý do cho điều này là do nó tập trung vào tính dễ đọc và dễ học. Trong những năm qua, Python đã được chấp nhận trong nhiều lĩnh vực thích hợp, chẳng hạn như các chương trình tiện ích và tự động hóa. Tuy nhiên, quan trọng nhất, nó đã nhận được sự ưu ái to lớn trong cộng đồng phân tích dữ liệu và lập trình khoa học
Ngoài ra, Python cũng đã phát triển với web. Từ những ngày đầu của Web1. 0 với những tiến bộ trong Web2. 0 cũng có kiến trúc REST để xác định API, rất nhiều khung phát triển web dựa trên Python đã xuất hiện
Trong bài đăng trên blog này, chúng tôi xem xét trạng thái nghệ thuật hiện tại về các khung API REST dựa trên Python khi chúng tôi đề cập đến các khung API REST API mạnh mẽ và phổ biến nhất
Duyệt qua danh sách API miễn phí tốt nhất
Khả năng của Khung API REST
Một khung cung cấp một bộ công cụ và thư viện để hỗ trợ các lập trình viên đạt được mục tiêu. Chẳng hạn, nếu mục tiêu là phát triển một ứng dụng web, thì khung cung cấp các thư viện giúp giảm bớt nỗ lực mã hóa giao diện người dùng web hoặc phần phụ trợ hoặc cả hai. Trong trường hợp này, khung trừu tượng hóa sự phức tạp của việc đạt được các hoạt động riêng lẻ liên quan đến ứng dụng web và cung cấp mã soạn sẵn để đơn giản hóa logic lập trình. Ngoài ra, một số khung nâng cao cũng xác định cú pháp và quy tắc ngữ nghĩa của chúng để cấu trúc chương trình theo một cách cụ thể, để xác định mô hình phát triển phần mềm.
Tùy thuộc vào độ phức tạp và khả năng, khung có thể là một thư viện, một nhóm thư viện hoặc một bộ thư viện, tệp cấu hình và các công cụ như trình biên dịch, trình chuyển mã và các chương trình khác
Khi nói đến việc xây dựng API REST, các khung có thể cung cấp nhiều phương tiện khác nhau để hợp lý hóa các quy trình phát triển ứng dụng trên các hệ thống phụ phía máy khách và máy chủ của ứng dụng. Vì các API REST giống như các API Web, nên hầu hết các khung được nhắm mục tiêu để xây dựng các ứng dụng web, bao gồm các API Web. Thông thường, một khung web bao gồm nhiều thành phần khác nhau
Chức năng của từng thành phần có thể được mô tả như sau
Khách hàng
- giao diện người dùng. Thành phần này xác định lớp giao diện người dùng của khung, chịu trách nhiệm hiển thị ứng dụng khách, thường là trên trình duyệt web
- Kiểm soát truy cập. Thành phần này chịu trách nhiệm quản lý xác thực và phân quyền người dùng truy cập ứng dụng
- Ứng dụng. Đây là thành phần cốt lõi quản lý các chức năng liên quan đến ứng dụng như mẫu, điều hướng, ngoại lệ và ghi nhật ký
- HTTP. Thành phần này xử lý việc gửi yêu cầu HTTP và phân tích cú pháp phản hồi
Người phục vụ
- Phần mềm trung gian ứng dụng. Đây là mã ứng dụng xử lý logic nghiệp vụ phía máy chủ cho ứng dụng web. Thông thường, thành phần này chịu trách nhiệm tạo các đoạn mã HTML động để gửi tới máy khách để hiển thị giao diện người dùng dựa trên mẫu hoặc mẫu MVC [Trình điều khiển chế độ xem mô hình]. Nó cũng xử lý định dạng dữ liệu ứng dụng và xử lý ngoại lệ
- Dữ liệu. Thành phần này hoạt động như một lớp trừu tượng để lưu trữ/truy xuất dữ liệu từ cơ sở dữ liệu hoặc kho lưu trữ dữ liệu
- Kiểm soát truy cập. Thành phần này chịu trách nhiệm quản lý xác thực và ủy quyền của người dùng để truy cập tài nguyên phía máy chủ
- Khác/Tiện ích. Đây là một loạt các thư viện tiện ích và công cụ để hỗ trợ các tính năng bổ sung. Các tính năng này chủ yếu bao gồm xử lý phiên, bộ nhớ đệm, ghi nhật ký, quốc tế hóa, bản địa hóa và xử lý lỗi. Ngoài ra, một số khung cũng cho phép cung cấp các mô-đun có thể cắm được trong ứng dụng web
- Bảo vệ. Thành phần này chịu trách nhiệm về các biện pháp bảo mật cấp giao thức. Nó bao gồm hỗ trợ cho các biện pháp bảo mật liên quan đến HTTP như SSL, HTTPS, CORS. Nó cũng có thể bao gồm các biện pháp bảo mật nâng cao như giới hạn tốc độ hoặc các tính năng cụ thể để bảo mật cấp ứng dụng
- HTTP. Thành phần này xử lý các yêu cầu HTTP đến và ánh xạ chúng tới các tuyến thích hợp để thực thi logic nghiệp vụ của ứng dụng. Ngoài ra, nó có thể xử lý định dạng phản hồi và hỗ trợ cho các tiêu đề HTTP tùy chỉnh
Nếu một khung web bao gồm tất cả các thành phần, thì đó là khung web đầy đủ
Đối với các web framework xây dựng trên Python sẽ có một số thiếu sót nhất định. Vì Python không được sử dụng trong các trình duyệt nên vai trò của nó trong việc xây dựng các ứng dụng web giao diện người dùng là không. Tuy nhiên, Python vẫn được sử dụng để xây dựng các ứng dụng dòng lệnh và máy tính để bàn, có thể giao tiếp với phụ trợ API REST hiện có. Do đó, trong trường hợp của Python, phạm vi tổng thể của khung web nặng hơn máy chủ. Ở phía máy khách, phạm vi của Python bị giới hạn trong việc cung cấp các thư viện HTTP để thực hiện lệnh gọi API đến máy chủ
Tuy nhiên, nếu mục đích là xây dựng một phụ trợ API REST, thì cần ít thành phần hơn ở cuối máy chủ
Đối với API REST, Phần mềm trung gian ứng dụng không liên quan vì API REST không tạo chế độ xem HTML dành riêng cho ứng dụng
Ngoài ra, một số thành phần, chẳng hạn như Dữ liệu và Linh tinh/Tiện ích, là tùy chọn. Các full-stack framework thường có chúng. Tuy nhiên, có những khung vi mô không cung cấp các thành phần này và cung cấp cho nhà phát triển tùy chọn tích hợp với thư viện của bên thứ ba
Ví dụ: khung vi mô API REST dựa trên Python có thể không cung cấp thành phần dữ liệu. Trong trường hợp đó, nhà phát triển có thể sử dụng bộ công cụ SQLAlchemy, một thư viện cơ sở dữ liệu dựa trên Python phổ biến, để xây dựng thành phần dữ liệu tùy chỉnh để truy cập cơ sở dữ liệu
Ghi chú. Định nghĩa về các khung vi mô hơi mờ. Mặc dù hầu hết các khung vi mô đều có cách tiếp cận thiết kế theo quan điểm đối với một thành phần, nhưng một số trong số chúng cung cấp tất cả các thành phần với một bộ tính năng hoặc khả năng giảm so với các khung đầy đủ.
Chọn khung API REST phù hợp
Vì vậy, bạn đã quyết định sử dụng Python trong dự án phần mềm tiếp theo của mình. Tuy nhiên, dự án được thiết kế dựa trên kiến trúc API REST. Nếu bạn đang ở trong tình thế tiến thoái lưỡng nan về việc chọn khung API REST nào để xây dựng ứng dụng, thì chúng tôi sẽ giúp bạn
Việc lựa chọn REST API Framework bao gồm ba cân nhắc chính
- Vai diễn. Vai trò của khung. Nói một cách chính xác, đối với các ứng dụng web, vai trò có thể là máy khách hoặc máy chủ. Điều tương tự cũng áp dụng cho các API REST. Bạn đang sử dụng khung để gọi API REST từ phía máy khách hoặc triển khai giao diện API REST ở phía máy chủ
- Phạm vi. Điều này đề cập đến các thành phần bạn đang tìm kiếm trong ứng dụng. Nếu giao diện API REST của bạn là một phần của ứng dụng web chính thức, thì tốt hơn là sử dụng khung web ngăn xếp đầy đủ cho phép bạn xây dựng phần phụ trợ của ứng dụng web cùng với giao diện API REST. Mặt khác, để xây dựng giao diện API REST một mình, bạn có thể chọn một khung vi mô cung cấp các chức năng thiết yếu cần thiết để xây dựng cơ sở cho API REST
- Tỉ lệ. Quy mô đề cập đến khả năng của khung để xử lý một tải cụ thể. Trong phần mềm, điều này về cơ bản được xác định bởi sức mạnh tính toán và mức tiêu thụ bộ nhớ cần thiết. Chỉ số rõ ràng nhất về quy mô cho các ứng dụng dựa trên web là số lượng tương tác máy khách-máy chủ đồng thời mà máy chủ có thể xử lý. Việc xử lý tỷ lệ nằm ngoài phạm vi của các thành phần khung. Vấn đề này chủ yếu liên quan đến cơ sở hạ tầng và chiến lược triển khai của máy chủ ứng dụng. Tuy nhiên, để giữ mọi thứ trong tầm kiểm soát, bạn nên chọn một khung nhẹ và nhanh để nó không tiêu tốn quá nhiều tài nguyên máy chủ và không chặn các yêu cầu của máy khách quá lâu
Hơn hết, việc lựa chọn REST API framework cho dự án nào cũng bị chi phối bởi thời gian. Nếu bạn muốn xây dựng thứ gì đó nhanh chóng để làm bằng chứng về khái niệm, thì bạn sẽ chọn một khung vi mô. Tuy nhiên, nếu bạn đang lập kế hoạch cho một ứng dụng cấp sản xuất, bạn sẽ muốn dành chút thời gian để chọn khung ngăn xếp đầy đủ phù hợp và tăng tốc để học cách sử dụng nó. Hơn nữa, nếu bạn chỉ muốn xây dựng một ứng dụng Python phía máy khách nhằm mục đích sử dụng dịch vụ API REST hiện có, tất cả những gì bạn cần là một thư viện máy khách API REST
Hãy để chúng tôi xem xét các khung API Python REST khác nhau đang được phát triển tích cực và được áp dụng tốt vào năm 2020. Chúng tôi đã phân loại các khung này thành các thư viện máy khách, microframework và khung đầy đủ để thuận tiện cho bạn
TL;DR. Nếu bạn muốn có được một phân tích so sánh nhanh về tất cả các khung được trình bày ở đây, hãy xem bảng so sánh ở cuối bài đăng này.
Khung API Python tốt nhất
yêu cầu
Loại. Thư viện khách hàng
Thư viện Requests là một thư viện máy khách HTTP rất phổ biến trong Python. Tài liệu Python chính thức cũng khuyến nghị nó. Như tên gợi ý, thư viện này được sử dụng để tạo các yêu cầu API và nó hỗ trợ tất cả các phương thức HTTP và các tính năng HTTP nâng cao như xác thực, cookie phiên, xử lý SSL, v.v.
Bạn có thể xem kho lưu trữ GitHub yêu cầu hoặc truy cập hướng dẫn bắt đầu nhanh
Gọi API HTTP GET bằng cách sử dụng các yêu cầu đơn giản như thế này
import requests r = requests.get['//api.github.com/user', auth=['user', 'pass']] #Get the HTTP Response Code r.status_code #Get HTTP Response Body r.text
Nhanh hơn yêu cầu
Loại. Thư viện khách hàng
Thư viện này bắt chước thư viện Yêu cầu. Tuy nhiên, đúng như tên gọi, nó nhanh hơn thư viện Yêu cầu. Bạn có thể kiểm tra tệp README để kiểm tra hiệu suất và yêu cầu của nhà phát triển thư viện này. Nó cũng tuyên bố là nhẹ, xét về các dòng mã
Phần hay nhất của thư viện này là một loạt các chức năng tiện ích ngoài các phương thức HTTP thông thường. Thư viện này cung cấp một số chức năng tiện ích thuận tiện cho các tác vụ như quét URL, tải xuống các tài nguyên như tệp hình ảnh hoặc yêu cầu câu lạc bộ tới nhiều URL và trả về một phản hồi
Bạn có thể xem kỹ kho lưu trữ GitHub và thử mã ví dụ. Đây là cách bạn có thể bắt đầu một loạt các yêu cầu API từ thư viện này để tìm nạp URL, tải xuống hình ảnh và thu thập một số URL theo các cách khác nhau
import nimporter import faster_than_requests as requests requests.get["//httpbin.org/get"] # GET requests.post["//httpbin.org/post", "Some Data Here"] # POST requests.download["//example.com/foo.jpg", "out.jpg"] # Download a file requests.scraper[["//foo.io", "//bar.io"], threads=True] # Multi-Threaded Web Scraper requests.scraper5[["//foo.io"], sqlite_file_path="database.db"] # URL-to-SQLite Web Scraper requests.scraper6[["//python.org"], ["[www||]+[^s]+[w]"]] # Regex-powered Web Scraper
PycURL
Loại. Thư viện khách hàng
PycURL là trình bao bọc Python trên thư viện libcurl để truyền tệp đa giao thức. Nó hỗ trợ HTTP, FTP, SMTP và nhiều giao thức Internet khác. Nếu bạn là người hâm mộ thư viện cURL hoặc libcurl, bạn sẽ có thể liên hệ với giao diện Pythonic này qua libcurl dựa trên C/C++ gốc
Để xem kỹ hơn, hãy khám phá kho lưu trữ GitHub của PycURL. Dưới đây là sơ lược về cách bạn có thể thực hiện lệnh gọi HTTP GET bằng PycURL
import pycurl from io import BytesIO buffer = BytesIO[] c = pycurl.Curl[] c.setopt[c.URL, '//pycurl.io/'] c.setopt[c.WRITEDATA, buffer] c.perform[] c.close[] body = buffer.getvalue[] # Body is a byte string. # We have to know the encoding in order to print it to a text file # such as standard output. print[body.decode['iso-8859-1']]
Bình giữ nhiệt
Loại. Khung vi mô
Flask là một khung web phổ biến rộng rãi cho Python. Với hơn 50 nghìn sao trên GitHub, đây là khung được sử dụng rộng rãi và thích ứng tốt nhất để xây dựng các ứng dụng web bằng Python
Trong những năm qua, Flask đã bổ sung rất nhiều bản cập nhật tính năng, khiến nó gần như tốt như một full stack framework. Tuy nhiên, cách tiếp cận tối giản để xây dựng các ứng dụng web là điều khiến nó trở thành lựa chọn ưa thích của các nhà phát triển. Đây là cách bạn có thể viết một ứng dụng web “Xin chào thế giới” đơn giản trong Flask
from flask import Flask app = Flask[__name__] @app.route['/'] def hello_world[]: return 'Hello, World!'
Kiểm tra kho lưu trữ Flask GitHub hoặc bắt đầu với hướng dẫn bắt đầu nhanh
Lốc xoáy
Loại. Khung vi mô
Tornado là một khung web Python và thư viện mạng không đồng bộ. Nó cũng kết hợp một máy chủ HTTP và giao diện máy khách cùng với giao diện WebSocket để liên lạc hai chiều với các máy chủ hỗ trợ WebSocket
Khung web Tornado có các tính năng phần mềm trung gian cần thiết để xử lý các yêu cầu/phản hồi HTTP, tạo khuôn mẫu và định tuyến. Nó cũng hỗ trợ các đồng quy trình làm cho nó trở nên lý tưởng để xây dựng các chương trình phụ trợ web dựa trên kết nối liên tục và bỏ phiếu dài, đặc biệt là cho WebSockets
Tornado đã xuất hiện từ lâu, nhưng một số tính năng của nó hơi lỗi thời so với các khung REST hiện đại. Tuy nhiên, nó lại nhận được nhiều sự yêu thích trên repo GitHub với hơn 19 nghìn sao
Để bắt đầu với một ứng dụng web Tornado đơn giản, bạn có thể xác định một phụ trợ API đơn giản như thế này
import tornado.ioloop import tornado.web class MainHandler[tornado.web.RequestHandler]: def get[self]: self.write["Hello, world"] def make_app[]: return tornado.web.Application[[ [r"/", MainHandler], ]] if __name__ == "__main__": app = make_app[] app.listen[8888] tornado.ioloop.IOLoop.current[].start[]
Kiểm tra kho lưu trữ Tornado GitHub để bắt đầu với khung
API nhanh
Loại. Khung vi mô
FastAPI là một trong những khung web Python sắp ra mắt. Nó tuyên bố là rất nhanh, hiệu suất cao và hỗ trợ cấu trúc mã hóa nhỏ gọn giúp phát triển siêu nhanh
FastAPI dựa trên khả năng asyncio của Python, đã được chuẩn hóa thành đặc tả ASGI để xây dựng các ứng dụng web không đồng bộ. Về các tính năng, FastAPI gần như ngang bằng với Flask và hỗ trợ các khả năng sẵn có để tích hợp với cơ sở dữ liệu, chạy các tác vụ nền, cắm vào phần mềm trung gian ứng dụng tùy chỉnh, v.v.
Với hơn 14 nghìn sao, FastAPI đang trở nên phổ biến trong cộng đồng Python và đang được phát triển tích cực với hơn 100 người đóng góp
Đây là cách bạn xác định phụ trợ API REST đơn giản với khung FastAPI
from fastapi import FastAPI app = FastAPI[] @app.get["/"] def read_root[]: return {"Hello": "World"} @app.get["/items/{item_id}"] def read_item[item_id: int, q: str = None]: return {"item_id": item_id, "q": q}
Kiểm tra kho lưu trữ FastAPI GitHub để xem xét kỹ hơn các bản phát hành và sự cố mới nhất
Sanic
Loại. Khung vi mô
Sanic là một khung web Python dựa trên asyncio khác. Nó là một khung nhẹ với sự hỗ trợ cho tất cả các chức năng phần mềm trung gian ứng dụng và HTTP thiết yếu. Tuy nhiên, nó không có hỗ trợ sẵn cho thành phần dữ liệu
Ngoài ra, Sanic hỗ trợ khả năng viết các giao thức tùy chỉnh và các thành phần phần mềm trung gian để tùy chỉnh yêu cầu giao thức và xử lý phản hồi. Nó có một máy chủ web phát triển sẵn nhưng tích hợp tốt với Nginx cho các ứng dụng sản xuất
Đây là cách viết một máy chủ phụ trợ API đơn giản trong Sanic
from sanic import Sanic from sanic.response import json app = Sanic[] @app.route['/'] async def test[request]: return json[{'hello': 'world'}] if __name__ == '__main__': app.run[host='0.0.0.0', port=8000]
Để biết thêm chi tiết, hãy xem kho lưu trữ Sanic GitHub hoặc xem hướng dẫn Bắt đầu
Chim ưng
Loại. Khung vi mô
Falcon đặt mục tiêu trở thành một khung web đáng tin cậy để xây dựng các dịch vụ phụ trợ và dịch vụ vi mô quy mô lớn. Nó khuyến khích kiểu kiến trúc REST và hoạt động với các máy chủ tương thích với WSGI hoặc ASGI
Falcon có giao diện dựa trên lớp, hướng đối tượng để xác định tài nguyên API. Nó hỗ trợ các tính năng phần mềm trung gian ứng dụng và HTTP thiết yếu, bao gồm xử lý giao thức HTTP, định tuyến, xử lý phương tiện, cookie và các tiện ích URI
Đây là cách bạn xác định tài nguyên API REST bằng phương pháp hướng đối tượng của Falcon
class QuoteResource: def on_get[self, req, resp]: """Handles GET requests""" quote = { 'quote': [ "I've always been more interested in " "the future than in the past." ], 'author': 'Grace Hopper' } resp.media = quote api = falcon.API[] api.add_route['/quote', QuoteResource[]]
Hãy xem kho lưu trữ Falcon GitHub. Để bắt đầu viết mã với Falcon, hãy xem hướng dẫn sử dụng
Chai
Loại. Khung vi mô
Chai là một khung vi mô rất nhẹ. Nó có dung lượng nhỏ và được phân phối dưới dạng một tệp duy nhất và chỉ phụ thuộc vào thư viện chuẩn Python
Chai cung cấp tất cả các thành phần phần mềm trung gian cần thiết để xây dựng phụ trợ API REST dựa trên định tuyến và mẫu. Nó hỗ trợ hầu hết các tính năng liên quan đến HTTP thông thường như cookie, tiêu đề, siêu dữ liệu và tải tệp lên. Nó cũng có một máy chủ HTTP tích hợp
Một ứng dụng web Chai nhanh chóng và đơn giản trông như thế này
________số 8Để biết thêm chi tiết, hãy xem kho lưu trữ Chai GitHub hoặc xem hướng dẫn
Ôm
Loại. Khung vi mô
Hug thực sự là một khung API đa giao diện. Nó cung cấp một cách tuyệt vời để xây dựng API REST bằng cách tách logic nghiệp vụ API khỏi giao diện và liên kết các phụ thuộc phiên bản
Do tập trung vào việc xây dựng API, Hug bị giới hạn nghiêm ngặt đối với việc xử lý đầu vào/đầu ra, định tuyến và chú thích loại. Tuy nhiên, nó hỗ trợ cung cấp để thêm tiện ích mở rộng. Một trong những tính năng thú vị của Hug là khả năng hiển thị logic API thông qua CLI, HTTP hoặc chức năng cục bộ, do đó cung cấp nhiều giao diện
Đây là cách bạn xác định API trong Hug
import hug @hug.get[examples='name=Timothy&age=26'] @hug.local[] def happy_birthday[name: hug.types.text, age: hug.types.number, hug_timer=3]: """Says happy birthday to a user""" return {'message': 'Happy {0} Birthday {1}!'.format[age, name],'took': float[hug_timer]}
Để biết thêm thông tin, hãy truy cập kho lưu trữ Hug GitHub hoặc khám phá tài liệu
Đêm
Loại. Khung vi mô
Eve là một khung vi mô API được xây dựng trên Flask
Mục tiêu của Eve là làm cho quá trình phát triển API REST trở nên cực kỳ nhanh chóng và đơn giản. Do đó, nó được xây dựng dựa trên các nguyên tắc của Flask, bỏ qua tất cả các thành phần ứng dụng web của Flask.
Eve hỗ trợ các mẫu giao diện API REST được sử dụng nhiều nhất như hoạt động CRUD, điểm cuối API có thể tùy chỉnh, lọc, sắp xếp, phân trang, định dạng JSON/XML/JSONP
Nó cũng hỗ trợ các tính năng nâng cao như xác thực, CORS, bộ nhớ đệm, giới hạn tốc độ, v.v. Eve cũng có hỗ trợ tích hợp với cơ sở dữ liệu MongoDB và SQL
Eve cung cấp tệp cài đặt cấu hình Python để xác định các điểm cuối và tài nguyên API. Theo cách này, API REST có thể được xây dựng bằng cú pháp JSON khai báo
Để biết thêm chi tiết, hãy xem hướng dẫn bắt đầu nhanh của Eve hoặc duyệt qua kho lưu trữ GitHub
Django
Loại. Khung ngăn xếp đầy đủ
Django là một khung web ngăn xếp đầy đủ, đầy đủ tính năng trong Python. Đây là một trong những khung web lâu đời nhất và phổ biến nhất, với gần 50 nghìn sao trên GitHub
Khung Django được tải với nhiều tính năng để xây dựng các ứng dụng web có khả năng đầy đủ. Ngoài phần mềm trung gian ứng dụng và HTTP thiết yếu, các khả năng của nó bao gồm chế độ xem dữ liệu và mẫu MVC, xử lý cơ sở dữ liệu, biểu mẫu, mẫu, bảo mật, bộ nhớ đệm, v.v.
Nếu bạn chỉ quan tâm đến việc xây dựng phụ trợ API REST, thì Django là quá mức cần thiết. Tuy nhiên, bạn có thể sử dụng khung Django REST, một dự án do cộng đồng tài trợ bởi Encode. Nó sử dụng Django làm công cụ cơ bản bằng cách cung cấp giao diện đơn giản hơn dành riêng cho phát triển API REST
Bạn có thể kiểm tra kho mã của Django và Django REST framework để biết thêm chi tiết
TurboGears
Loại. Khung ngăn xếp đầy đủ
TurboGears là một khung web ngăn xếp đầy đủ. Tuy nhiên, nó được thiết kế để mở rộng quy mô từ ứng dụng tệp đơn lẻ sang ứng dụng ngăn xếp đầy đủ. Bằng cách này, TurboGears mang đến cho các nhà phát triển cảm giác về một khung vi mô nhưng vẫn cung cấp các công cụ mạnh mẽ để mở rộng quy mô nhằm lưu trữ một ứng dụng web chính thức
TurboGears được xây dựng trên mẫu MVC, giống như các full stack framework khác. Nó hỗ trợ, tạo khuôn mẫu, phân trang, xác thực và ủy quyền, lưu vào bộ nhớ đệm, cùng với hỗ trợ cho một số cơ sở dữ liệu và di chuyển lược đồ
Khám phá kho lưu trữ TurboGears GitHub để xem xét kỹ hơn về khung. Để bắt đầu phát triển, hãy xem tài liệu TurgoGears
web2py
Loại. Khung ngăn xếp đầy đủ
Web2py là một khung web dựa trên Python tập trung vào các ứng dụng web dựa trên cơ sở dữ liệu
Về cốt lõi, web2py có các mô-đun để xử lý HTTP và URL. Nó cũng có một bộ lập lịch tích hợp để chạy các tác vụ nền. Ngoài ra, web2py có lớp trừu tượng cơ sở dữ liệu ánh xạ các đối tượng Python vào các đối tượng cơ sở dữ liệu, chẳng hạn như bảng, truy vấn và bản ghi. Lớp trừu tượng hóa cơ sở dữ liệu hoạt động cùng với một bộ trình điều khiển hỗ trợ nhiều cơ sở dữ liệu phổ biến như SQLite, MySQL, PostgreSQL, Oracle, DB2, MSSQL, MongoDB, v.v.
Nó cũng có hỗ trợ MVC đầy đủ tính năng, xác thực biểu mẫu, bảo mật, kiểm soát truy cập và nhiều tiện ích khác
Bạn có thể đọc thêm về nó trong cuốn sách trực tuyến web2py. Để xem kỹ hơn, bạn có thể duyệt qua kho lưu trữ web2py GitHub
Kim tự tháp
Loại. Khung ngăn xếp đầy đủ
Kim tự tháp là một khung web Python đầy đủ khác tin tưởng vào việc bắt đầu từ quy mô nhỏ và phát triển lớn. Cách tiếp cận này cho phép các nhà phát triển bắt đầu với Kim tự tháp như một khung vi mô. Hơn nữa, Kim tự tháp đủ linh hoạt để mở rộng và thêm nhiều thành phần hơn để đảm nhận tất cả các khía cạnh cần thiết để xây dựng một ứng dụng web quy mô lớn
Khung kim tự tháp bao gồm tất cả các tính năng tiêu chuẩn của khung web như mẫu MVC, định tuyến, tạo khuôn mẫu, bảo mật, phiên, cơ sở dữ liệu và ghi nhật ký. Nó bao gồm một máy chủ web được gọi là pserve, nhưng nó hoạt động tốt với Apache và Nginx để triển khai sản xuất
Đây là cách bạn tạo một phụ trợ web đơn giản với Kim tự tháp
import nimporter import faster_than_requests as requests requests.get["//httpbin.org/get"] # GET requests.post["//httpbin.org/post", "Some Data Here"] # POST requests.download["//example.com/foo.jpg", "out.jpg"] # Download a file requests.scraper[["//foo.io", "//bar.io"], threads=True] # Multi-Threaded Web Scraper requests.scraper5[["//foo.io"], sqlite_file_path="database.db"] # URL-to-SQLite Web Scraper requests.scraper6[["//python.org"], ["[www||]+[^s]+[w]"]] # Regex-powered Web Scraper0
Để hiểu rõ hơn về framework, bạn xem kho lưu trữ Pyramid GitHub hoặc xem tài liệu