Создайте свой первый HTTP-сервер на Python

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

Думайте о HTTP как о заказе в ресторане. Вы не идете на кухню и сами не просите повара приготовить вам еду. Вы передаете заказ на еду серверу. Официант передает ваш заказ нужным людям, и через некоторое время у вас уже есть готовая еда. Если вам нужно что-то еще, например соль, вы снова обращаетесь к серверу, а не ищете соль самостоятельно. HTTP работает аналогично. Ваш браузер отправляет запрос на веб-сервер, и веб-сервер определяет, где находится нужная информация, и доставляет ее обратно в ваш браузер.

В этой аналогии человеческий сервер представляет собой HTTP-сервер. Он принимает запрос браузера на информацию, определяет, где находится информация, и возвращает ее браузеру.

HTTP-сервер — это служба, которая:

  • Предоставляет ресурсы (например, веб-страницы, API и файлы)
  • Предоставляет возможности (действия, которые может запросить клиент, например отправка формы или получение данных).
  • Общается с помощью HTTP (протокол, который ваш браузер или клиент использует для отправки запросов и получения ответов).

В основе HTTP лежат запросы и ответы. Это сообщения, которые ваш браузер и сервер отправляют туда и обратно для обмена информацией. Запросы и ответы позволяют HTTP работать как диалог между вашим браузером и сервером. Ваш браузер отправляет запрос с запросом чего-либо (веб-страницы, изображения или других видеороликов TikTok). Сервер получает запрос, определяет, как получить информацию, и отправляет ответ обратно.

И последнее, прежде чем мы создадим наш простой HTTP-сервер. Мы все видели ошибку 404, обычно с каким-нибудь грустным символом рядом с ней. 404 — это код состояния, сообщающий браузеру, что запрошенная конечная точка или путь недоступны. Конечная точка или путь — это адрес, который сообщает серверу, какой ресурс следует вернуть. Для обычного просмотра веб-страниц это будет веб-адрес. Существуют и другие коды состояния, хотя они не всегда отображаются. Например, 200 — это код состояния, который возвращает сервер, когда все работает правильно.

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

Предварительные условия

  • Питон 3.0+
  • Базовые знания терминала (вы будете выполнять команды в терминале)
  • Nano или другой текстовый редактор (мы будем использовать nano, но вы можете использовать VS Code, Vim и т. д.)
  • pip (менеджер пакетов Python, обычно включенный в Python 3)
  • Базовое понимание HTTP (что такое запрос и ответ)

Создание нашего HTTP-сервера с использованием Python

Мы собираемся создать HTTP-сервер, который будет предоставлять данные о погоде. Наш сервер будет имитировать структуру HTTP-сервера на основе реального API. Позже вы сможете заменить поддельный набор данных реальными вызовами API.

Создайте поддельные данные

Мы будем использовать Python для поддельных данных о погоде, поскольку со словарями Python легко работать, и их можно преобразовать в JSON для отправки клиентам. Это делает наше приложение более простым и быстрым в тестировании.

Словарь Python, приведенный ниже, будет действовать как наша «база данных» или «серверная часть API». Если бы вы работали с реальным API, вы могли бы заменить его живыми вызовами API.

В папке вашего проекта создайте новый файл, набрав nano fake_weather_data.py в терминале. Если вы используете другую IDE, просто пропустите файл nano.

Создайте HTTP-сервер

Теперь мы готовы создать файл сервера. В терминале введите nano Weather_server.py (или пропустите nano, если используете другую IDE).

В файле Weather_server.py мы определяем, что ищем (доступные города) и детали (поиск погоды) с помощью облегченного HTTP-сервера. Он действует как моделируемый внешний источник данных, к которому сценарии или другие клиенты могут запрашивать точно так же, как API живой погоды.

Сервер читает файл fake_weather_data.py и выполняет базовую проверку ошибок. Если клиент запрашивает несуществующий путь, он отвечает кодом 404. Если клиент запрашивает город, которого нет в наборе данных, он возвращает четкое сообщение об ошибке JSON. Это позволяет легко тестировать клиенты или моделировать реальные рабочие процессы без доступа к реальному API.

Сервер постоянно работает по адресу 127.0.0.1:5000. Клиенты могут запросить его в любое время. Он предоставляет ресурсы и процедуры, обрабатывает запросы и возвращает структурированные ответы JSON, что упрощает интеграцию в более крупные проекты.

Наш сервер использует urllib — встроенный модуль Python, предоставляющий инструменты для работы с URL-адресами. Его основное назначение — отправлять HTTP-запросы и обрабатывать ответы, что позволяет программам Python «общаться» с веб-серверами или API.

Создайте клиент для тестирования HTTP-сервера

Давайте создадим наш клиентский файл. В терминале введите nano Weather_client.py.

Файл Weather_client.py действует как потребитель сервера моделируемой погоды, отправляя запросы на запрос его данных. Клиент подключается к серверу, работающему по адресу 127.0.0.1:5000, и демонстрирует, как клиенты могут взаимодействовать с доступными данными.

Сначала он запрашивает конечную точку /weather/cities, чтобы получить список всех доступных городов. Затем он вызывает конечную точку /get_weather для конкретного города (в данном примере Токио) и печатает структурированный ответ JSON.

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

Запустите сервер и клиент

В том же терминале выполните команду python Weather_server.py. Это запустит сервер.

Теперь откройте новый терминал, обязательно укажите его в ту же папку проекта и введите python Weather_client.py. Это запустит клиент. После запуска клиента вы должны увидеть следующий результат в своем терминале:

И вот оно. Вы создали свой первый сервер. Теперь вы можете использовать это как руководство для создания более сложных, пользовательских HTTP-серверов, которые лучше соответствуют вашей рабочей среде и потребностям.

ТЕНДЕНЦИОННЫЕ ИСТОРИИ YOUTUBE.COM/THENEWSTACK Технологии развиваются быстро, не пропустите ни одной серии. Подпишитесь на наш канал YouTube, чтобы смотреть все наши подкасты, интервью, демонстрации и многое другое. ПОДПИСАТЬСЯ Группа, созданная в Sketch. Джессика Вахтель — писатель-маркетолог для разработчиков в InfluxData, где она создает контент, который помогает сделать мир данных временных рядов более понятным и доступным. Джессика имеет опыт разработки программного обеспечения и технической журналистики. Узнайте больше от Джессики Вахтель

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *