Mojo est un langage qui combine la lisibilité de Python avec la rapidité du C++. Il est utile pour différentes choses, du code de bas niveau proche du matériel, en passant par la conception de l'API Back-End, jusqu'au monde du Front-End et du Web. Mojo est suffisamment puissant pour s'adapter à l'ensemble de la pile moderne. Le langage a également été conçu en pensant à l’IA et au Machine Learning – il sera donc particulièrement utile pour les développeurs d’IA et les Data Scientists. Mojo est encore jeune. L'écosystème manque des outils nécessaires au développement de logiciels quotidiens, comme la mise en réseau ou les opérations HTTP de base. C'est ici que arrive. Lightbug 🔥🐝 est un framework HTTP simple écrit en pur Mojo, sans dépendances externes par défaut. Il est destiné à servir de base à des projets plus complexes et permet de développer des services Web comme des API, de mettre en place un routage de base ou même de servir des pages HTML avec Mojo, tout en profitant des fonctionnalités de ce langage, comme le typage statique et d'excellentes performances. . Lightbug 🔥🐝 Pour commencer, et , puis clonez le dépôt Lightbug Github : installez simplement Mojo Git git clone https://github.com/saviorand/lightbug_http.git Une fois cloné, basculez vers le répertoire dans votre ligne de commande : cd lightbug_http Ensuite, lancez le serveur (oui, c'est l'extension du fichier Mojo ! 🔥) : mojo lightbug.🔥 Vous devriez voir la ligne suivante imprimée sur la console : 🔥🐝 Lightbug is listening on 0.0.0.0:8080 Ready to accept connections... Maintenant, vous pouvez commencer à faire des requêtes à votre serveur ou essayer d'ouvrir ou dans le navigateur — vous devriez voir l'écran d'introduction. Bienvenue sur le Web, à la manière de Mojo ! Passons maintenant au vrai codage. localhost:8080 0.0.0.0:8080 Bien que Lightbug soit encore jeune, les fonctionnalités de base que les gens s'attendent à pouvoir développer pour le Web moderne sont déjà là. Notez que comme il n'y a pas encore de gestionnaire de paquets, vous devez simplement inclure comme sous-dossier dans votre propre projet. Cela fonctionnera comme un et vous permettra d'importer des outils tels que des primitives Web, des serveurs et bien plus encore depuis Lightbug. lightbug_http package Mojo Par exemple, ajoutez ceci en haut de votre fichier pour importer le serveur : from lightbug_http.sys.server import SysServer Cela importera une implémentation de serveur en pur Mojo. Si vous souhaitez utiliser l'implémentation Python, importez plutôt le . Cela fonctionnera de la même manière. PythonServer Pour créer un service HTTP, créez simplement une structure qui satisfait au , ce qui signifie qu'elle possède une méthode avec la signature suivante : trait HTTPService func trait HTTPService: fn func(self, req: HTTPRequest) raises -> HTTPResponse: ... Cela utilise les primitives intégrées pour intégrer un , exécuter toute logique personnalisée que vous écrivez dans Mojo ou Python et renvoyer un objet avec certaines données au consommateur de l'API. HTTPRequest HTTPResponse Créons un service qui imprime toutes les requêtes envoyées à sur la console. Pour ce faire, créez un fichier appelé et collez ce qui suit : 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) Exécutez et envoyez la requête à à partir de vos clients API préférés, comme ou . Vous devriez voir quelques détails sur la demande imprimés sur la console. mojo my_awesome_service.🔥 0.0.0.0:8080 Insomnia Bruno Bravo! Vous êtes désormais officiellement développeur web Mojo 🔥. Dans l'exemple, nous initialisons une variable appelée avec (ce qui signifie qu'elle ne peut pas être réaffectée) et la transmettons à comme deuxième paramètre pour plus de clarté. handler let listen_and_serve L'ajout d'un décorateur est facultatif : si vous êtes un Mojicien avancé, vous pouvez ajouter une à la place. Cela fonctionnera de la même manière ; génère simplement cette méthode et d'autres méthodes utiles automatiquement. @value méthode constructeur __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) Vous me direz peut-être, mais ce n'est qu'un itinéraire ! Les API modernes nécessitent bien plus que cela. Lightbug peut également effectuer un routage de base : @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) Ajoutez ceci à votre et transmettez-le en tant que gestionnaire au serveur : my_awesome_service.🔥 fn main() raises: var server = SysServer() let handler = ExampleRouter() server.listen_and_serve("0.0.0.0:8080", handler) Vous pouvez maintenant ouvrir votre navigateur et accéder à , pour voir les modifications. localhost:8080/first localhost:8080/second Cette fonctionnalité devrait vous donner une base pour développer vos propres applications, bibliothèques et services qui utilisent HTTP, tout en profitant de la flexibilité et des options de personnalisation qu'un framework/boîte à outils léger qu'est peut fournir. lightbug_http Nous prévoyons de rendre le routage, ainsi que d'autres tâches telles que la création et la génération d'API à partir d'une spécification OpenAPI, la conception de votre modèle de données et la création d'applications Web encore plus agréables à l'avenir en créant des packages et . Consultez notre pour plus de détails. lightbug_api lightbug_web feuille de route Voilà pour une introduction à ! J'espère que cela a été utile. Lightbug 🔥🐝 Il s'agit d'un projet communautaire open source et non commercial. Veuillez mettre en vedette ⭐ notre , rejoindre le et découvrir comment contribuer avec votre code, afin que nous puissions le rendre encore meilleur pour les autres Mojiciens. dépôt Github Discord À la prochaine fois !