Geliştiricilerin PostgreSQL veritabanları üzerinde RESTful API'ler oluşturmak için ne kadar zaman harcadığını hiç düşündünüz mü? Bu genellikle CRUD işlemleri için tekrar eden kod yazmayı, sorguları yönetmeyi ve güvenliği sağlamayı içerir; bu görevler proje hızınızı yavaşlatabilir. İşte PostgREST API'nin devreye girdiği yer burasıdır; veritabanınızı minimum çabayla kullanıma hazır bir API'ye dönüştüren modern bir alternatif sunar. Bu kapsamlı rehberde, PostgREST API'yi temel kavramlarından uygulamasına kadar derinlemesine inceleyeceğiz. İster geliştirmeyi hızlandırmak isteyen bir arka uç mühendisi olun, ister verimlilik arayan bir tam yığın geliştirici olun, PostgREST API'de ustalaşmak iş akışınızı dönüştürebilir.
Bu konuyu birlikte incelerken, pratik deneyimlerden edindiğim bilgileri paylaşacağım ve her bölümün bir öncekinin üzerine mantıksal olarak inşa edilmesini sağlayacağım. Sonunda, PostgREST API'yi bir sonraki projenize entegre etmeye hazır hissedeceksiniz. Temel bilgilerle başlayalım.
Geliştirici Ekibinizin maksimum üretkenlikle birlikte çalışması için entegre, Hepsi Bir Arada bir platform mu istiyorsunuz?
Apidog tüm taleplerinizi karşılar ve Postman'ı çok daha uygun bir fiyata değiştirir!
PostgREST API Nedir? Genel Bakış
PostgREST API, PostgreSQL veritabanınızı otomatik olarak tam işlevli bir RESTful web hizmeti olarak sunan bağımsız bir araçtır. Beowulf tarafından geliştirilen bu araç, PostgreSQL'in sorgu dili (SQL) gücünden yararlanarak HTTP uç noktalarını dinamik olarak oluşturur ve çoğu durumda özel sunucu tarafı mantığına olan ihtiyacı ortadan kaldırır. Özünde, PostgREST API, veritabanı şemalarını, tabloları, görünümleri ve saklı yordamları API kaynakları olarak yorumlar ve GET, POST, PUT ve DELETE gibi standart HTTP yöntemleri aracılığıyla oluşturma, okuma, güncelleme ve silme (CRUD) işlemleri yapmanıza olanak tanır.
PostgREST API'yi özellikle cazip kılan şey, REST ilkelerine bağlı kalırken, ayrıntılı erişim kontrolü için Satır Düzeyi Güvenliği (RLS) gibi gelişmiş PostgreSQL özelliklerini içermesidir. Örneğin, URL parametrelerini kullanarak filtreler, sıralama ve sayfalama ile veri sorgulayabilirsiniz; ek bir ara katmana gerek yoktur. Bu yaklaşım yalnızca kod karmaşıklığını azaltmakla kalmaz, aynı zamanda API'nizin veritabanı değişiklikleriyle otomatik olarak senkronize kalmasını da sağlar.
ORM'ler ve API çerçevelerinin hakim olduğu bir ortamda, PostgREST API "veritabanı öncelikli" felsefesiyle öne çıkıyor. Kutudan çıktığı haliyle OpenAPI (Swagger) dokümantasyonunu destekleyerek, Apidog veya Swagger UI gibi araçlarla entegrasyon için geliştirici dostu bir yapı sunar. Analiz panoları, mobil arka uçlar veya mikro hizmetler gibi veri yoğun uygulamaları yönetiyorsanız, PostgREST API, PostgreSQL'in sağlamlığıyla ölçeklenebilen hafif ve performanslı bir çözüm sunar. İlerledikçe, bu API'nin veri katmanınız ile istemci uygulamalarınız arasındaki boşluğu sorunsuz bir şekilde nasıl köprülediğini göreceksiniz.

