Mojo es un lenguaje que combina la legibilidad de Python con la velocidad de C++. Es útil para diferentes cosas, desde código de bajo nivel cercano al hardware, pasando por el diseño de API Back-End, hasta el mundo de Front-End y la Web. Mojo es lo suficientemente potente como para escalar a toda la pila moderna. El lenguaje también se diseñó teniendo en cuenta la IA y el aprendizaje automático, por lo que será especialmente útil para los desarrolladores de IA y los científicos de datos. Sin embargo, Mojo todavía es joven. Al ecosistema le han faltado las herramientas para el desarrollo de software cotidiano, como redes u operaciones HTTP básicas. Aquí es donde entra . Lightbug 🔥🐝 es un marco HTTP simple escrito en Mojo puro, sin dependencias externas de forma predeterminada. Está destinado a servir como base para proyectos más complejos y le permite desarrollar servicios web como API, configurar enrutamiento básico o incluso servir páginas HTML con Mojo, mientras aprovecha las características de este lenguaje, como la escritura estática y un excelente rendimiento. . Lightbug 🔥🐝 Para comenzar, simplemente y , luego clone el repositorio de Lightbug Github: instale Mojo Git git clone https://github.com/saviorand/lightbug_http.git Una vez clonado, cambie al directorio en su línea de comando: cd lightbug_http Luego ejecute el servidor (sí, ¡esa es la extensión de archivo Mojo! 🔥): mojo lightbug.🔥 Deberías ver la siguiente línea impresa en la consola: 🔥🐝 Lightbug is listening on 0.0.0.0:8080 Ready to accept connections... Ahora, puede comenzar a realizar solicitudes a su servidor o intentar abrir o en el navegador; debería ver la pantalla de introducción. ¡Bienvenido a la Web, al estilo Mojo! Ahora, pasemos a la codificación real. localhost:8080 0.0.0.0:8080 Si bien Lightbug aún es joven, la funcionalidad central que la gente espera poder desarrollar para la Web moderna ya está disponible. Tenga en cuenta que, dado que todavía no existe un administrador de paquetes, simplemente debe incluir como una subcarpeta dentro de su propio proyecto. Esto funcionará como un y le permitirá importar herramientas como primitivas web, servidores y más desde Lightbug. lightbug_http paquete Mojo Por ejemplo, agregue esto al principio de su archivo para importar el servidor: from lightbug_http.sys.server import SysServer Esto importará una implementación de servidor en Mojo puro. Si desea utilizar la implementación de Python, importe en su lugar. Funcionará de la misma manera. PythonServer Para crear un servicio HTTP, simplemente cree una estructura que satisfaga el , lo que significa que tiene un método con la siguiente firma: rasgo HTTPService func trait HTTPService: fn func(self, req: HTTPRequest) raises -> HTTPResponse: ... Esto utiliza las primitivas integradas para recibir una , ejecutar cualquier lógica personalizada que escriba en Mojo o Python y devolver un objeto con algunos datos al consumidor de API. HTTPRequest HTTPResponse Creemos un servicio que imprima todas las solicitudes enviadas a en la consola. Para hacer esto, cree un archivo llamado y pegue lo siguiente: 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) Ejecute y envíe la solicitud a desde sus clientes API favoritos, como o . Debería ver algunos detalles sobre la solicitud impresos en la consola. mojo my_awesome_service.🔥 0.0.0.0:8080 Insomnia Bruno ¡Felicitaciones! Ahora eres oficialmente un desarrollador web de Mojo 🔥. En el ejemplo, inicializamos una variable llamada con (lo que significa que no se puede reasignar) y la pasamos a como segundo parámetro para mayor claridad. handler let listen_and_serve Agregar un decorador es opcional: si eres un Mojician avanzado, puedes agregar un en su lugar. Funcionará igual; simplemente genera este y otros métodos útiles automáticamente. @value método constructor __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) Se podría decir, ¡pero esa es sólo una ruta! Las API modernas requieren mucho más que eso. Lightbug también puede realizar algunas rutas básicas: @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) Agregue esto a su y páselo como controlador al servidor: my_awesome_service.🔥 fn main() raises: var server = SysServer() let handler = ExampleRouter() server.listen_and_serve("0.0.0.0:8080", handler) Ahora puede abrir su navegador e ir a , para ver los cambios. localhost:8080/first localhost:8080/second Esta funcionalidad debería brindarle una base para desarrollar sus propias aplicaciones, bibliotecas y servicios que utilicen HTTP, mientras aprovecha la flexibilidad y las opciones de personalización que puede proporcionar un marco/kit de herramientas liviano como . lightbug_http Planeamos hacer que el enrutamiento, así como otras tareas como la creación y generación de API a partir de una especificación OpenAPI, el diseño de su modelo de datos y la creación de aplicaciones web, sean aún más agradables en el futuro mediante la creación de paquetes y . Consulte nuestra para obtener más detalles. lightbug_api lightbug_web hoja de ruta ¡Eso es todo para una introducción a ! Espero que haya sido útil. Lightbug 🔥🐝 Este es un proyecto comunitario de código abierto y no comercial. Destaca ⭐ nuestro , únete a y descubre cómo contribuir con tu código, para que podamos hacerlo aún mejor para los compañeros mojicianos. repositorio de Github Discord ¡Hasta la próxima!