Clojure ile Örnek Web Uygulaması — Bölüm 1
Clojure’un dinamik ve esnek yapısı sayesinde JVM (Java Virtual Machine) üzerinde web uygulamaları geliştirmek bir hayli hızlı ve eğlenceli. Yazının sonunda Clojure ile ilgili birçok kaynağı sağladım.
Gerekli Uygulamalar
Proje Oluşturma
Terminalde projeyi kurmak istediğiniz dizine gidin ve alttaki komutu çalıştırınız. (Bendeki dizin ~/IdeaProjects)
lein new app clj-web-app
Dependencies (Bağımlılıklar)
İşlem bittikten sonra Leiningen birçok dosya ve klasör oluşturacaktır, project.clj dosyasını açıp görseldeki gibi eklemeleri yapalım.
- Ring, Clojure için HTTP server abstraction sağlıyor içinde Jetty Adaptörü ile birlikte geliyor. (Tabii Jetty yerine istediğiniz Web sunucusunu kullanabilirsiniz.)
- Patika, Routing ve RESTful yapısı sağlayan bir kütüphane. Kendim yaptım diye söylemiyorum ama çok temiz bir arayüze sahiptir :)
- :main, Leiningen’in uygulamayı çalıştırabilmesi için -main fonksiyonunun bulunduğu namespace.
Sunucu ve Servisleri Oluşturma
Şimdi /src/clj_web_app/core.clj dosyasına gidelim ve aşağıdaki kodu ekleyelim.
Neler yaptık?
- home, GET HTTP metoduna ve “/” path’ine sahip, geriye HTML döndüren bir servis
- users, GET HTTP metoduna ve “/users” path’ine sahip, geriye kullanıcıları JSON formatında döndüren bir servis
- print-request, GET HTTP metoduna ve “/print-request” path’ine sahip, geriye Request (Hash-Map veri türünde) bilgisini PLAIN/TEXT formatında döndüren bir servis
- handler, tüm routeların olduğu değişken. :resource-ns-path, src/clj_web_app dizini altındaki namespace’leri tarar ve tüm resource’ları bulup döndürür
- Son olarak da Jetty Web sunucusunu ve uygulamayı çalıştıran -main fonksiyonunu oluşturduk.
Final
Uygulamayı çalıştırmak için proje dizininde alttaki komutu çalıştırın
lein run
Uygulamamız http://localhost:3000'de ayağa kalmış olacaktır.
Bir sonraki bölümde Middleware konusunu ele alıp, web uygulamamızı bir sonraki seviyeye taşıdım. Sıkılmayıp yazımı buraya kadar takip ettiğiniz için teşekkür ederim.
Örnekteki koda GitHub reposundan erişebilirsiniz.
Clojure Kaynakları
- https://learnxinyminutes.com/docs/clojure/
- https://www.clojurenewbieguide.com/
- https://www.braveclojure.com/clojure-for-the-brave-and-true/
- Clojurecademy (Benim yazdığım bir platform)