Spec-Zone.ru › Python 2.7

SimpleHTTPServer — Простой обработчик HTTP-запросов

Примечание

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

Предупреждение

SimpleHTTPServer не рекомендуется для использования в производстве. Он реализует только базовые проверки безопасности.

Модуль SimpleHTTPServer определяет единственный класс SimpleHTTPRequestHandler, который совместим по интерфейсу с BaseHTTPServer.BaseHTTPRequestHandler.

Модуль SimpleHTTPServer определяет следующий класс:

class SimpleHTTPServer.SimpleHTTPRequestHandler(request, client_address, server)

Этот класс предоставляет файлы из текущего каталога и ниже, напрямую отображая структуру каталогов на HTTP-запросы.

Большая часть работы, такая как обработка запроса, выполняется базовым классом BaseHTTPServer.BaseHTTPRequestHandler. Этот класс реализует функции do_GET() и do_HEAD().

Ниже перечислены атрибуты класса SimpleHTTPRequestHandler:

server_version

Это будет "SimpleHTTP/" + __version__, где __version__ определено на уровне модуля.

extensions_map

Словарь, сопоставляющий суффиксы с типами MIME. По умолчанию используется пустая строка, которая считается application/octet-stream. Сопоставление выполняется без учёта регистра, поэтому словарь должен содержать только ключи в нижнем регистре.

Класс SimpleHTTPRequestHandler определяет следующие методы:

do_HEAD()

Этот метод обрабатывает запросы типа 'HEAD': он отправляет заголовки, которые бы он отправил для эквивалентного запроса GET. См. метод do_GET() для более подробного объяснения возможных заголовков.

do_GET()

Запрос сопоставляется с локальным файлом путём интерпретации запроса как пути, относительного к текущей рабочей директории.

Если запрос сопоставился с каталогом, проверяется наличие файла с именем index.html или index.htm (в этом порядке). Если файл найден, возвращается его содержимое; иначе генерируется список каталога путём вызова метода list_directory(). Этот метод использует os.listdir() для сканирования каталога и возвращает ответ об ошибке 404 в случае неудачи.

Если запрос сопоставился с файлом, он открывается, и содержимое возвращается. Любая исключительная ситуация IOError при открытии запрошенного файла преобразуется в 404, 'File not found' ошибку. В противном случае тип содержимого определяется с помощью метода guess_type(), который в свою очередь использует переменную extensions_map.

Выводится заголовок 'Content-type:' с определённым типом содержимого, а за ним — заголовок 'Content-Length:' с размером файла и заголовок 'Last-Modified:' с временем изменения файла.

Затем следует пустая строка, обозначающая конец заголовков, а затем выводится содержимое файла. Если тип MIME файла начинается с text/, файл открывается в текстовом режиме; в противном случае используется двоичный режим.

Функция test() в модуле SimpleHTTPServer является примером, создающим сервер с использованием SimpleHTTPRequestHandler в качестве обработчика.

Добавлен в версии 2.5: Заголовок 'Last-Modified'.

Модуль SimpleHTTPServer может быть использован следующим образом для создания простого веб-сервера, предоставляющего файлы относительно текущей директории.

import SimpleHTTPServer
import SocketServer

PORT = 8000

Handler = SimpleHTTPServer.SimpleHTTPRequestHandler

httpd = SocketServer.TCPServer(("", PORT), Handler)

print "serving at port", PORT
httpd.serve_forever()

Модуль SimpleHTTPServer также может быть вызван напрямую с помощью переключателя -m интерпретатора с аргументом port number. Аналогично предыдущему примеру, это предоставляет файлы, относящиеся к текущей директории.

python -m SimpleHTTPServer 8000

См. также

Module BaseHTTPServer

Базовая реализация класса для веб-сервера и обработчика запросов.

© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/2.7/library/simplehttpserver.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API