Günümüzün birbirine bağlı dünyasında, sağlam ve ölçeklenebilir API'ler oluşturmak, çeşitli yazılım bileşenleri arasında kesintisiz iletişimi sağlamak için bir zorunluluk haline geldi. REST API'leri, web veri alışverişini kolaylaştırmak için fiili standart olarak ortaya çıktı ve HTTP protokolü'nün gücünden yararlanıyor.
Chrome'un V8 motoru üzerine inşa edilmiş bir JavaScript çalışma zamanı olan Node.js, verimli, hafif API'ler oluşturmak için ilgi gördü. Olay güdümlü, engellemeyen G/Ç modeli, eşzamanlı bağlantıları yönetmede mükemmeldir ve onu ölçeklenebilir, gerçek zamanlı API'ler için ideal hale getirir.
Express.js gibi çerçeveler, geliştirme sürecini basitleştirerek geliştiricilerin çeşitli kullanım durumları için hızlı bir şekilde sağlam API'ler oluşturmasına olanak tanır. RESTful API'ler oluşturmak isteyen web geliştiricileri için Node.js ve Express, süreci kolaylaştırmak için güçlü bir kombinasyon sunar.
REST API Nedir?
REST API, istemci ve sunucu uygulamaları arasında veri alışverişini kolaylaştırmak için HTTP protokolünden yararlanan bir mimari stildir. Birleşik bir arayüz, durumsuz iletişim ve kaynaklar üzerinde işlemler gerçekleştirmek için standart HTTP yöntemlerinin (GET, POST, PUT, DELETE) kullanımı dahil olmak üzere bir dizi kısıtlama ve ilkeye dayanır.
REST API'nin Temel Kavramları
1. Kaynaklar
Kaynaklar, REST'teki temel birimlerdir. Her kaynak, bir URL (Uniform Resource Locator) ile tanımlanır. Örneğin, kitapları yönetmek için bir REST API'sinde, bir kitap /books/1
adresinde erişilebilen bir kaynak olabilir.
2. HTTP Yöntemleri
REST API'leri, kaynaklarla etkileşim kurmak için standart HTTP yöntemlerini kullanır:
- GET: Sunucudan veri alın (örneğin, bir kitap listesi veya tek bir kitap alın).
- POST: Yeni bir kaynak oluşturmak için sunucuya veri gönderin (örneğin, yeni bir kitap ekleyin).
- PUT: Mevcut bir kaynağı yeni verilerle güncelleyin (örneğin, mevcut bir kitabın ayrıntılarını güncelleyin).
- DELETE: Sunucudan bir kaynağı kaldırın (örneğin, bir kitabı silin).
3. Durumsuzluk
Bir istemciden bir sunucuya yapılan her istek, sunucunun o isteği yerine getirmesi için gereken tüm bilgileri içermelidir. Sunucu, istekler arasında istemci oturumu hakkında herhangi bir durum saklamaz. Bu, REST API'lerini ölçeklenebilir ve bakımı kolay hale getirir.
4. Temsiller
Kaynaklar, JSON (JavaScript Object Notation), XML (eXtensible Markup Language) veya düz metin gibi farklı biçimlerde temsil edilebilir. JSON, hafif yapısı ve kullanım kolaylığı nedeniyle en yaygın olarak kullanılan biçimdir.
5. Birleşik Arayüz
REST API'leri, kaynaklarla tutarlı etkileşimlere izin veren birleşik bir arayüze sahip olacak şekilde tasarlanmıştır. Bu şunları içerir:
- Kaynak tanımlama: URL'ler kaynakları benzersiz bir şekilde tanımlar.
- Temsiller aracılığıyla kaynakların işlenmesi: İstemciler, kaynaklarla etkileşim kurmak için temsilleri kullanır (örneğin, bir kaynak oluşturmak veya güncellemek için JSON verileri göndermek).
- Kendi kendini açıklayan mesajlar: Her mesaj, onu nasıl işleyeceğini açıklamak için yeterli bilgi içerir.
- Uygulama durumunun motoru olarak hipermedya (HATEOAS): İstemciler, kaynaklarla tamamen sunucu tarafından dinamik olarak sağlanan köprüler aracılığıyla etkileşim kurar.
6. İstemci-Sunucu Mimarisi
REST, istemci ve sunucuyu ayırır ve bunların birbirinden bağımsız olarak gelişmesine izin verir. İstemci, kullanıcı arayüzünü ve kullanıcı deneyimini yönetirken, sunucu veri depolamayı, işlemeyi ve güvenliği yönetir.
7. Önbelleğe Alma
Bir REST API'sinden gelen yanıtlar, açıkça önbelleğe alınabilir veya önbelleğe alınamaz olarak işaretlenebilir. Bu, istemcilerin performansı artırmak ve tekrarlanan istek ihtiyacını azaltmak için yanıtları önbelleğe almasına olanak tanır.
Gerçek Dünya REST API Örneği
İşte bir kütüphane için Rest API uç noktalarına bir örnek:
1. Tüm kitapların bir listesini alın
- Uç Nokta:
/books
- HTTP Yöntemi: GET
- Açıklama: Kütüphanedeki tüm kitapların bir listesini alır.
- İstek:
GET /books
- Yanıt:
[
{
"id": 1,
"title": "1984",
"author": "George Orwell",
"published_year": 1949
},
{
"id": 2,
"title": "To Kill a Mockingbird",
"author": "Harper Lee",
"published_year": 1960
}
]
2. Belirli bir kitabın ayrıntılarını alın
- Uç Nokta:
/books/{id}
- HTTP Yöntemi: GET
- Açıklama: Kimliğine göre belirli bir kitabın ayrıntılarını alır.
- İstek:
GET /books/1
- Yanıt:
{
"id": 1,
"title": "1984",
"author": "George Orwell",
"published_year": 1949
}
3. Yeni bir kitap ekleyin
- Uç Nokta:
/books
- HTTP Yöntemi: POST
- Açıklama: Kütüphaneye yeni bir kitap ekler.
- İstek:
POST /books
Content-Type: application/json
{
"title": "Brave New World",
"author": "Aldous Huxley",
"published_year": 1932
}
- Yanıt:
{
"id": 3,
"title": "Brave New World",
"author": "Aldous Huxley",
"published_year": 1932
}
4. Mevcut bir kitabı güncelleyin
- Uç Nokta:
/books/{id}
- HTTP Yöntemi: PUT
- Açıklama: Mevcut bir kitabın ayrıntılarını günceller.
- İstek:
PUT /books/1
Content-Type: application/json
{
"title": "1984",
"author": "George Orwell",
"published_year": 1948
}
- Yanıt:
{
"id": 1,
"title": "1984",
"author": "George Orwell",
"published_year": 1948
}
Node.js Nedir?
Sunucu tarafı bir JavaScript çalışma zamanı olan Node.js ve popüler bir Node.js çerçevesi olan Express, RESTful API'ler oluşturmak için güçlü bir kombinasyon oluşturur. Bu blog yazısında, Node.js ve Express kullanarak adım adım, pratik örneklerle bir REST API oluşturma sürecini inceleyeceğiz.
Neden REST API Oluşturmak İçin Node.js ve Express Kullanmalısınız?
API'ler oluşturmak için Node.js ve Express kullanmak, geliştiriciler arasında popüler bir seçim olmasını sağlayan çeşitli avantajlar sunar. İşte temel faydalarından bazıları:
1. Yüksek Performans ve Ölçeklenebilirlik
Node.js, JavaScript'i doğrudan makine koduna derleyen Google'dan V8 JavaScript motoru üzerine kurulmuştur. Bu, yüksek performans ve hızla sonuçlanır. Node.js ayrıca, çok sayıda eşzamanlı bağlantıyı yönetmek için oldukça verimli ve ölçeklenebilir hale getiren, olay güdümlü, engellemeyen bir G/Ç modeliyle tasarlanmıştır.
2. Her Yerde JavaScript
Node.js, geliştiricilerin hem istemci tarafında hem de sunucu tarafında geliştirme için JavaScript kullanmasına olanak tanır. Bu tutarlılık, öğrenme eğrisini azaltır ve geliştirme sürecini basitleştirir, çünkü geliştiriciler tüm uygulama yığını boyunca aynı dili ve veri yapılarını kullanabilirler.
3. Hızlı Geliştirme Döngüsü
Node.js, Express ile birlikte, uygulamaların hızlı bir şekilde geliştirilmesini sağlar. Express, web ve mobil uygulamalar için sağlam bir özellik kümesi sağlayan minimal ve esnek bir çerçevedir. Yönlendirmeyi, ara yazılım yönetimini ve görünüm oluşturmayı basitleştirerek, geliştiricilerin API'leri hızlı ve verimli bir şekilde oluşturmasına olanak tanır.
4. Kapsamlı Ekosistem
Node.js, npm (Node Package Manager) aracılığıyla kullanılabilen zengin bir kitaplık ve modül ekosistemine sahiptir. Önceden oluşturulmuş bu geniş modül koleksiyonu, geliştiricilerin ortak görevler için mevcut kodu yeniden kullanmasına izin vererek geliştirmeyi önemli ölçüde hızlandırır.
5. JSON ve RESTful API'ler
Node.js ve Express, JSON tabanlı RESTful API'ler oluşturmak için çok uygundur. JavaScript'in JSON için yerel desteği, sunucu ile istemci arasındaki veri alışverişini basitleştirir. Express'in hafif yapısı, RESTful uç noktaları verimli bir şekilde oluşturmak için idealdir.
6. Gerçek Zamanlı Yetenekler
Node.js, sohbet uygulamaları veya canlı güncelleme özellikleri gibi gerçek zamanlı uygulamalar oluşturmada mükemmeldir. Engellemeyen mimarisi, gerçek zamanlı veri akışını ve etkileşimleri sorunsuz bir şekilde yönetmeye olanak tanır.
7. Topluluk Desteği
Node.js büyük ve aktif bir topluluğa sahiptir. Bu canlı topluluk, geliştiricilerin en son en iyi uygulamalara, yaygın sorunlara yönelik çözümlere ve devam eden iyileştirmelere erişmesini sağlayarak, çok sayıda açık kaynaklı kitaplığa, araca ve çerçeveye katkıda bulunur.
8. Mikro hizmetler Mimarisi
Node.js, özellikle mikro hizmetler mimarisi için çok uygundur. Hafif yapısı, geliştiricilerin ayrı ayrı dağıtılabilen ve ölçeklendirilebilen küçük, bağımsız hizmetler oluşturmasına olanak tanır. Bu modülerlik, uygulamaların daha iyi bakımı ve ölçeklenebilirliğine yol açar.
9. Çapraz Platform Geliştirme
Node.js, çapraz platformdur, yani Windows, macOS ve Linux dahil olmak üzere çeşitli işletim sistemlerinde çalışabilir. Bu esneklik, farklı ortamlarda çalışması gereken uygulamalar geliştirmek için faydalıdır.
10. Öğrenme ve Kullanım Kolaylığı
JavaScript'e aşina olan geliştiriciler için, Node.js ve Express'i öğrenmek nispeten basittir. Express'in basitliği ve minimalizmi, dik bir öğrenme eğrisi olmadan API'ler oluşturmaya başlamayı kolaylaştırır.
Önkoşullar
REST API'mizi oluşturmaya başlamadan önce, aşağıdaki araçlara ve bilgiye sahip olduğunuzdan emin olun:
- Node.js ve npm: Resmi web sitesinden npm (Node Package Manager) dahil olmak üzere Node.js'i yükleyin.
- Metin Düzenleyici veya IDE: Tercih ettiğiniz kod düzenleyiciyi seçin. Bazı popüler seçenekler Visual Studio Code, Sublime Text veya WebStorm'dur.
- Temel JavaScript Bilgisi: Node.js geliştirme için JavaScript'i anlamak çok önemlidir.
Node.js Kullanarak REST API Oluşturmak İçin Adım Adım Kılavuz
Adım 1: Projenizi Başlatın
Projeniz için yeni bir dizin oluşturarak ve npm ile başlatarak başlayalım.
mkdir my-rest-api
cd my-rest-api
npm init -y
Bu, projeniz için varsayılan ayarlara sahip bir package.json
dosyası oluşturacaktır.
Adım 2: Bağımlılıkları Yükleyin
REST API'mizi çalışır duruma getirmek için birkaç pakete ihtiyacımız var:
- Express: Node.js için web uygulaması çerçevesi.
- Body-parser: Gelen istek gövdelerini ayrıştırmak için bir ara yazılım.
- Nodemon (İsteğe bağlı): Geliştirme sırasında sunucuyu otomatik olarak yeniden başlatmaya yardımcı olan bir araç.
Bu paketleri npm kullanarak yükleyin:
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json());
const port = process.env.PORT || 3000;
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});
Adım 3: Bir Express Uygulaması Oluşturun
Şimdi, bir Express uygulaması oluşturalım ve temel bir sunucu ayarlayalım.
javascriptCopy codeconst express = require('express');const bodyParser = require('body-parser');const app = express();use(bodyParser.json());const port = process.env.PORT || 3000;listen(port, () => {console.log(`Server is running on port ${port}`);
Burada, temel bir Express uygulaması oluşturduk, JSON verilerini ayrıştırmak için body-parser ara yazılımını ekledik ve 3000 numaralı portta bir sunucu başlattık.
Adım 4: Rotaları Tanımlayın
Bir REST API'sinde, rotalar farklı HTTP yöntemleri (GET, POST, PUT, DELETE) için uç noktaları tanımlar. Bir GET isteğiyle basit bir örnek oluşturalım.
app.get('/api/hello', (req, res) => {
res.json({ message: 'Hello, World!' });
});
Bu kod, bir GET isteği aracılığıyla erişildiğinde bir JSON mesajıyla yanıt veren /api/hello
için bir rota tanımlar.
Adım 5: API'nizi Çalıştırın
API'nizi Node.js kullanarak çalıştırabilirsiniz, ancak geliştirme sırasında, kod değişikliklerinde sunucunuzu otomatik olarak yeniden başlatacak olan Nodemon'u kullanmak kullanışlıdır.
npm start
Şimdi, http://localhost:3000/api/hello
adresine erişirseniz, "Merhaba, Dünya!" mesajını görmelisiniz.
Adım 6: Daha Fazla Rota Ekleyin
Kullanışlı bir API oluşturmak için, daha fazla rota tanımlamanız ve kaynaklarınız için CRUD (Oluştur, Oku, Güncelle, Sil) işlemlerini uygulamanız gerekir. İşte basit bir "Yapılacaklar Listesi" API'sine bir örnek.
let todos = [];
app.get('/api/todos', (req, res) => {
res.json(todos);
});
app.post('/api/todos', (req, res) => {
const newTodo = req.body;
todos.push(newTodo);
res.status(201).json(newTodo);
});
// Implement PUT and DELETE as an exercise
Bu örnekte, yapılacak öğeleri listelemek ve oluşturmak için rotalar ekledik. Görevleri güncellemek ve silmek için PUT ve DELETE uygulayarak bunu genişletebilirsiniz.
Adım 7: API'nizi Test Etme
API'nizin beklendiği gibi çalıştığından emin olmak için test etmek çok önemlidir. Apidog veya Insomnia gibi araçlar, istek göndermenize ve yanıtları doğrulamanıza yardımcı olabilir.
Adım 8: API'nizi Dağıtın
API'nizi dünyayla paylaşmaya hazır olduğunuzda, Heroku, AWS veya Azure gibi platformlarda dağıtabilirsiniz.
Apidog ile REST API Oluşturmanın Alternatif Bir Yolu
Apidog , REST API geliştirmeyi basitleştirerek, test etme, dokümantasyon, güvenlik ve performansı kolaylaştırır. Bu makale, Apidog'un nasıl kullanılacağını ve temel özelliklerini göstermektedir.
Adım 1: Apidog'u İndirin ve Yükleyin
İlk olarak, Apidog'da bir hesap oluşturmanız gerekir. Bu, Apidog web sitesine gidip "Kaydol" düğmesini tıklayarak yapılabilir. Kayıttan sonra, Apidog ana sayfasına yönlendirileceksiniz.
Adım 2: Bir API Oluşturun
Proje içinde, yeni bir API oluşturabilirsiniz. Dokümantasyon, REST API'sinin kaynaklarını, işlemlerini ve parametrelerini açıklayan bir taslaktır. Yeni bir API oluşturmak için, proje sayfasındaki "+" düğmesini tıklayın.

Adım 3: REST API'lerinin Parametrelerini Ayarlayın
HTTP yöntemlerini, istek/yanıt modellerini, sorgu parametrelerini, başlıkları vb. doldurun.

Adım 4: REST API'yi Test Etme
Tüm API'ler geliştirildikten sonra, API'lerinizi test etmek için "Gönder" düğmesini tıklayabilirsiniz.

Sonuç
Node.js ve Express ile bir REST API oluşturmak, herhangi bir web geliştiricisi için güçlü bir beceridir. Bu blog yazısında, proje kurulumundan rotaları tanımlamaya kadar temel adımları ele aldık ve hatta test etme ve dağıtıma da değindik. Unutmayın, pratik yapmak çok önemlidir, bu nedenle kendi API'lerinizi oluşturmaktan, farklı işlevlerle denemeler yapmaktan ve Node.js ve Express konusunda daha yetkin hale geldikçe daha gelişmiş özellikleri keşfetmekten çekinmeyin.
Bu temel ile, RESTful API'lerle sağlam ve ölçeklenebilir web uygulamaları geliştirme yolunda iyi olacaksınız. İyi kodlamalar!
Node.js REST API Hakkında Sıkça Sorulan Sorular
1. Node.js REST API için en iyi çerçeve hangisidir?
Feathers, Nest, LoopBack ve Moleculer mükemmel çerçeveler olsa da, işte Express'in en iyi seçenek olmasının birkaç nedeni:
Özellik Zenginliği: Express, Model-View-Controller (MVC) mimarisi, sağlam yönlendirme yetenekleri ve yerleşik ara yazılım gibi özellikler sunarak dinamik, ölçeklenebilir uygulamalar oluşturmanızı sağlar.
Güçlü Topluluk Desteği: Daha hızlı ve daha verimli çalışmanıza yardımcı olabilecek büyük bir topluluğa sahiptir.
Kullanıcı Dostu: Express'in kurulumu, öğrenmesi ve kullanımı kolaydır, bu da onu yeni başlayanlar için ideal bir seçim haline getirir.
2. REST API için Go mu yoksa node mu kullanmalıyım?
Bir REST API oluşturmak için Go (Golang) ve Node.js arasında seçim yapmak, performans gereksinimleri, geliştirme hızı, eşzamanlılık ihtiyaçları ve ekibinizin uzmanlığı dahil olmak üzere çeşitli faktörlere bağlıdır.
Go Ne Zaman Kullanılır:
- Yüksek performans ve verimliliğe ihtiyacınız var.
- Uygulamanız çok sayıda eşzamanlı işlemi yönetmeyi gerektiriyor.
- Derleme zamanı hata denetimi ve performans optimizasyonu için statik olarak yazılmış bir dil tercih edersiniz.
- Performansın kritik olduğu bir mikro hizmetler mimarisi oluşturuyorsunuz.
Node.js Ne Zaman Kullanılır:
- Hızlı bir geliştirme döngüsüne ve çok sayıda kitaplık ve araca erişime ihtiyacınız var.
- Uygulamanız G/Ç ağırlıklıdır (örneğin, gerçek zamanlı uygulamalar, sohbet uygulamaları).
- Hem ön uçta hem de arka uçta JavaScript kullanmak istiyorsunuz.
- Zaten JavaScript konusunda deneyimli bir ekibiniz var.
3. REST API uygulamak için en iyi dil hangisidir?
Bir REST API uygulamak için en iyi dil, belirli proje gereksinimlerinize, geliştirme ekibinizin uzmanlığına ve kullanımda olan mevcut teknoloji yığınına bağlı olacaktır.
- Hızlı Prototipleme İçin: Python (Flask/Django) veya Ruby (Rails).
- Yüksek Performans İçin: Go veya C# (ASP.NET Core).
- Mevcut Ekosistem ve Topluluk İçin: JavaScript (Node.js) veya PHP.
- Kurumsal Düzey Uygulamalar İçin: Java veya C#.
4. Node.JS REST API kullanıyor mu?
Node.js'in kendisi, sunucu tarafında JavaScript'i yürütmek için bir çalışma zamanı ortamıdır ve yerleşik REST işlevselliğine sahip olmak anlamında REST API'lerini "kullanmaz". Ancak, Node.js, asenkron, olay güdümlü mimarisi ve Express.js gibi çerçevelerin kullanılabilirliği sayesinde REST API'lerini oluşturmak için yaygın olarak kullanılır ve bu da RESTful web hizmetleri oluşturmayı ve yönetmeyi kolaylaştırır.
5. İnsanlar hala Express kullanıyor mu?
Evet, insanlar REST API'ler ve web uygulamaları geliştirmek için hala Express.js'i yaygın olarak kullanıyor.
6. Next.js Express'in yerini alıyor mu?
Next.js ve Express, web geliştirme ekosisteminde farklı amaçlara hizmet eden iki farklı araçtır ve biri diğerinin yerini mutlaka almaz.
7. Node.JS APl geliştirme için iyi mi?
Evet, Node.js, özellikle RESTful API'ler oluşturmak için API geliştirmesi için çok uygundur.
8. Node.JS API için en iyi veritabanı hangisidir?
Node.js API'niz için "en iyi" veritabanı, belirli proje gereksinimlerinize ve tercihlerinize büyük ölçüde bağlıdır. MongoDB, esnekliği ve Node.js ile kolay entegrasyonu nedeniyle popülerdir, PostgreSQL ve MySQL ise güçlü tutarlılıkları ve SQL yetenekleri nedeniyle tercih edilir. SQLite, gömülü uygulamalar veya daha basit kullanım durumları için idealdir. Uygulamanızın ihtiyaçlarını değerlendirmek ve bu faktörleri göz önünde bulundurmak, Node.js API'niz için en uygun veritabanını seçmenize yardımcı olacaktır.