GitHub, dünya çapındaki geliştiriciler için işbirliği, kod paylaşımı ve sürüm kontrolü sağlayan temel bir platformdur. GitHub'ın web arayüzü sağlam işlevsellik sunarken, GitHub ile programlı olarak etkileşim kurmak isteyebileceğiniz birçok senaryo vardır. İşte GitHub API'sinin devreye girdiği yer burasıdır.
GitHub API, geliştiricilerin iş akışlarını otomatikleştirmesine, veri almasına ve GitHub'ın güçlü özelliklerini doğrudan uygulamalarına entegre etmesine olanak tanır. İster kullanıcı bilgisi almak, ister depoları listelemek veya sorunları ve çekme isteklerini yönetmek isteyin, GitHub API, GitHub ile programlı olarak etkileşim kurmanın esnek ve verimli bir yolunu sunar ve bu kılavuzda nasıl kullanılacağını öğreneceğiz!
Önkoşullar
Node.js ile GitHub API'sini kullanmaya başlamadan önce, yerinde olması gereken birkaç önkoşul vardır. Bu bölüm, bu kılavuzu takip etmek için ihtiyacınız olacak temel gereksinimleri ve bilgileri özetleyecektir.
1. JavaScript ve Node.js Hakkında Temel Bilgi
Node.js ile GitHub API'sini etkili bir şekilde kullanmak için, özellikle HTTP istekleri yaparken sıklıkla kullanılan bu kavramlar olan asenkron programlama ve vaatler olmak üzere, JavaScript hakkında temel bir anlayışa sahip olmalısınız. Bir proje kurmak ve bağımlılıkları yüklemek dahil olmak üzere Node.js'ye aşinalık da önemlidir.
2. GitHub Hesabı
GitHub API'sine erişmek için bir GitHub hesabına ihtiyacınız vardır. Henüz bir hesabınız yoksa, GitHub'da ücretsiz kaydolabilirsiniz. Ayrıca, isteklerinizi doğrulamak için kişisel bir erişim belirteci oluşturmanız gerekecektir. Bu belirteci nasıl oluşturacağımızı daha sonraki bir bölümde ele alacağız.
3. Sisteminizde Yüklü Node.js
Makinenizde Node.js'nin yüklü olduğundan emin olun. Henüz yüklemediyseniz, en son sürümü resmi Node.js web sitesinden indirebilirsiniz. Bu eğitim Node.js kullanacaktır, bu nedenle yüklü olması, sağlanan kod örneklerini çalıştırmak için çok önemlidir.
4. RESTful API'ler Hakkında Temel Bilgi
GitHub API bir RESTful API olduğundan, REST API'lerin nasıl çalıştığına dair temel bir anlayışa sahip olmak faydalı olacaktır. Bu, HTTP yöntemlerini (GET, POST, PUT, DELETE), durum kodlarını ve JSON yanıtlarını nasıl işleyeceğinizi anlamayı içerir.
5. Bir Kod Düzenleyici
Visual Studio Code, Sublime Text veya Atom gibi bir kod düzenleyici veya entegre geliştirme ortamı (IDE), kodunuzu verimli bir şekilde yazmanıza ve yönetmenize yardımcı olacaktır. Bu eğitim için rahat ettiğiniz herhangi bir kod düzenleyici işe yarayacaktır.
Ortamınızı Kurma
GitHub API'sine istek göndermeye başlamadan önce, geliştirme ortamımızı kurmamız gerekir. Bu bölümde, Node.js'yi kurma, yeni bir proje başlatma ve gerekli kitaplıkları yükleme adımlarını ele alacağız.
Adım 1: Node.js'yi Yükleyin
Henüz Node.js'yi yüklemediyseniz, en son sürümü resmi Node.js web sitesinden indirin. İşletim sisteminize özel yükleme talimatlarını izleyin. Node.js'nin doğru yüklendiğini doğrulamak için, terminalinizi veya komut isteminizi açın ve şunu çalıştırın:
node -v
Bu komut, makinenize yüklü olan Node.js'nin sürüm numarasını görüntülemelidir.
Adım 2: Yeni Bir Node.js Projesi Başlatın
Ardından, projemiz için yeni bir dizin oluşturacak ve npm (Node Package Manager) ile başlatacağız. Terminalinizi açın ve aşağıdaki komutları çalıştırın:
mkdir github-api-tutorial
cd github-api-tutorial
npm init -y
npm init -y
komutu, projenin bağımlılıklarını yönetmek için gerekli olan varsayılan ayarlarla bir package.json
dosyası oluşturur.
Adım 3: Gerekli Kütüphaneleri Yükleyin
GitHub API ile etkileşim kurmak için hem express hem de bir HTTP istemci kütüphanesine ihtiyacımız var. Bu eğitimde, Node.js için vaat tabanlı bir HTTP istemcisi olan axios
'u kullanacağız. axios
'u çalıştırarak yükleyin:
npm install express axios
Ek olarak, ortam değişkenlerini güvenli bir şekilde yönetmek için dotenv
'ye ihtiyacımız olabilir. Bu paket, ortam değişkenlerini bir .env
dosyasından process.env
'ye yüklememizi sağlar; bu, API belirteçleri gibi hassas bilgileri depolamak için kullanışlıdır. dotenv
'yi çalıştırarak yükleyin:
npm install dotenv
Adım 4: Bir .env
Dosyası Oluşturun
GitHub kişisel erişim belirtecinizi depolamak için proje dizininizin kök dizininde bir .env
dosyası oluşturun. Bu dosya, hassas bilgilerinizi güvende tutmak için sürüm kontrolüne dahil edilmemelidir.
GITHUB_TOKEN=your_personal_access_token_here
your_personal_access_token_here
ifadesini gerçek GitHub kişisel erişim belirtecinizle değiştirin. Bu belirteci nasıl oluşturacağımızı daha sonraki bir bölümde ele alacağız.
Adım 5: Proje Yapısını Kurun
Projenizin kök dizininde index.js
adlı yeni bir dosya oluşturun. Bu dosya, Node.js uygulamamız için ana giriş noktası olarak hizmet verecektir.
Projenizi daha da genişletmeyi planlıyorsanız, temel bir klasör yapısı da kurabilirsiniz. Basit bir yapı şöyle görünebilir:
github-api-tutorial/
├── node_modules/
├── .env
├── index.js
├── package.json
└── package-lock.json
Bir GitHub Kişisel Erişim Belirteci Oluşturma
Kimliği doğrulanmış uç noktalara erişmek ve API hız sınırlarınızı artırmak için bir GitHub kişisel erişim belirteci gerekir. Github'ın bir erişim belirteci oluşturma konusunda harika bir rehberi var, aşağıda bulabilirsiniz;

