paint-brush
Lightbug 🔥🐝- İlk Mojo HTTP Çerçevesiby@a2svior
3,530
3,530

Lightbug 🔥🐝- İlk Mojo HTTP Çerçevesi

Valentin Erokhin5m2024/01/10
Read on Terminal Reader

Mojo, Python'un okunabilirliğini C++ hızıyla birleştiren bir dildir. Donanıma yakın düşük seviyeli kodlardan, Back-End API tasarımı aracılığıyla Front-End ve Web dünyasına kadar farklı şeyler için faydalıdır. Mojo, tüm modern yığına ölçeklenebilecek kadar güçlüdür.
featured image - Lightbug 🔥🐝- İlk Mojo HTTP Çerçevesi
Valentin Erokhin HackerNoon profile picture
0-item

Mojo, Python'un okunabilirliğini C++ hızıyla birleştiren bir dildir.


Donanıma yakın düşük seviyeli kodlardan, Back-End API tasarımı aracılığıyla Front-End ve Web dünyasına kadar farklı şeyler için faydalıdır. Mojo, tüm modern yığına ölçeklenebilecek kadar güçlüdür. Dil aynı zamanda Yapay Zeka ve Makine Öğrenimi göz önünde bulundurularak tasarlanmıştır; bu nedenle özellikle Yapay Zeka geliştiricileri ve Veri Bilimcileri için yararlı olacaktır.


Mojo hala genç. Ekosistemde, ağ oluşturma veya temel HTTP işlemleri gibi günlük yazılım geliştirmeye yönelik araçlar eksik.


Lightbug 🔥🐝'nin uçtuğu yer burasıdır.


Lightbug 🔥🐝, varsayılan olarak hiçbir dış bağımlılığı olmayan, saf Mojo ile yazılmış basit bir HTTP çerçevesidir. Daha karmaşık projeler için bir temel oluşturması amaçlanmıştır ve bu dilin statik yazma ve mükemmel performans gibi özelliklerinden yararlanırken API'ler gibi Web hizmetleri geliştirmenize, temel yönlendirmeyi ayarlamanıza ve hatta Mojo ile HTML sayfaları sunmanıza olanak tanır. .


Başlamak için Mojo ve Git'i yükleyin, ardından Lightbug Github deposunu klonlayın:


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


Klonlandıktan sonra komut satırınızdaki dizine geçin:


 cd lightbug_http


Ardından sunucuyu çalıştırın (evet, bu Mojo dosya uzantısıdır! 🔥):


 mojo lightbug.🔥


Konsola yazdırılan aşağıdaki satırı görmelisiniz:


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


Artık sunucunuza istekte bulunmaya başlayabilir veya tarayıcıda localhost:8080 veya 0.0.0.0:8080 açmayı deneyebilirsiniz; giriş ekranını görmelisiniz. Mojo tarzı Web'e hoş geldiniz! Şimdi gerçek kodlamaya geçelim.


Lightbug hâlâ genç olsa da, insanların modern Web için geliştirmeyi beklediği temel işlevsellik zaten mevcut.


Henüz bir paket yöneticisi olmadığından, lightbug_http kendi projenizin içine bir alt klasör olarak eklemeniz gerektiğini unutmayın. Bu bir Mojo paketi olarak çalışacak ve web temelleri, sunucular ve daha fazlası gibi araçları Lightbug'dan içe aktarmanıza olanak tanıyacak.


Örneğin, sunucuyu içe aktarmak için bunu dosyanızın en üstüne ekleyin:


 from lightbug_http.sys.server import SysServer


Bu, saf Mojo'da bir sunucu uygulamasını içe aktaracaktır. Python uygulamasını kullanmak istiyorsanız bunun yerine PythonServer içe aktarın. Aynı şekilde çalışacaktır.


Bir HTTP hizmeti oluşturmak için, HTTPService özelliğini karşılayan bir yapı oluşturmanız yeterlidir; bu, aşağıdaki imzaya sahip bir func yöntemine sahip olduğu anlamına gelir:


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


Bu, bir HTTPRequest almak, Mojo veya Python'da yazdığınız herhangi bir özel mantığı yürütmek ve bazı verileri içeren bir HTTPResponse nesnesini API tüketicisine geri döndürmek için yerleşik temelleri kullanır.


0.0.0.0:8080 gönderilen tüm istekleri konsola yazdıran bir servis yapalım. Bunu yapmak için my_awesome_service.🔥 adında bir dosya oluşturun ve aşağıdakileri yapıştırın:


 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)


mojo my_awesome_service.🔥 çalıştırın ve Insomnia veya Bruno gibi favori API istemcilerinizden isteği 0.0.0.0:8080 gönderin. Konsola yazdırılan istekle ilgili bazı ayrıntıları görmelisiniz.


Tebrikler! Artık resmi olarak bir Mojo web geliştiricisisiniz 🔥.


Örnekte, handler adı verilen bir değişkeni let ile başlatıyoruz (yani yeniden atanamayacağı anlamına gelir) ve netlik sağlamak için onu ikinci bir parametre olarak listen_and_serve aktarıyoruz.


@value dekoratörü eklemek isteğe bağlıdır: Eğer ileri düzey bir Mojici iseniz, bunun yerine __init__ yapıcı yöntemini ekleyebilirsiniz. Aynı şekilde çalışacaktır; @value yalnızca bunu ve diğer yararlı yöntemleri otomatik olarak oluşturur.


 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)


Diyebilirsiniz ama bu sadece bir yol! Modern API'ler bundan çok daha fazlasını gerektirir.


Lightbug ayrıca bazı temel yönlendirmeleri de yapabilir:


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


Bunu my_awesome_service.🔥 dosyanıza ekleyin ve işleyici olarak sunucuya iletin:


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


Artık tarayıcınızı açabilir ve değişiklikleri görmek için localhost:8080/first , localhost:8080/second adresine gidebilirsiniz.


Bu işlevsellik size, lightbug_http gibi hafif bir çerçevenin/araç setinin sağlayabileceği esneklik ve özelleştirme seçeneklerinden yararlanırken, HTTP'yi kullanan kendi uygulamalarınızı, kitaplıklarınızı ve hizmetlerinizi geliştirmeniz için bir temel sağlamalıdır.


lightbug_api ve lightbug_web paketleri oluşturarak yönlendirmenin yanı sıra bir OpenAPI belirtiminden API'ler yazma ve oluşturma, veri modelinizi tasarlama ve web uygulamaları oluşturma gibi diğer görevleri gelecekte daha da keyifli hale getirmeyi planlıyoruz. Ayrıntılar için Yol Haritamıza göz atın.


Lightbug'a giriş bu kadar 🔥🐝 ! Umarım faydalı olmuştur.


Bu açık kaynaklı, ticari olmayan bir topluluk projesidir.


Lütfen Github depomuza ⭐ yıldız ekleyin, Discord'a katılın ve kodunuzla nasıl katkıda bulunacağınızı kontrol edin, böylece bunu Mojici dostlarımız için daha da iyi hale getirebiliriz.


Bir dahaki sefere kadar!