PostgREST API'ye Başlarken: Kurulum ve Ayarlar
PostgREST API ile çalışmaya başlamak, temel olarak bir PostgreSQL örneği gerektirir. Neyse ki, kurulum özellikle bağımlılıkları izole eden ve dağıtımı basitleştiren Docker gibi konteynerleştirme araçları kullanıldığında oldukça basittir. İşletim sisteminiz (macOS, Windows veya Linux) için resmi web sitesinden indirerek makinenizde Docker Desktop'ın kurulu olduğundan emin olarak başlayın.

Docker hazır olduğunda, gerekli imajları çekin. Docker Desktop'ı açın, arama çubuğuna gidin ve API sunucusu için "postgrest/postgrest" imajını kurun. Benzer şekilde,

PostgreSQL veritabanınızı görsel olarak yönetmek için "dpage/pgadmin4" araması yapın ve kurun.

ve hafif bir PostgreSQL konteyneri için "postgres:alpine" aratıp kurun. Bu bileşenler PostgREST API'nin etrafındaki ekosistemi oluşturur.
Terminal aracılığıyla manuel bir PostgreSQL kurulumu için (Önerilen), bir konteyneri çalıştırmak üzere aşağıdaki komutu uygulayın:
docker run --name postgres-1 -e POSTGRES_PASSWORD=password -d -p 5431:5432 postgres:alpine
Burada, "password" değerini güvenli bir değerle değiştirin. Komut, PostgreSQL'i 5431 numaralı bağlantı noktasında başlatır ve dahili 5432'ye eşler. Başarılı olduğunda, Docker bir konteyner kimliği (uzun alfanümerik bir dize) döndürür; doğrulama için bunu not alın. Konteynerin durumunu onaylamak için docker ps komutunu çalıştırın.

PostgREST API yapılandırması için çok önemli olan kullanıcı rollerini doğrulamak için konteyner kabuğuna girin:
docker exec -it <container_id> sh
<container_id> yerine kendi kimliğinizi veya konteyner adınızı yazın. Kabuk içinde PostgreSQL'e bağlanın:
psql -U postgres -d postgres
("postgres" varsayılan kullanıcı olarak kabul edilmiştir; özelleştirilmişse ayarlayın. Benimki username olarak değiştirildiği gibi.) Ardından, \du ile rolleri listeleyin. "postgres" veya özel olanlar gibi rol adlarını içeren bu çıktıya daha sonra başvurulacaktır. Burada ek kullanıcılar oluşturabilir ve şemalara SELECT, INSERT, UPDATE veya DELETE gibi izinler atayabilirsiniz.

Bu ön koşullar yerine getirildiğinde, çoklu konteyner uygulamalarını tanımlayan bir YAML dosyası olan Docker Compose'u kullanarak ortamınızı düzenlemeye hazırsınız. Proje dizininizde bir docker-compose.yaml dosyası oluşturun:
version: "3.9"
services:
postgres_host:
image: postgres:alpine
environment:
POSTGRES_USER: username
POSTGRES_PASSWORD: password
POSTGRES_DB: postgres
volumes:
- pgdata:/var/lib/postgresql/data
ports:
- "5431:5432"
pgadmin:
image: dpage/pgadmin4
ports:
- "5050:80"
depends_on:
- postgres_host
environment:
PGADMIN_DEFAULT_EMAIL: postgres@pgadmin.com
PGADMIN_DEFAULT_PASSWORD: postgres
postgrest:
image: postgrest/postgrest
depends_on:
- postgres_host
ports:
- "3000:3000"
environment:
PGRST_DB_URI: "postgres://username:password@postgres_host:5432/postgres"
PGRST_DB_SCHEMA: "public"
PGRST_DB_ANON_ROLE: "username"
volumes:
pgdata:
"username" ve "password" değerlerini kurulumunuza uyacak şekilde özelleştirin ve anonim erişim için PGRST_DB_ANON_ROLE'u \du çıktınızdaki bir role ayarlayın. Bu yapılandırma PostgreSQL, pgAdmin ve PostgREST API sunucusunu birbirine bağlar. Dosyayı kaydedin, ardından terminalinizde (örn. VS Code'un entegre terminali, Docker uzantısını kurduktan sonra) şunu çalıştırın:
docker compose up --build
Bu, hizmetleri oluşturur ve başlatır. YAML kimlik bilgilerini kullanarak http://localhost:5050 adresinden pgAdmin'e erişin, bağlantı ayrıntılarıyla (Hostname: postgres_host, Port: 5432, Username: username, Password: password) "postgres_host" adında bir sunucu ekleyin ve kaydedin. Artık http://localhost:3000 adresinde çalışan, veritabanı etkileşimlerine hazır bir PostgREST API'niz var.