Adımlar da kolayca takip etmeniz için aşağıda özetlenmiştir :)
- GitHub hesabınıza giriş yapın ve Ayarlar'a gidin.
- Sol kenar çubuğunda, Geliştirici ayarları'na tıklayın.
- Kişisel erişim belirteçleri ve ardından Belirteçler (klasik)'e tıklayın.
- Yeni belirteç oluştur düğmesine tıklayın.
- Belirtecin amacını açıklayan bir not sağlayın (örneğin, "GitHub API Eğitimi").
- Bu belirtece vermek istediğiniz kapsamları veya izinleri seçin. Bu eğitim için,
repo
'yu (depo erişimi için) veuser
'ı (kullanıcı bilgilerine erişmek için) seçin. Kapsamları özel ihtiyaçlarınıza göre ayarlayabilirsiniz. - Belirteç oluştur'a tıklayın.
- Oluşturulan belirteci kopyalayın ve daha önce açıklandığı gibi
.env
dosyanıza kaydedin. Not: Bu belirtece bir parola gibi davranın ve asla kamuya açık olarak paylaşmayın.
GitHub API İstekleri İçin Rotalarla Bir Express Uygulaması Kurma
İki rotaya sahip temel bir Express sunucusu oluşturalım: biri bir GitHub kullanıcısının profilini getirmek, diğeri ise depolarını getirmek için.
index.js
dosyanızın nasıl görünebileceği aşağıdadır:
// Gerekli modülleri içe aktar
require('dotenv').config();
const express = require('express');
const axios = require('axios');
const app = express();
// JSON ve URL kodlu verileri ayrıştırmak için ara yazılım
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
// GitHub kullanıcı profilini getirme rotası
app.get('/user/profile', async (req, res) => {
try {
const response = await axios.get('https://api.github.com/user', {
headers: {
'Authorization': `Bearer ${process.env.GITHUB_TOKEN}`
}
});
res.json(response.data); // Kullanıcı profil verilerini JSON yanıtı olarak gönder
} catch (error) {
res.status(500).json({ error: 'Kullanıcı profilini getirirken hata oluştu', details: error.message });
}
});
// GitHub kullanıcı depolarını getirme rotası
app.get('/user/repos', async (req, res) => {
const username = req.query.username || 'irorochad'; // Kullanıcı adı sağlanmazsa varsayılan olarak 'irorochad' olur
try {
const response = await axios.get(`https://api.github.com/users/${username}/repos`, {
headers: {
'Authorization': `Bearer ${process.env.GITHUB_TOKEN}`
}
});
res.json(response.data); // Kullanıcı depoları verilerini JSON yanıtı olarak gönder
} catch (error) {
res.status(500).json({ error: 'Kullanıcı depolarını getirirken hata oluştu', details: error.message });
}
});
// Sunucuyu başlat
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Sunucu http://localhost:${PORT} adresinde çalışıyor`);
});
Daha okunabilir hale getirmek için denetleyicileri kullanmayı bile düşünebilirsiniz.
Kodun Açıklaması:
Gerekli Modülleri İçe Aktar:
dotenv
'yi bir.env
dosyasından ortam değişkenlerini yüklemek, sunucuyu oluşturmak içinexpress
'i ve GitHub API'sine HTTP istekleri yapmak içinaxios
'u içe aktarıyoruz.
Ara Yazılımı Kur:
express.json()
veexpress.urlencoded()
ara yazılımı, sırasıyla JSON yükleri ve URL kodlu veriler içeren gelen istekleri ayrıştırmak için kullanılır.
Rotalar Oluştur:
GET /user/profile
: Bu rota,axios
kütüphanesini kullanarak kimliği doğrulanmış GitHub kullanıcısının profilini getirir. Profil verileri bir JSON yanıtı olarak döndürülür.GET /user/repos
: Bu rota, belirtilen bir GitHub kullanıcısının genel depolarını getirir. Kullanıcı adı bir sorgu parametresi olarak sağlanır (örneğin,/user/repos?username=irorochad
). Kullanıcı adı belirtilmezse, varsayılan olarak'irorochad'
olur.
Hata İşleme:
- API isteği sırasında bir hata oluşursa, sunucu 500 durum kodu ve hata ayrıntılarını içeren bir JSON nesnesiyle yanıt verir.
Sunucuyu Başlat:
- Sunucu, belirtilen bir bağlantı noktasında (ortamda ayarlanmamışsa varsayılan olarak 3000) dinler ve başladığında bir mesaj kaydeder.
3. .env
Dosyanızı Güncelleyin
.env
dosyanızın aşağıdakileri içerdiğinden emin olun:
GITHUB_TOKEN=your_personal_access_token_here
PORT=3000
your_personal_access_token_here
ifadesini gerçek GitHub kişisel erişim belirtecinizle değiştirin.
4. Uygulamanızı Çalıştırma
Express uygulamanızı çalıştırmak için aşağıdaki komutu kullanın:
node index.js
Sunucunuz artık http://localhost:3000
adresinde çalışıyor olmalı ve şimdi uç noktalarımızı test etme zamanı!!!
- Kullanıcı Profilini Getir: Kimliği doğrulanmış kullanıcının profilini almak için
http://localhost:3000/user/profile
adresini ziyaret edin. - Kullanıcı Depolarını Getir: Kullanıcının depolarını almak için
http://localhost:3000/user/repos?username=<GitHubKullanıcıAdı>
adresini ziyaret edin (<GitHubKullanıcıAdı>
ifadesini istenen GitHub kullanıcı adıyla değiştirin).
Uç Noktalarımızı Apidog Kullanarak Test Etme

