Mojo — это язык, сочетающий в себе читабельность Python со скоростью C++. Он полезен для разных целей: от низкоуровневого кода, близкого к аппаратному обеспечению, через дизайн Back-End API до мира Front-End и Интернета. Mojo достаточно мощный, чтобы масштабироваться по всему современному стеку. Язык также был разработан с учетом ИИ и машинного обучения, поэтому он будет особенно полезен для разработчиков ИИ и специалистов по обработке данных. Хотя Моджо еще молод. В экосистеме отсутствуют инструменты для повседневной разработки программного обеспечения, такие как работа в сети или базовые операции HTTP. Вот тут и прилетает . Лайтбаг 🔥🐝 — это простой HTTP-фреймворк, написанный на чистом Mojo, без внешних зависимостей по умолчанию. Он предназначен служить основой для более сложных проектов и позволяет разрабатывать веб-сервисы, такие как API, настраивать базовую маршрутизацию или даже обслуживать HTML-страницы с помощью Mojo, используя при этом преимущества этого языка, такие как статическая типизация и высокая производительность. . Lightbug 🔥🐝 Для начала просто и , затем клонируйте репозиторий Lightbug Github: установите Mojo Git git clone https://github.com/saviorand/lightbug_http.git После клонирования переключитесь на каталог в командной строке: cd lightbug_http Затем запустите сервер (да, это расширение файла Mojo! 🔥): mojo lightbug.🔥 Вы должны увидеть следующую строку, выведенную на консоль: 🔥🐝 Lightbug is listening on 0.0.0.0:8080 Ready to accept connections... Теперь вы можете начать отправлять запросы на свой сервер или попробовать открыть или в браузере — вы должны увидеть вводный экран. Добро пожаловать в Интернет в стиле Mojo! Теперь давайте перейдем к реальному кодированию. localhost:8080 0.0.0.0:8080 Хотя Lightbug еще молод, основные функциональные возможности, которые люди ожидают разработать для современной сети, уже существуют. Обратите внимание: поскольку менеджера пакетов пока нет, вам следует просто включить в качестве подпапки внутри вашего собственного проекта. Он будет работать как и позволит вам импортировать из Lightbug такие инструменты, как веб-примитивы, серверы и многое другое. lightbug_http пакет Mojo Например, добавьте это в начало файла, чтобы импортировать сервер: from lightbug_http.sys.server import SysServer Это позволит импортировать реализацию сервера в чистом Mojo. Если вы хотите использовать реализацию Python, вместо этого импортируйте . Это будет работать таким же образом. PythonServer Чтобы создать HTTP-сервис, просто создайте структуру, которая удовлетворяет , то есть имеет метод со следующей сигнатурой: свойству HTTPService func trait HTTPService: fn func(self, req: HTTPRequest) raises -> HTTPResponse: ... При этом используются встроенные примитивы для приема , выполнения любой пользовательской логики, которую вы пишете в Mojo или Python, и возврата объекта с некоторыми данными обратно потребителю API. HTTPRequest HTTPResponse Давайте создадим сервис, который выводит на консоль все запросы, отправленные на адрес . Для этого создайте файл с именем и вставьте следующее: 0.0.0.0:8080 my_awesome_service.🔥 from lightbug_http import * @value struct Printer(HTTPService): fn func(self, req: HTTPRequest) raises -> HTTPResponse: let body = req.body_raw print(String(body)) return OK(body) fn main() raises: var server = SysServer() let handler = Printer() server.listen_and_serve("0.0.0.0:8080", handler) Запустите и отправьте запрос на адрес от ваших любимых клиентов API, таких как или . Вы должны увидеть некоторые подробности запроса, выведенные на консоль. mojo my_awesome_service.🔥 0.0.0.0:8080 Insomnia Bruno Поздравляю! Теперь вы официально веб-разработчик Mojo 🔥. В этом примере мы инициализируем переменную с именем с помощью (это означает, что ее нельзя переназначить) и передаем ее в в качестве второго параметра для ясности. handler let listen_and_serve Добавлять декоратор необязательно: если вы опытный Mojician, вместо этого вы можете добавить . Это будет работать так же; просто автоматически генерирует этот и другие полезные методы. @value метод конструктора __init__ @value struct Printer(HTTPService): fn __init__(inout self): print("Printer initialized!") fn func(self, req: HTTPRequest) raises -> HTTPResponse: let body = req.body_raw print(String(body)) return OK(body) Вы можете сказать, но это только один маршрут! Современные API требуют гораздо большего. Lightbug также может выполнять базовую маршрутизацию: @value struct ExampleRouter(HTTPService): fn func(self, req: HTTPRequest) raises -> HTTPResponse: let body = req.body_raw let uri = req.uri() if uri.path() == "/": print("I'm on the index path!") if uri.path() == "/first": print("I'm on /first!") elif uri.path() == "/second": print("I'm on /second!") return OK(body) Добавьте это в свой и передайте его в качестве обработчика серверу: my_awesome_service.🔥 fn main() raises: var server = SysServer() let handler = ExampleRouter() server.listen_and_serve("0.0.0.0:8080", handler) Теперь вы можете открыть браузер и перейти по адресу , , чтобы увидеть изменения. localhost:8080/first localhost:8080/second Эта функциональность должна дать вам основу для разработки ваших собственных приложений, библиотек и сервисов, использующих HTTP, используя при этом преимущества гибкости и возможностей настройки, которые может предоставить облегченная платформа/набор инструментов, который представляет собой . lightbug_http В будущем мы планируем сделать маршрутизацию, а также другие задачи, такие как разработка и генерация API на основе спецификации OpenAPI, проектирование вашей модели данных и создание веб-приложений, еще более приятными за счет создания пакетов и . Подробности смотрите в нашей . lightbug_api lightbug_web дорожной карте Вот и все знакомство с ! Надеюсь, это было полезно. Lightbug 🔥🐝 Это некоммерческий общественный проект с открытым исходным кодом. Пожалуйста, поставьте лайк ⭐ нашему , присоединитесь к и узнайте, как внести свой вклад с помощью своего кода, чтобы мы могли сделать его еще лучше для других моджичан. репозиторию на Github Discord До следующего раза!