Другое

Python 3 http.server: Руководство по замене SimpleHTTPServer

Узнайте эквивалент команды SimpleHTTPServer в Python 3. Научитесь использовать python -m http.server с расширенными опциями, поддержкой SSL и практическими примерами для локальной разработки.

Какой эквивалент команды ‘python -m SimpleHTTPServer’ в Python 3?

Эквивалент команды “python -m SimpleHTTPServer” в Python 3 — это python -m http.server. Эта команда обслуживает файлы из текущего каталога на порту 8000 по умолчанию, предоставляя ту же базовую функциональность, что и модуль SimpleHTTPServer из Python 2. Модуль http.server в Python 3 предлагает дополнительные возможности и улучшения по сравнению с исходной реализацией SimpleHTTPServer.

Содержание

Базовое использование

Основная замена команды Python 2 SimpleHTTPServer проста:

bash
python -m http.server

Эта команда запустит HTTP-сервер на порту 8000 и будет обслуживать файлы из текущего каталога и его подкаталогов. Вы можете получить доступ к серверу, перейдя по адресу http://localhost:8000 в вашем веб-браузере.

Модуль SimpleHTTPServer был объединен с http.server в Python 3.0. Инструмент 2to3 автоматически адаптирует импорты при преобразовании ваших исходников в 3.0.

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

Параметры командной строки

Модуль http.server Python 3 поддерживает несколько параметров командной строки, которые отсутствовали в исходном SimpleHTTPServer:

Указание порта

bash
python -m http.server 9000  # Запускается на порту 9000 вместо 8000

Привязка к адресу

bash
python -m http.server --bind 127.0.0.1  # Привязывается только к localhost
python -m http.server -b 192.168.1.100  # Альтернативный синтаксис привязки

Обслуживание каталога

bash
python -m http.server -d /path/to/directory  # Обслуживание указанного каталога

Версия HTTP

bash
python -m http.server --directory /path/to/files  # Функция Python 3.7+

Согласно официальной документации, в Python 3.8 была добавлена поддержка IPv6 в параметре --bind, что делает его более универсальным для различных сетевых конфигураций.

Расширенные возможности

Поддержка SSL/HTTPS

В отличие от исходного SimpleHTTPServer, модуль http.server Python 3 можно расширить для поддержки HTTPS. Как демонстрирует Real Python, вы можете создать безопасный сервер с помощью:

python
from http.server import HTTPServer, SimpleHTTPRequestHandler
from ssl import PROTOCOL_TLS_SERVER, SSLContext

ssl_context = SSLContext(PROTOCOL_TLS_SERVER)
ssl_context.load_cert_chain('server.pem')
server = HTTPServer(('localhost', 4443), SimpleHTTPRequestHandler)
server.socket = ssl_context.wrap_socket(server.socket, server_side=True)
server.serve_forever()

Обработка пользовательских запросов

Модуль http.server предоставляет более надежную обработку HTTP-запросов, чем SimpleHTTPServer, предлагая лучший контроль над HTTP-ответами и обработкой ошибок. Как отмечено на Stack Abuse, это позволяет создавать более сложные реализации сервера.

Поддержка IPv6

Начиная с Python 3.8, модуль поддерживает адресацию IPv6, которая отсутствовала в исходной реализации SimpleHTTPServer.

Практические примеры

Быстрый сервер для локальной разработки

Для тестирования статических веб-сайтов:

bash
cd /path/to/your/project
python -m http.server 8080

Общий доступ к файлам в сети

Для обмена файлами в локальной сети:

bash
python -m http.server --bind 0.0.0.0 8000

Разработка с определенным портом

При работе с фреймворками, требующими определенные порты:

bash
python -m http.server 3000

Как объясняет DigitalOcean, это особенно полезно при веб-разработке, когда вам нужно протестировать ваше приложение локально.

Сравнение с версией Python 2

Возможность Python 2 SimpleHTTPServer Python 3 http.server
Базовая команда python -m SimpleHTTPServer python -m http.server
Указание порта python -m SimpleHTTPServer 9000 python -m http.server 9000
Привязка к адресу Не поддерживается --bind 127.0.0.1
Указание каталога Не поддерживается -d /path/to/dir
Поддержка IPv6 Не поддерживается Python 3.8+
Поддержка SSL Ограниченная Улучшенные возможности
HTTP-методы Только GET и HEAD Те же, с возможностью расширения

Версия Python 3 сохраняет обратную совместимость, добавляя значительные улучшения. Как отмечает Better Stack Community, переход для базового использования бесшовный, но новая версия предлагает гораздо больше гибкости для продвинутых случаев использования.

Заключение

  • Эквивалент команды “python -m SimpleHTTPServer” в Python 3 — это просто python -m http.server, сохраняя ту же базовую функциональность, добавляя новые возможности.
  • Модуль http.server предоставляет улучшенные возможности, такие как поддержка привязки к адресу, совместимость с IPv6 и лучшая обработка ошибок по сравнению с исходным SimpleHTTPServer.
  • В большинстве случаев переход с Python 2 на Python 3 бесшовный — просто замените “SimpleHTTPServer” на “http.server” в ваших командах.
  • Продвинутые пользователи могут использовать дополнительные параметры, такие как --bind, -d/--directory, и реализовать поддержку SSL для более сложных реализаций сервера.
  • Модуль остается отличным инструментом для быстрой локальной разработки, обмена файлами и тестирования веб-приложений без необходимости во внешних зависимостях.

Источники

  1. What is the Python 3 equivalent of “python -m SimpleHTTPServer” - Stack Overflow
  2. What Is the Python 3 Equivalent of “Python -M Simplehttpserver” | Better Stack Community
  3. How to Create a Simple HTTP Server in Python | DigitalOcean
  4. The Python 3 Equivalent of SimpleHTTPServer - Stack Abuse
  5. SimpleHTTPServer — Simple HTTP request handler — Python 2.7.18 documentation
  6. How to Launch an HTTP Server in One Line of Python Code – Real Python
  7. What is the Python 3 equivalent of “python -m SimpleHTTPServer”? - TechGrind
  8. Python HTTP(S) Server — Example - AnvilEight
  9. http.server — HTTP servers — Python 3.14.0 documentation
  10. Powerful Tips for Python 3 HTTP Server Mastery - EDUCBA
Авторы
Проверено модерацией
Модерация