Örnek Bir Proje Oluşturma: PostgREST API'nin Adım Adım Test Edilmesi
PostgREST API'yi gerçekten takdir etmek için uygulamalı bir proje oluşturalım: çalışan kayıtlarını yönetmek için basit bir insan kaynakları veritabanı API'si. Bu örnek, bir "humans" tablosunda CRUD işlemlerini, düzenleme için Docker'ı ve API testi için Apidog'u kullanarak gösterir.
Adım 1: Ortamınızı Hazırlayın
Docker Desktop kurulu ve imajlar çekilmiş (PostgREST, pgAdmin4, postgres:alpine) durumdayken, daha önce belirtildiği gibi ilk PostgreSQL konteynerini çalıştırın. docker ps ile doğrulayın ve \du aracılığıyla kullanıcı rollerini not alın.
Adım 2: Yığınınızı Oluşturun
VS Code gibi bir kod düzenleyicide (sorunsuz konteyner yönetimi için Docker uzantısıyla geliştirilmiş), yukarıdaki docker-compose.yaml dosyasını oluşturun. İmaj adlarının tam olarak eşleştiğinden emin olun; uyuşmazlıklar başlatmayı durdurabilir. Gerekirse bağlantı noktalarını ayarlayın, ancak PostgreSQL'in harici bağlantı noktasını (5431) manuel kurulumunuzla tutarlı tutun. docker compose up --build ile başlatın. Hatalar için günlükleri izleyin; başarılı başlatma, hizmetlerin 5431 (DB), 5050 (pgAdmin) ve 3000 (PostgREST) bağlantı noktalarına bağlandığını gösterir.
Adım 3: pgAdmin'i Yapılandırın ve Tablo Oluşturun
http://localhost:5050 adresine gidin, YAML'deki PGADMIN_DEFAULT_EMAIL ve PASSWORD ile giriş yapın.

Kontrol panelinin altında,

yeni bir sunucu ekleyin: Adını "postgres_host" olarak belirleyin,

ardından Bağlantı sekmesinde Hostname: postgres_host, Port: 5432, Username: username, Password: password bilgilerini girin. Arayüze erişmek için kaydedin.

Bir tablo oluşturun: Veritabanları > postgres > Şemalar > public > Tablolar'a gidin, Tablolar'a sağ tıklayın ve Oluştur > Tablo'yu seçin. Adını "humans" olarak belirleyin. Sütunlara ekleyin:

- id: INTEGER, Boş Olamaz, Birincil Anahtar
- name: VARCHAR(50), Boş Olamaz
- job: VARCHAR(50)

Kaydet'e tıklayın. Veri eklemek için "humans" tablosuna sağ tıklayın > Komut Dosyaları > INSERT Komut Dosyası'nı seçin. Örnek SQL ile değiştirin, örn.:
INSERT INTO public.humans (id, name, job) VALUES (1, 'Steph Curry', 'Pro Basketball Player');
Kaydı kalıcı hale getirmek için yürütün.

Adım 4: PostgREST API Kullanılabilirliğini Doğrulayın
Tarayıcınızda http://localhost:3000 adresini açın. /humans gibi kaynakları listeleyen bir Swagger 2.0 belirtim belgesi görmelisiniz; bu, PostgREST API'nin çalıştığını ve şema farkındalığına sahip olduğunu doğrular.

Adım 5: Apidog ile Test Edin
Apidog'u başlatın, yeni bir proje oluşturun ve http://localhost:3000/humans adresine bir GET isteği ekleyin ("humans" yerine tablo adınızı yazın). İsteği gönderin; şöyle bir JSON döndürür:
[
{
"id": 1,
"name": "Steph Curry",
"job": "Pro Basketball Player"
}
]

