paint-brush
Lightbug 🔥🐝- El primer marco HTTP de Mojoby@a2svior
3,536
3,536

Lightbug 🔥🐝- El primer marco HTTP de Mojo

Valentin Erokhin5m2024/01/10
Read on Terminal Reader

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.
featured image - Lightbug 🔥🐝- El primer marco HTTP de Mojo
Valentin Erokhin HackerNoon profile picture
0-item

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 🔥🐝 .


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. .


Para comenzar, simplemente instale Mojo y Git , luego clone el repositorio de Lightbug Github:


 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 localhost:8080 o 0.0.0.0:8080 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.


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 lightbug_http como una subcarpeta dentro de su propio proyecto. Esto funcionará como un paquete Mojo y le permitirá importar herramientas como primitivas web, servidores y más desde Lightbug.


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 PythonServer en su lugar. Funcionará de la misma manera.


Para crear un servicio HTTP, simplemente cree una estructura que satisfaga el rasgo HTTPService , lo que significa que tiene un método func con la siguiente firma:


 trait HTTPService: fn func(self, req: HTTPRequest) raises -> HTTPResponse: ...


Esto utiliza las primitivas integradas para recibir una HTTPRequest , ejecutar cualquier lógica personalizada que escriba en Mojo o Python y devolver un objeto HTTPResponse con algunos datos al consumidor de API.


Creemos un servicio que imprima todas las solicitudes enviadas a 0.0.0.0:8080 en la consola. Para hacer esto, cree un archivo llamado my_awesome_service.🔥 y pegue lo siguiente:


 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 mojo my_awesome_service.🔥 y envíe la solicitud a 0.0.0.0:8080 desde sus clientes API favoritos, como Insomnia o Bruno . Debería ver algunos detalles sobre la solicitud impresos en la consola.


¡Felicitaciones! Ahora eres oficialmente un desarrollador web de Mojo 🔥.


En el ejemplo, inicializamos una variable llamada handler con let (lo que significa que no se puede reasignar) y la pasamos a listen_and_serve como segundo parámetro para mayor claridad.


Agregar un decorador @value es opcional: si eres un Mojician avanzado, puedes agregar un método constructor __init__ en su lugar. Funcionará igual; @value simplemente genera este y otros métodos útiles automáticamente.


 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 my_awesome_service.🔥 y páselo como controlador al servidor:


 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 localhost:8080/first , localhost:8080/second para ver los cambios.


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 lightbug_api y lightbug_web . Consulte nuestra hoja de ruta para obtener más detalles.


¡Eso es todo para una introducción a Lightbug 🔥🐝 ! Espero que haya sido útil.


Este es un proyecto comunitario de código abierto y no comercial.


Destaca ⭐ nuestro repositorio de Github , únete a Discord y descubre cómo contribuir con tu código, para que podamos hacerlo aún mejor para los compañeros mojicianos.


¡Hasta la próxima!