Her yeni entegrasyon için manuel olarak fetch çağrıları oluşturmak, kimlik doğrulama token'larını yönetmek ve API yanıtlarını ayrıştırmak, web uygulamaları için assembly kodu yazmanın modern karşılığıdır. Claude Code'un veri çekme becerileri (data-fetching Skills), HTTP isteklerini kimlik doğrulama desenlerini, sayfalama ve yanıt doğrulamasını anlayan bildirimsel, yeniden kullanılabilir araçlara dönüştürerek tekrarlayan kodu ortadan kaldırır ve kod tabanınızda tutarlılık sağlar.
Geliştirme İş Akışları İçin API Ağ Yetenekleri Neden Önemlidir?
Her geliştirici, tekrarlayan API altyapısı üzerinde saatler harcar: OAuth 2.0 için başlıkları ayarlamak, hız sınırlı uç noktalar için üstel geri çekilmeyi (exponential backoff) uygulamak ve öngörülemeyen JSON yanıtları için tip korumaları (type guards) yazmak. Bu görevler hataya açıktır ve belirli hizmetlere sıkıca bağlıdır, bu da onları test etmeyi ve sürdürmeyi zorlaştırır. Claude Code Becerileri, bu karmaşıklığı yapay zeka asistanınızın doğal dille çağırabileceği sürüm kontrollü, test edilebilir araçlara soyutlar.
Değişim, zorunlu API çağrılarından bildirimsel veri çekmeye doğru. `fetch(url, { headers: {...} })` yazmak yerine, niyetinizi açıklarsınız: “ENV'den alınan token'ı kullanarak GitHub API'den kullanıcı verilerini getir ve tip denetimli sonuçlar döndür.” Beceri, kimlik bilgisi yönetimini, yeniden deneme mantığını ve yanıt ayrıştırmayı ele alarak uygulamanızın hemen kullanabileceği güçlü tip denetimli veriler döndürür.
Geliştirici Ekibinizin maksimum verimlilikle birlikte çalışabileceği entegre, Hepsi Bir Arada bir platform mu istiyorsunuz?
Apidog tüm taleplerinizi karşılar ve Postman'ı çok daha uygun bir fiyata değiştirir!
Claude Code'da Veri Çekme Becerisini Kurma
Adım 1: Claude Code'u Yükleyin ve MCP'yi Yapılandırın
Claude Code CLI'ı henüz yüklemediyseniz:
npm install -g @anthropic-ai/claude-code
claude --version # Should show >= 2.0.70
MCP yapılandırma dizinini ve dosyasını oluşturun:
# macOS/Linux
mkdir -p ~/.config/claude-code
touch ~/.config/claude-code/config.json
# Windows
mkdir %APPDATA%\claude-code
echo {} > %APPDATA%\claude-code\config.json

Adım 2: Veri Çekme Becerisini Klonlayın ve Oluşturun
Resmi veri çekme becerisi, REST, GraphQL ve genel HTTP istekleri için desenler sunar.
git clone https://github.com/anthropics/skills.git
cd skills/skills/data-fetching
npm install
npm run build
Bu, TypeScript işleyicilerini `dist/index.js`'e derler.
Adım 3: Beceriyi Yüklemek İçin MCP'yi Yapılandırın
`~/.config/claude-code/config.json` dosyasını düzenleyin:
{
"mcpServers": {
"data-fetching": {
"command": "node",
"args": ["/absolute/path/to/skills/data-fetching/dist/index.js"],
"env": {
"DEFAULT_TIMEOUT": "30000",
"MAX_RETRIES": "3",
"RATE_LIMIT_PER_MINUTE": "60",
"CREDENTIALS_STORE": "~/.claude-credentials.json"
}
}
}
}
Kritik:
- `args` için mutlak yollar kullanın
- Ortam değişkenlerini yapılandırın:
- `DEFAULT_TIMEOUT`: Milisaniye cinsinden istek zaman aşımı
- `MAX_RETRIES`: 5xx hataları için yeniden deneme sayısı
- `RATE_LIMIT_PER_MINUTE`: Hız sınırlama eşiği
- `CREDENTIALS_STORE`: Şifrelenmiş kimlik bilgileri dosyasının yolu

