Каковы основные шаги для создания простого веб-фреймворка на Python

«Каковы основные шаги для создания простого веб-фреймворка на Python» — вопрос из категории Архитектура, который задают на 10% собеседований Python Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Создание собственного веб-фреймворка — это сложная задача, но её можно разбить на ключевые этапы. В основе лежит обработка HTTP-запросов и маршрутизация.

Основные шаги:

  1. Определить архитектуру: Решить, будет ли фреймворк следовать спецификации WSGI (для синхронных приложений) или ASGI (для асинхронных). Это обеспечит совместимость с веб-серверами.
  2. Реализовать маршрутизатор (Router): Создать механизм, который сопоставляет URL-пути с функциями-обработчиками (views). Часто для этого используются декораторы.
  3. Создать объекты Запроса и Ответа (Request/Response): Разработать классы для инкапсуляции данных входящего запроса (заголовки, тело) и формирования исходящего ответа.

Минимальный пример:

class MyFramework:
    def __init__(self):
        self.routes = {}

    # Декоратор для регистрации маршрута
    def route(self, path):
        def wrapper(handler):
            self.routes[path] = handler
            return handler
        return wrapper

    # Основной метод обработки запроса
    def handle_request(self, path):
        handler = self.routes.get(path)
        if handler:
            return handler()
        # В реальном приложении здесь будет полноценный HTTP-ответ
        return "404 Not Found"

app = MyFramework()

@app.route("/")
def home():
    return "Hello, World!"

# Эмуляция вызова
print(app.handle_request("/"))        # Выведет: Hello, World!
print(app.handle_request("/about"))  # Выведет: 404 Not Found

Для создания полноценного фреймворка необходимо изучить и реализовать поддержку стандарта WSGI или ASGI. Это обеспечит совместимость с веб-серверами, такими как Gunicorn или Uvicorn.