Pascal dili, uzun yıllardır masaüstü uygulamalarıyla anılan bir programlama dili olmasına rağmen, modern geliştiriciler artık onu arka uç sistemlerinde de kullanmanın yollarını arıyor. Horse framework’ü ve CrabPascal derleyici aracı sayesinde, Pascal kodlarınızdan doğrudan çalışabilir REST API’ler oluşturmak mümkün hale geliyor. Bu yaklaşım, Delphi ekosistemine hâkim geliştiriciler için hem tanıdık hem de son derece verimli bir çözüm sunuyor.
Horse Framework ve CrabPascal: Neden Bu Kombinasyon?
Horse framework’ü, HTTP isteklerini yönetmek, JSON verilerini işlemek ve middleware benzeri fonksiyonlar oluşturmak için tasarlanmış hafif bir araçtır. CrabPascal ise, bu framework’ü Pascal projelerinize entegre eden ve çalıştırılabilir REST sunucuları oluşturan bir runtime ortamı sağlıyor. Örneğin, aşağıdaki gibi basit bir API oluşturabilir ve doğrudan .dpr dosyanızdan çalıştırabilirsiniz:
- CRUD API örneği:
examples/crud/dizinindeki proje, tam teşekküllü bir ürün yönetim sistemi sunuyor. - Zaman sunucusu:
examples/time-server/dizinindeki proje, tarih ve saat bilgilerini döndüren basit bir API sağlıyor. - Kayıt defteri:
examples/agenda/dizinindeki proje, kişisel kayıtları yönetmek için kullanılabiliyor.
Tüm bu örnekler, CrabPascal’ın yerleşik runtime ortamı sayesinde herhangi bir ek derleyiciye (örneğin gcc) ihtiyaç duymadan çalıştırılabiliyor.
En Basit REST API Örneği
Aşağıdaki örnek, Pascal ile ne kadar basit bir REST API oluşturabileceğinizi gösteriyor. Bu API, /ping endpoint’ine yapılan istekleri yanıtlıyor:
program SimpleAPI;
uses Horse, System.JSON;
begin
THorse.Get('/ping', procedure(Req: THorseRequest; Res: THorseResponse; Next: TNextProc)
var J: TJSONObject;
begin
J := TJSONObject.Create;
J.AddPair('message', 'pong');
Res.Send(J.ToJSON);
end);
THorse.Listen(9000);
end.Bu kodu çalıştırmak için aşağıdaki komutları kullanabilirsiniz:
crab-pascal run SimpleAPI.dpr
curl Çıktı olarak şu yanıtı almanız gerekiyor:
{"message":"pong"}Gerçek Dünya Uygulaması: CRUD API
examples/crud/crud.dpr dosyasında yer alan proje, bir ürün yönetim sistemini simüle ediyor. Bu API, ürünlerin listelenmesi, eklenmesi, güncellenmesi ve silinmesi gibi temel CRUD işlemlerini destekliyor. Örneğin, ürünleri listelemek için kullanılan endpoint şu şekilde tanımlanıyor:
THorse.Get('/produtos', procedure(Req, Res, Next)
begin
Res.Send<TJSONObject>(TProdutoService.ListarProdutos);
end);Yeni bir ürün eklemek için kullanılan endpoint ise şu şekilde:
THorse.Post('/produtos', procedure(Req, Res, Next)
var json: TJSONObject;
begin
json := Req.Body<TJSONObject>;
Res.Send(TProdutoService.CriarProduto(
json.GetValue('nome').Value,
json.GetValue('categoria').Value,
StrToFloatDef(json.GetValue('preco').Value, 0),
StrToIntDef(json.GetValue('estoque').Value, 0)
));
end);Bu API’yi çalıştırmak için aşağıdaki komutları kullanabilirsiniz:
cd examples/crud
crab-pascal run crud.dprAPI’yi curl ile Test Etmek
API’nizi test etmek için curl komutlarını kullanabilirsiniz. Örneğin, tüm ürünleri listelemek için:
curl Yeni bir ürün eklemek için:
curl -X POST \
-H "Content-Type: application/json" \
-d '{"nome":"Notebook","categoria":"Eletrônicos","preco":3499.90,"estoque":10}'Belirli bir ürünü ID’sine göre almak için:
curl Postman ile API Geliştirme Deneyimini Yükseltmek
API’nizi geliştirirken Postman gibi araçlardan faydalanabilirsiniz. Örneğin, çalışan bir API’yi Postman’e aktararak daha kolay testler yapabilir ve API koleksiyonlarınızı saklayabilirsiniz. Bu sayede, regresyon testlerini otomatikleştirmek de mümkün hale geliyor. Mintlify belgelerinde, tüm örnek API’ler için hazırlanmış bir Postman koleksiyonu da bulunuyor.
Port Ayarlarını Yönetmek
Çoklu API’ler geliştirirken her birinin farklı portlarda çalışması gerekebilir. Bu durumda, CrabPascal’ın yapılandırma dosyası olan crabpascal.toml dosyasını kullanabilirsiniz. Örneğin, varsayılan portu 9000 olarak ayarlamak için:
[runtime]
default_http_port = 9000Bu ayar sayesinde, yerel geliştirme ortamınızda birden fazla API’yi aynı anda çalıştırabilirsiniz.
Kısıtlamalar ve Geleceğe Bakış
Horse framework’ünün CrabPascal üzerindeki desteği, temel rotalama ve JSON işleme özelliklerini kapsıyor. Delphi ekosistemindeki tüm middleware eklentilerinin kullanılabilmesi henüz mümkün değil. Ancak, yeni HTTP özellikleri hakkında sürekli güncellenen yayın notlarını takip etmek, projenizin ihtiyaçlarını karşılamasına yardımcı olacaktır. Pascal dilini kullanarak REST API geliştirmeyi öğrenmek veya hızlı prototipler oluşturmak isteyenler için mevcut örnekler oldukça faydalı.
Pascal, Horse ve CrabPascal’in birleşimi, Delphi geliştiricilerine hem tanıdık hem de güçlü bir arka uç geliştirme deneyimi sunuyor. Tüm bu araçların bir arada kullanılmasıyla, sadece birkaç satır kodla tam teşekküllü REST API’ler oluşturmak mümkün hale geliyor. Geliştirmeye examples/crud/ dizinindeki örneklerle başlayabilir, ardından kendi API’nizi oluşturabilirsiniz.
Yapay zeka özeti
Pascal dilinde REST API geliştirmeye meraklı mısınız? Horse framework ve CrabPascal ile sıfırdan API oluşturarak backend geliştirmenin inceliklerini keşfedin.