Apidog, sağlam dokümantasyon, otomatik test ve gerçek zamanlı izleme sunarak API güvenliğini artırır. Apidog ayrıca, API'lerinizin kullanıcı verilerini etkili bir şekilde korumasını sağlayarak GDPR ve HIPAA gibi endüstri standartlarına uyulmasına yardımcı olur.
Ek olarak, Apidog ekip işbirliğini destekleyerek güvenliğe odaklı bir geliştirme ortamını teşvik eder. Apidog'u entegre ederek, verilerinizi ve kullanıcılarınızı çeşitli güvenlik tehditlerinden koruyarak güvenli, güvenilir ve uyumlu API'ler oluşturabilirsiniz.
Apidog'u veya web sürümünü yükledikten sonra, bir yeni proje
oluşturarak ve ilk isteğinizi göndererek başlayabilirsiniz.
Kullanıcı Uç Noktasını Getirme Testi:
Bu uç noktayı çağırmadan önce, Apidog'a uç noktanın bir erişim belirteci gerektirdiğini ve isteği yapmasını sağlamak için erişim belirtecini Apidog'a sağlamamız gerektiğini söylememiz gerekecek.
Bunu, isteğin Auth bölümüne giderek ve belirteci aşağıda gösterildiği gibi gerektiği alana ekleyerek yapabiliriz;

Yukarıdaki ekran görüntüsünden de görebileceğiniz gibi, kullanıcı uç noktasını getirme beklendiği gibi iyi çalışıyor ve bunun nedeni sunucumuzun çalışır durumda olması ve ayrıca erişim belirtecini Apidog'a geçirmemizdir. Erişim belirteci olmadan istek başarısız olacak ve bu istek hakkında yanıtları göremeyeceğiz.
Depo Uç Noktasını Getirme Testi:

Tıpkı kullanıcıları getir
uç noktaları gibi, depoyu getir
uç noktasının da aramayı yapmak için bir erişim belirteci gerekir.
Sonuç
GitHub API'sini bir Node.js uygulamasıyla entegre etmek, iş akışlarını otomatikleştirmek, verileri analiz etmek veya uygulamalarını GitHub'ın güçlü özellikleriyle geliştirmek isteyen geliştiriciler için bir olasılıklar dünyasının kapılarını açar. Bu kılavuzda, bir Express sunucusu kurma ve GitHub'dan kullanıcı profili bilgilerini ve depoları getirmek için rotalar oluşturma sürecini inceledik.
Belirtilen adımları izleyerek, artık Node.js ve Express kullanarak GitHub API ile nasıl etkileşim kurulacağına dair temel bir anlayışa sahipsiniz. Sorunları, çekme isteklerini ve daha fazlasını yönetmek gibi farklı uç noktaları keşfetmek için daha fazla rota ekleyerek bunu kolayca genişletebilirsiniz.