paint-brush
Lightbug 🔥🐝 – Das erste Mojo HTTP Frameworkvon@a2svior
4,746 Lesungen
4,746 Lesungen

Lightbug 🔥🐝 – Das erste Mojo HTTP Framework

von Valentin Erokhin5m2024/01/10
Read on Terminal Reader

Zu lang; Lesen

Mojo ist eine Sprache, die die Lesbarkeit von Python mit der Geschwindigkeit von C++ kombiniert. Es ist für verschiedene Dinge nützlich, von Low-Level-Code, der der Hardware nahe kommt, über das Back-End-API-Design bis hin zur Welt des Front-Ends und des Webs. Mojo ist leistungsstark genug, um über den gesamten modernen Stack zu skalieren.
featured image - Lightbug 🔥🐝 – Das erste Mojo HTTP Framework
Valentin Erokhin HackerNoon profile picture
0-item

Mojo ist eine Sprache, die die Lesbarkeit von Python mit der Geschwindigkeit von C++ kombiniert.


Es ist für verschiedene Dinge nützlich, von Low-Level-Code, der der Hardware nahe kommt, über das Back-End-API-Design bis hin zur Welt des Front-Ends und des Webs. Mojo ist leistungsstark genug, um über den gesamten modernen Stack zu skalieren. Die Sprache wurde auch im Hinblick auf KI und maschinelles Lernen entwickelt – daher ist sie besonders nützlich für KI-Entwickler und Datenwissenschaftler.


Mojo ist allerdings noch jung. Dem Ökosystem fehlen die Tools für die alltägliche Softwareentwicklung, wie Netzwerke oder grundlegende HTTP-Operationen.


Hier kommt Lightbug 🔥🐝 ins Spiel.


Lightbug 🔥🐝 ist ein einfaches HTTP-Framework, das in reinem Mojo geschrieben wurde und standardmäßig keine externen Abhängigkeiten aufweist. Es soll als Grundlage für komplexere Projekte dienen und ermöglicht es Ihnen, Webdienste wie APIs zu entwickeln, grundlegendes Routing einzurichten oder sogar HTML-Seiten mit Mojo bereitzustellen und gleichzeitig die Funktionen dieser Sprache wie statische Typisierung und hervorragende Leistung zu nutzen .


Um zu beginnen, installieren Sie einfach Mojo und Git und klonen Sie dann das Lightbug-Github-Repo:


 git clone https://github.com/saviorand/lightbug_http.git


Wechseln Sie nach dem Klonen in das Verzeichnis in Ihrer Befehlszeile:


 cd lightbug_http


Führen Sie dann den Server aus (ja, das ist die Mojo-Dateierweiterung! 🔥):


 mojo lightbug.🔥


Auf der Konsole sollte die folgende Zeile angezeigt werden:


 🔥🐝 Lightbug is listening on 0.0.0.0:8080 Ready to accept connections...


Jetzt können Sie damit beginnen, Anfragen an Ihren Server zu stellen oder versuchen, localhost:8080 oder 0.0.0.0:8080 im Browser zu öffnen – Sie sollten den Einführungsbildschirm sehen. Willkommen im Web im Mojo-Stil! Kommen wir nun zum echten Codieren.


Obwohl Lightbug noch jung ist, ist die Kernfunktionalität, die die Leute erwarten, für das moderne Web entwickeln zu können, bereits vorhanden.


Beachten Sie, dass Sie lightbug_http einfach als Unterordner in Ihr eigenes Projekt einfügen sollten, da es noch keinen Paketmanager gibt. Dies funktioniert als Mojo-Paket und ermöglicht Ihnen den Import von Tools wie Web-Primitiven, Servern und mehr von Lightbug.


Fügen Sie beispielsweise Folgendes oben in Ihre Datei ein, um den Server zu importieren:


 from lightbug_http.sys.server import SysServer


Dadurch wird eine Serverimplementierung in Pure Mojo importiert. Wenn Sie die Python-Implementierung verwenden möchten, importieren Sie stattdessen den PythonServer . Es wird auf die gleiche Weise funktionieren.


Um einen HTTP-Dienst zu erstellen, erstellen Sie einfach eine Struktur, die das HTTPService Merkmal erfüllt, was bedeutet, dass sie über eine func Methode mit der folgenden Signatur verfügt:


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


Dabei werden die integrierten Grundelemente verwendet, um ein HTTPRequest aufzunehmen, jede benutzerdefinierte Logik auszuführen, die Sie in Mojo oder Python schreiben, und ein HTTPResponse Objekt mit einigen Daten an den API-Konsumenten zurückzugeben.


Erstellen wir einen Dienst, der alle an 0.0.0.0:8080 gesendeten Anfragen an die Konsole druckt. Erstellen Sie dazu eine Datei mit dem Namen my_awesome_service.🔥 und fügen Sie Folgendes ein:


 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)


Führen Sie mojo my_awesome_service.🔥 aus und senden Sie die Anfrage von Ihren bevorzugten API-Clients wie Insomnia oder Bruno an 0.0.0.0:8080 . Sie sollten einige Details zu der auf der Konsole gedruckten Anfrage sehen.


Glückwunsch! Du bist jetzt offiziell ein Mojo-Webentwickler 🔥.


Im Beispiel initialisieren wir eine Variable namens handler mit let (was bedeutet, dass sie nicht erneut zugewiesen werden kann) und übergeben sie der Übersichtlichkeit halber als zweiten Parameter an listen_and_serve .


Das Hinzufügen eines @value Dekorators ist optional: Wenn Sie ein fortgeschrittener Mojicianer sind, können Sie stattdessen eine __init__ Konstruktormethode hinzufügen. Es wird genauso funktionieren; @value generiert diese und andere nützliche Methoden einfach automatisch.


 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)


Man könnte sagen, aber das ist nur eine Route! Moderne APIs erfordern viel mehr.


Lightbug kann auch einige grundlegende Routingfunktionen übernehmen:


 @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)


Fügen Sie dies zu Ihrem my_awesome_service.🔥 hinzu und übergeben Sie es als Handler an den Server:


 fn main() raises: var server = SysServer() let handler = ExampleRouter() server.listen_and_serve("0.0.0.0:8080", handler)


Sie können jetzt Ihren Browser öffnen und zu localhost:8080/first und localhost:8080/second gehen, um die Änderungen anzuzeigen.


Diese Funktionalität soll Ihnen eine Grundlage für die Entwicklung Ihrer eigenen Apps, Bibliotheken und Dienste bieten, die HTTP nutzen, und gleichzeitig die Flexibilität und Anpassungsoptionen nutzen, die ein leichtes Framework/Toolkit namens lightbug_http bieten kann.


Wir planen, das Routing sowie andere Aufgaben wie das Verfassen und Generieren von APIs aus einer OpenAPI-Spezifikation, das Entwerfen Ihres Datenmodells und das Erstellen von Webanwendungen in Zukunft noch angenehmer zu gestalten, indem wir die Pakete lightbug_api und lightbug_web erstellen. Weitere Informationen finden Sie in unserer Roadmap .


Das war's für eine Einführung in Lightbug 🔥🐝 ! Ich hoffe, es war nützlich.


Dies ist ein nichtkommerzielles Open-Source-Community-Projekt.


Bitte markieren Sie ⭐ unser Github-Repo , treten Sie dem Discord bei und sehen Sie sich an, wie Sie mit Ihrem Code einen Beitrag leisten können, damit wir ihn für die anderen Mojicianer noch besser machen können.


Bis zum nächsten Mal!