Mojo é uma linguagem que combina a legibilidade do Python com a velocidade do C++. É útil para diferentes coisas, desde código de baixo nível próximo ao hardware, passando pelo design da API de back-end, até o mundo do Front-End e da Web. Mojo é poderoso o suficiente para escalar toda a pilha moderna. A linguagem também foi projetada tendo em mente a IA e o aprendizado de máquina – portanto, será particularmente útil para desenvolvedores de IA e cientistas de dados. Mojo ainda é jovem. O ecossistema tem perdido as ferramentas para o desenvolvimento diário de software, como redes ou operações HTTP básicas. É aqui que entra voando. o Lightbug 🔥🐝 é um framework HTTP simples escrito em Mojo puro, sem dependências externas por padrão. Ele serve de base para projetos mais complexos e permite desenvolver serviços Web como APIs, configurar roteamento básico ou até mesmo servir páginas HTML com Mojo, aproveitando os recursos dessa linguagem, como digitação estática e ótimo desempenho. . Lightbug 🔥🐝 Para começar, basta e e clonar o repositório Lightbug Github: instalar o Mojo o Git git clone https://github.com/saviorand/lightbug_http.git Depois de clonado, mude para o diretório na linha de comando: cd lightbug_http Em seguida, execute o servidor (sim, essa é a extensão do arquivo Mojo! 🔥): mojo lightbug.🔥 Você deverá ver a seguinte linha impressa no console: 🔥🐝 Lightbug is listening on 0.0.0.0:8080 Ready to accept connections... Agora, você pode começar a fazer solicitações ao seu servidor ou tentar abrir ou no navegador – você deverá ver a tela de introdução. Bem-vindo à Web, estilo Mojo! Agora, vamos passar para a codificação real. localhost:8080 0.0.0.0:8080 Embora o Lightbug ainda seja jovem, a funcionalidade central que as pessoas esperam poder desenvolver para a Web moderna já existe. Observe que como ainda não existe um gerenciador de pacotes, você deve simplesmente incluir como uma subpasta dentro do seu próprio projeto. Isso funcionará como um e permitirá importar ferramentas como web primitivas, servidores e muito mais do Lightbug. lightbug_http pacote Mojo Por exemplo, adicione isto ao topo do seu arquivo para importar o servidor: from lightbug_http.sys.server import SysServer Isto irá importar uma implementação de servidor em Mojo puro. Se você quiser usar a implementação do Python, importe o . Funcionará da mesma maneira. PythonServer Para criar um serviço HTTP, basta criar uma estrutura que satisfaça o , o que significa que possui um método com a seguinte assinatura: traço HTTPService func trait HTTPService: fn func(self, req: HTTPRequest) raises -> HTTPResponse: ... Isso usa os primitivos integrados para receber um , executar qualquer lógica personalizada que você escrever em Mojo ou Python e retornar um objeto com alguns dados de volta ao consumidor da API. HTTPRequest HTTPResponse Vamos fazer um serviço que imprima todas as solicitações enviadas para para o console. Para fazer isso, crie um arquivo chamado e cole o seguinte: 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) Execute e envie a solicitação para de seus clientes de API favoritos, como ou . Você deverá ver alguns detalhes sobre a solicitação impressa no console. mojo my_awesome_service.🔥 0.0.0.0:8080 Insomnia Bruno Parabéns! Você é oficialmente um desenvolvedor web Mojo agora 🔥. No exemplo, inicializamos uma variável chamada com (o que significa que ela não pode ser reatribuída) e a passamos para como um segundo parâmetro para maior clareza. handler let listen_and_serve Adicionar um decorador é opcional: se você for um Mojiciano avançado, poderá adicionar um . Funcionará da mesma forma; apenas gera este e outros métodos úteis automaticamente. @value método construtor __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) Você pode dizer, mas esse é apenas um caminho! As APIs modernas exigem muito mais do que isso. Lightbug também pode fazer alguns roteamentos básicos: @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) Adicione isso ao seu e passe-o como um manipulador para o servidor: my_awesome_service.🔥 fn main() raises: var server = SysServer() let handler = ExampleRouter() server.listen_and_serve("0.0.0.0:8080", handler) Agora você pode abrir seu navegador e ir para , para ver as alterações. localhost:8080/first localhost:8080/second Essa funcionalidade deve fornecer uma base para desenvolver seus próprios aplicativos, bibliotecas e serviços que fazem uso de HTTP, aproveitando ao mesmo tempo a flexibilidade e as opções de personalização que uma estrutura/kit de ferramentas leve que é o pode fornecer. lightbug_http Planejamos tornar o roteamento, bem como outras tarefas como autoria e geração de APIs a partir de uma especificação OpenAPI, projetar seu modelo de dados e construir aplicativos da web ainda mais agradáveis no futuro, construindo pacotes e . Confira nosso para obter detalhes. lightbug_api lightbug_web Roteiro É isso para uma introdução ao ! Espero que tenha sido útil. Lightbug 🔥🐝 Este é um projeto comunitário de código aberto e não comercial. Marque ⭐ nosso , entre no e veja como contribuir com seu código, para que possamos torná-lo ainda melhor para os colegas Mojicianos. repositório no Github Discord Até a próxima!