Sorgulama için bir Sorgu Parametresi ekleyin: Anahtar "name", Değer "eq.Steph Curry" ("eq" eşitliği belirtir). Bu, eşleşen kayıtları filtreler; eşleşmeyenler boş diziler döndürür.


Adım 6: CRUD İşlemlerini Keşfedin
PostgREST API, tam CRUD'da parlar. POST (oluşturma) için, Apidog'un gövdesini JSON olarak kullanın: {"name": "New Employee", "job": "Developer"} adresine http://localhost:3000/humans. PUT, yama uygulanmış verilerle http://localhost:3000/humans?id=eq.1 aracılığıyla güncellemeler yapar. DELETE, http://localhost:3000/humans?id=eq.1 kullanır. Sıralama (order=name.asc) veya sınırlar (limit=5) gibi gelişmiş filtreler kullanılabilirliği artırır. Kapsamlı örnekler için, resmi dokümantasyonu https://docs.postgrest.org/en/v14/references/api/tables_views.html adresinden inceleyin.
Bir saatten kısa süren bu proje, PostgREST API'nin hızlı prototiplemedeki yeteneğini göstermektedir. Güvenli, rol tabanlı erişim için PostgreSQL'e RLS politikaları ekleyerek ölçeklendirin.
Sıkça Sorulan Sorular
S1. PostgREST API'yi çalıştırmak için sistem gereksinimleri nelerdir?
Cevap: PostgREST API, PostgreSQL 9.4 veya sonraki bir sürümünü gerektirir ve konteynerize kurulumlar için Docker önerilir. Temel işlemler için en az 512MB RAM'e ihtiyaç duyan mütevazı donanımlarda verimli bir şekilde çalışır.
S2. PostgREST API, temel CRUD dışındaki karmaşık sorguları işleyebilir mi?
Cevap: Evet, gömülü RPC çağrıları ve görünümler aracılığıyla PostgreSQL'in tam SQL yeteneklerini destekler, bu da birleştirmelere, toplulaştırmalara ve uç noktalar olarak sunulan özel işlevlere olanak tanır.
S3. PostgREST API veri güvenliğini nasıl sağlar?
Cevap: PostgreSQL'in Satır Düzeyi Güvenliği ve rol tabanlı izinleriyle yerel olarak entegre olur, API tarafı güvenlik açıkları olmadan veritabanı düzeyinde erişim kontrollerini uygular.
S4. PostgREST API üretim ortamları için uygun mudur?
Cevap: Kesinlikle, JWT kimlik doğrulaması, şema izolasyonu ve birden fazla örnek aracılığıyla yatay ölçeklendirme gibi özelliklerle. Performansı izleyin ve uyumluluk için RLS uygulayın.
S5. PostgREST API'yi ön uç çerçeveleriyle nasıl entegre ederim?
Cevap: Axios veya Fetch gibi HTTP istemcilerini kullanın; React, Vue veya Angular uygulamalarında tip güvenliği için OpenAPI belirtimlerinden TypeScript tipleri oluşturun.
Sonuç
Keşfettiğimiz konuları değerlendirdiğimizde, PostgREST API, veritabanı odaklı geliştirme için zarif bir çözüm olarak öne çıkıyor ve PostgreSQL'in güçlü yönlerini erişilebilir web hizmetlerine dönüştürüyor. Zahmetsiz kurulumdan gelişmiş sorgulamaya kadar, daha az ek yükle sağlam API'ler sunmanızı sağlar. Örnek projeyi çoğaltmanızı ve daha fazla deneme yapmanızı (belki de kimlik doğrulama ile genişletmenizi) teşvik ediyorum. Uygulamalarınız geliştikçe, PostgREST API çevikliği ve güvenilirliği sürdürmede vazgeçilmez bir müttefik olacaktır.
Geliştirici Ekibinizin maksimum üretkenlikle birlikte çalışması için entegre, Hepsi Bir Arada bir platform mu istiyorsunuz?
Apidog tüm taleplerinizi karşılar ve Postman'ı çok daha uygun bir fiyata değiştirir!