Adım 4: Kimlik Bilgileri Depolamasını Ayarlayın
Token'ları doğrudan kodlamaktan kaçınmak için kimlik bilgileri dosyasını oluşturun:
# Şifrelenmiş kimlik bilgileri deposu oluştur
mkdir -p ~/.claude
echo '{}' > ~/.claude/credentials.json
chmod 600 ~/.claude/credentials.json
API token'larınızı ekleyin:
{
"github": {
"token": "ghp_your_github_token_here",
"baseUrl": "https://api.github.com"
},
"slack": {
"token": "xoxb-your-slack-token",
"baseUrl": "https://slack.com/api"
},
"custom-api": {
"token": "Bearer your-jwt-token",
"baseUrl": "https://api.yourcompany.com",
"headers": {
"X-API-Version": "v2"
}
}
}
Beceri, başlangıçta bu dosyayı okur ve kimlik bilgilerini isteklere enjekte eder.
Adım 5: Kurulumu Doğrulayın
claude
Yüklendikten sonra şunu çalıştırın:
/list-tools
Şunları görmelisiniz:
Available tools:
- data-fetching:rest-get
- data-fetching:rest-post
- data-fetching:rest-put
- data-fetching:rest-delete
- data-fetching:graphql-query
- data-fetching:graphql-mutation
- data-fetching:raw-http
Temel API İstek Desenleri
1. RESTful GET İstekleri
Araç: `data-fetching:rest-get`
Kullanım Durumu: Kimlik doğrulama, sayfalama ve önbellekleme ile REST uç noktalarından veri çekme
Parametreler:
- `service`: Kimlik bilgileri deposuyla eşleşen anahtar (github, slack, custom-api)
- `endpoint`: API yolu (ör. `/users`, `/repos/sahip/isim`)
- `params`: Sorgu parametreleri nesnesi
- `cache`: Saniye cinsinden TTL (isteğe bağlı)
- `transform`: Yanıt dönüşümü için JMESPath ifadesi
Örnek: GitHub kullanıcı depolarını getirme
GitHub API'den "anthropics" kullanıcısı için depoları almak üzere rest-get kullanın; sayfa başına 100 öğe için sayfalama dahil olmak üzere yalnızca adı, açıklamayı ve stargazers_count değerini döndürün.
Oluşturulan yürütme:
// İşleyici şunu yürütür:
const response = await fetch('https://api.github.com/users/anthropics/repos', {
headers: {
'Authorization': 'token ghp_your_github_token_here',
'Accept': 'application/vnd.github.v3+json'
},
params: {
per_page: 100,
page: 1
}
});
// JMESPath ile dönüştür
const transformed = jmespath.search(response, '[*].{name: name, description: description, stars: stargazers_count}');
return transformed;
Claude Code kullanımı:
claude --skill data-fetching \
--tool rest-get \
--params '{"service": "github", "endpoint": "/users/anthropics/repos", "params": {"per_page": 100}, "transform": "[*].{name: name, description: description, stars: stargazers_count}"}'
2. POST/PUT/DELETE İstekleri
Araç: `data-fetching:rest-post` / `rest-put` / `rest-delete`
Kullanım Durumu: Kaynak oluşturma, güncelleme veya silme
Parametreler:
- `service`: Kimlik bilgileri depolama anahtarı
- `endpoint`: API yolu
- `body`: İstek yükü (nesne veya JSON dizesi)
- `headers`: Ek başlıklar
- `idempotencyKey`: Yeniden deneme güvenliği için
Örnek: Bir GitHub sorunu oluşturma
anthorpics/claude deposunda "Özellik İsteği: MCP Araç Önbellekleme" başlığı, açıklamayı içeren gövde ve ["geliştirme", "mcp"] etiketleriyle bir sorun oluşturmak için rest-post kullanın.
Yürütme:
await fetch('https://api.github.com/repos/anthropics/claude/issues', {
method: 'POST',
headers: {
'Authorization': 'token ghp_...',
'Content-Type': 'application/json'
},
body: JSON.stringify({
title: "Feature Request: MCP Tool Caching",
body: "Açıklamanın özellik..."
labels: ["enhancement", "mcp"]
})
});
3. GraphQL Sorguları
Araç: `data-fetching:graphql-query`
Kullanım Durumu: İç içe geçmiş ilişkilerle karmaşık veri çekme
Parametreler:
- `service`: Kimlik bilgileri depolama anahtarı
- `query`: GraphQL sorgu dizesi
- `variables`: Sorgu değişkenleri nesnesi
- `operationName`: Adlandırılmış işlem
Örnek: Yorumlu depo sorunlarını getirme
anthorpics/skills deposundan başlık, yazar, yorum sayısı ve etiketler dahil olmak üzere en son 10 açık sorunu almak için graphql-query kullanın.
query RecentIssues($owner: String!, $repo: String!, $limit: Int!) {
repository(owner: $owner, name: $repo) {
issues(first: $limit, states: [OPEN], orderBy: {field: CREATED_AT, direction: DESC}) {
nodes {
title
author { login }
comments { totalCount }
labels(first: 5) { nodes { name } }
}
}
}
}
Parametreler:
{
"service": "github",
"query": "query RecentIssues($owner: String!, $repo: String!, $limit: Int!) { ... }",
"variables": {
"owner": "anthropics",
"repo": "skills",
"limit": 10
}
}
4. Ham HTTP İstekleri
Araç: `data-fetching:raw-http`
Kullanım Durumu: REST/GraphQL araçları tarafından kapsanmayan özel durumlar
Parametreler:
- `url`: Tam URL
- `method`: HTTP metodu
- `headers`: Başlık nesnesi
- `body`: İstek gövdesi
- `timeout`: Varsayılan zaman aşımını geçersiz kılma
Örnek: Özel başlıklarla Webhook teslimatı
https://hooks.slack.com/services/YOUR/WEBHOOK/URL adresine {text: "Dağıtım tamamlandı"} içeren bir JSON yükü ve özel başlık X-Event: deployment-success ile POST isteği yapmak için raw-http kullanın.
Gelişmiş Ağ Senaryoları
Sayfalama Yönetimi
Beceri, sayfalama desenlerini otomatik olarak algılar:
// GitHub Bağlantı başlığı ayrıştırması
const linkHeader = response.headers.get('Link');
if (linkHeader) {
const nextUrl = parseLinkHeader(linkHeader).next;
if (nextUrl && currentPage < maxPages) {
return {
data: currentData,
nextPage: currentPage + 1,
hasMore: true
};
}
}
Tüm sayfaları isteyin:
"anthropics" kullanıcısı için tüm depoları almak üzere rest-get kullanın, sayfalama artık sayfa kalmayana kadar otomatik olarak yönetilecektir.
Beceri, tüm sonuçların düz bir dizisini döndürür.
Hız Sınırlama ve Yeniden Deneme Mantığı
Her istek için yeniden deneme davranışını yapılandırın:
{
"service": "github",
"endpoint": "/rate_limit",
"maxRetries": 5,
"retryDelay": "exponential",
"retryOn": [429, 500, 502, 503, 504]
}
Beceri, jitter ile üstel geri çekilmeyi (exponential backoff) uygular:
const delay = Math.min(
(2 ** attempt) * 1000 + Math.random() * 1000,
30000
);
await new Promise(resolve => setTimeout(resolve, delay));
Eşzamanlı İstek Yönetimi
Birden çok API çağrısını verimli bir şekilde toplu olarak işleyin:
Depolar için ayrıntıları almak üzere rest-get kullanın: ["claude", "skills", "anthropic-sdk"], istekleri maksimum 3 paralel bağlantı ile eşzamanlı olarak yürütün.
Beceri, eşzamanlılığı sınırlamak için `p-limit` kullanır:
import pLimit from 'p-limit';
const limit = pLimit(3); // Maks 3 eşzamanlı
const results = await Promise.all(
repos.map(repo =>
limit(() => fetchRepoDetails(repo))
)
);
İstek Engelleme ve Sahtekarlık (Mocking)
Test için, gerçek API'lere vurmadan istekleri engelleyin:
// Beceri yapılandırmasında
"env": {
"MOCK_MODE": "true",
"MOCK_FIXTURES_DIR": "./test/fixtures"
}
Şimdi istekler, JSON dosyalarından sahte verileri döndürüyor:
// test/fixtures/github/repos/anthropics.json
[
{"name": "claude", "description": "AI assistant", "stars": 5000}
]
Pratik Uygulama: Bir GitHub Paneli Oluşturma
Adım 1: Depo Verilerini Getirin
GitHub'dan "anthropics" organizasyonu için tüm depoları almak üzere rest-get kullanın; tam açıklama, yıldız sayısı, çatal sayısı ve açık sorun sayısı dahil. Sonuçları 5 dakika önbelleğe alın.
Adım 2: Katkıda Bulunan Verileriyle Zenginleştirin
Her depo için en iyi katkıda bulunanları getirin:
"anthropics/claude" deposu için katkıda bulunan istatistiklerini almak üzere rest-get kullanın, en iyi 10 katkıda bulunanla sınırlayın ve oturum açma ile katkı sayısını çıkarın.
Adım 3: Özet İstatistikleri Oluşturun
Verileri Claude Code'da birleştirin:
const repos = await fetchAllRepos('anthropics');
const enrichedRepos = await Promise.all(
repos.map(async (repo) => {
const contributors = await fetchTopContributors('anthropics', repo.name);
return { ...repo, topContributors: contributors };
})
);
return {
totalStars: enrichedRepos.reduce((sum, r) => sum + r.stars, 0),
totalForks: enrichedRepos.reduce((sum, r) => sum + r.forks, 0),
repositories: enrichedRepos
};
Adım 4: Paneli Yayınlayın
GitHub API'yi kullanarak gh-pages dalına commit yapmak suretiyle panel verileriyle bir GitHub Pages sitesi oluşturmak için rest-post kullanın.
Hata Yönetimi ve Direnç
Beceri, doğru yönetim için hataları kategorize eder:
// 4xx hataları: İstemci hataları
if (response.status >= 400 && response.status < 500) {
throw new SkillError('client_error', `Geçersiz istek: ${response.status}`, {
statusCode: response.status,
details: await response.text()
});
}
// 5xx hataları: Sunucu hataları (yeniden denenebilir)
if (response.status >= 500) {
throw new SkillError('server_error', `Sunucu hatası: ${response.status}`, {
retryable: true,
statusCode: response.status
});
}
// Ağ hataları: Bağlantı hataları
if (error.code === 'ECONNREFUSED' || error.code === 'ETIMEDOUT') {
throw new SkillError('network_error', 'Ağa erişilemiyor', {
retryable: true,
originalError: error.message
});
}
Claude Code yapılandırılmış hatalar alır ve yeniden denemeye, iptal etmeye veya kullanıcı müdahalesi istemeye karar verebilir.
Sonuç
API ağ iletişimi için Claude Code Becerileri, geçici HTTP isteklerini güvenilir, tip güvenli ve gözlemlenebilir veri çekme araçlarına dönüştürür. Kimlik bilgisi yönetimini merkezileştirerek, akıllı yeniden denemeler uygulayarak ve yapılandırılmış hata yönetimi sağlayarak, API entegrasyon hatalarının en yaygın kaynaklarını ortadan kaldırırsınız. Dört çekirdek araçla başlayın—rest-get, rest-post, graphql-query ve raw-http—ardından özel kullanım durumlarınız için bunları genişletin. Beceri yapılandırmasına yapılan yatırım, kod tutarlılığı ve geliştirme hızı açısından anında geri dönüş sağlar.
Veri çekme becerileriniz dahili API'lerle etkileşime girdiğinde, yapay zeka destekli entegrasyonlarınızın güvenilir sözleşmeleri kullandığından emin olmak için bu uç noktaları Apidog ile doğrulayın.
