Aracı Geliştiricileri İçin REST API Temelleri
HTTP yöntemleri, durum kodları, üst bilgiler ve JSON istek/yanıt biçimi.
Aracı Geliştiricileri İçin REST API Temelleri, CoddyKit'te ücretsiz bir AI Agents dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Agents öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Agents kursu toplamda 4 dersten oluşur.
HTTP İsteği Nedir?
Harici bir hizmete bağlanan her ajan, web'in dili olan HTTP'yi kullanır. Bir HTTP isteğinin üç temel parçası vardır: bir yöntem, bir URL ve isteğe bağlı başlıklar ile bir gövde.
Yöntemi sunucuya ne yapmak istediğinizi bildiren bir fiil, URL'yi de kaynağın adresi olarak düşünün.
import requests
# A simple GET request to a public API
response = requests.get('https://api.example.com/users')
print(response.status_code) # 200
print(response.text) # raw JSON stringGET — Veri Getirme
GET sunucudan veri alır. Hiçbir şeyi değiştirmemelidir. Ajanlar, kullanıcı profillerini okumak, görev listelerini getirmek veya yapılandırma verilerini almak için GET kullanır.
Parametreleri, params bağımsız değişkenini kullanarak URL'de bir sorgu dizesi olarak iletebilirsiniz.
import requests
# Fetch users filtered by role
params = {'role': 'admin', 'page': 1, 'limit': 10}
response = requests.get(
'https://api.example.com/users',
params=params
)
# URL becomes: /users?role=admin&page=1&limit=10
data = response.json()
print(data['users'])POST — Kaynak Oluşturma
POST, yeni bir kaynak oluşturmak için sunucuya veri gönderir. Ajanlar görev göndermek, ileti yollamak veya eylemleri tetiklemek için POST kullanır. Veriler JSON olarak istek gövdesine konur.
Content-Type: application/json başlığını her zaman ayarlayın; çoğu API bunu gerektirir.
import requests
import json
payload = {
'title': 'Research competitors',
'assignee': 'agent-001',
'priority': 'high'
}
response = requests.post(
'https://api.example.com/tasks',
json=payload # sets Content-Type automatically
)
print(response.status_code) # 201 Created
new_task = response.json()
print('Created task ID:', new_task['id'])PUT ve PATCH — Verileri Güncelleme
PUT, bir kaynağın tamamını yeni verilerle değiştirir. PATCH yalnızca belirli alanları günceller. Ajanlar, güncellenmiş nesnenin tamamına sahip olduklarında PUT, bir görevin durumunu güncellemek gibi kısmi değişikliklerde ise PATCH kullanır.
import requests
task_id = '42'
# PATCH: only update the status field
response = requests.patch(
f'https://api.example.com/tasks/{task_id}',
json={'status': 'completed'}
)
print(response.status_code) # 200
# PUT: replace the whole task object
full_task = {
'title': 'Research competitors',
'assignee': 'agent-001',
'priority': 'low',
'status': 'completed'
}
response = requests.put(
f'https://api.example.com/tasks/{task_id}',
json=full_task
)
print(response.status_code) # 200DELETE — Kaynakları Kaldırma
DELETE, bir kaynağı sunucudan kaldırır. Ajanlar geçici verileri temizlemek, işlenmiş görevleri kaldırmak veya zamanlanmış işleri iptal etmek için DELETE kullanır. DELETE isteklerinin çoğunda gövde bulunmaz.
Başarılı bir silme işlemi genellikle 204 No Content döndürür; yanıtta gövde bulunmaz.
import requests
task_id = '42'
response = requests.delete(
f'https://api.example.com/tasks/{task_id}'
)
if response.status_code == 204:
print('Task deleted successfully')
elif response.status_code == 404:
print('Task not found — already deleted?')
else:
print('Unexpected status:', response.status_code)Durum Kodları: 2xx Başarılı
Durum kodları, bir isteğin başarılı mı yoksa başarısız mı olduğunu ajana bildirir. 2xx aralığı başarı anlamına gelir:
200 OK— GET/PUT/PATCH veri döndürdü201 Created— POST yeni bir kaynak oluşturdu204 No Content— DELETE başarılı oldu, gövde döndürülmedi
Yanıt gövdesini işlemeden önce durum kodunu her zaman denetleyin.
import requests
response = requests.post(
'https://api.example.com/tasks',
json={'title': 'New task'}
)
if response.status_code == 201:
task = response.json()
print('Created:', task['id'])
elif response.status_code == 200:
print('Updated existing resource')
else:
print('Unexpected code:', response.status_code)Durum Kodları: 4xx İstemci Hataları
4xx hataları, ajanınızın hatalı bir istek gönderdiği anlamına gelir. Yaygın olanlar:
400 Bad Request— geçersiz JSON veya gerekli alan eksik401 Unauthorized— API anahtarı eksik veya geçersiz404 Not Found— kaynak mevcut değil429 Too Many Requests— istek hızı sınırı aşıldı
Bunlar, körlemesine yeniden denemek yerine ajanın isteği düzeltmesini gerektirir.
import requests
response = requests.get(
'https://api.example.com/tasks/9999',
headers={'Authorization': 'Bearer YOUR_KEY'}
)
if response.status_code == 401:
print('AUTH ERROR: Check your API key')
elif response.status_code == 404:
print('Task not found')
elif response.status_code == 429:
retry_after = response.headers.get('Retry-After', 60)
print(f'Rate limited. Wait {retry_after}s')
elif response.status_code == 400:
print('Bad request:', response.json().get('error'))Durum Kodları: 5xx Sunucu Hataları
5xx hataları, sunucu tarafında bir şeylerin ters gittiği anlamına gelir; ajanınız hiçbir hata yapmamıştır. Yaygın olanlar:
500 Internal Server Error— sunucu hatası veya çökmesi502 Bad Gateway— üst hizmette hata503 Service Unavailable— sunucu aşırı yüklü veya çalışmıyor
Kısa bir beklemenin ardından bunları yeniden denemek güvenlidir.
import requests
import time
def get_with_retry(url, headers, max_retries=3):
for attempt in range(max_retries):
response = requests.get(url, headers=headers)
if response.status_code < 500:
return response # success or client error
wait = 2 ** attempt
print(f'Server error {response.status_code}, retrying in {wait}s...')
time.sleep(wait)
return response # return last response after retriesİstek Başlıkları
Başlıklar, her istekle birlikte üstveri taşır. Ajanlar için en önemli olanlar şunlardır:
Content-Type: application/json— sunucuya gövdenizin JSON olduğunu bildirirAuthorization: Bearer TOKEN— isteğinizin kimliğini doğrularAccept: application/json— sunucuya karşılığında JSON beklediğinizi bildirirUser-Agent— istemcinizi tanımlar (bazı API'ler bunu gerektirir)
import requests
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer sk-proj-abc123xyz',
'Accept': 'application/json',
'User-Agent': 'MyAgent/1.0'
}
response = requests.post(
'https://api.example.com/analyze',
headers=headers,
json={'text': 'Analyze this document'}
)
print(response.json())JSON İstek ve Yanıt Gövdesi
Modern API'lerin çoğu verileri JSON olarak alıp verir. Gönderirken isteklerde json=payload kullanın; bu, veriyi serileştirir ve başlıkları otomatik olarak ayarlar. Alırken gövdeyi Python sözlüğüne ayrıştırmak için response.json() çağrısını yapın.
Erişmeden önce beklenen anahtarların bulunduğunu her zaman doğrulayın.
import requests
# Send JSON body
response = requests.post(
'https://api.example.com/summarize',
json={
'content': 'Long article text here...',
'max_length': 150,
'format': 'bullet_points'
}
)
# Parse JSON response
result = response.json()
# Always check keys exist
summary = result.get('summary', 'No summary returned')
tokens_used = result.get('usage', {}).get('total_tokens', 0)
print('Summary:', summary)
print('Tokens used:', tokens_used)Hepsini Bir Araya Getirme
İyi yazılmış bir ajan, API çağrılarını yöntem seçimi, uygun başlıklar, durum kodu denetimi ve JSON ayrıştırmayı temiz bir yardımcı işleve sararak gerçekleştirir. Bu, her API etkileşimini tutarlı ve hata ayıklaması kolay hâle getirir.
Bağlantıları yeniden kullanmak ve başlıkları birden çok istek arasında paylaşmak için bir Session nesnesi kullanın.
import requests
class APIClient:
def __init__(self, base_url, api_key):
self.base_url = base_url
self.session = requests.Session()
self.session.headers.update({
'Authorization': f'Bearer {api_key}',
'Content-Type': 'application/json',
'Accept': 'application/json'
})
def get(self, path, params=None):
r = self.session.get(f'{self.base_url}{path}', params=params)
r.raise_for_status()
return r.json()
def post(self, path, payload):
r = self.session.post(f'{self.base_url}{path}', json=payload)
r.raise_for_status()
return r.json()
# Usage
client = APIClient('https://api.example.com', 'sk-proj-abc123')
tasks = client.get('/tasks', params={'status': 'open'})
new_task = client.post('/tasks', {'title': 'Write report'})Hızlı Kontrol: HTTP Yöntemleri
HTTP yöntemleri ve durum kodları konusundaki anlayışınızı test edin.
HTTP Temelleri Özeti
Artık her ajanın dayandığı HTTP temelini biliyorsunuz:
- GET getirir, POST oluşturur, PUT/PATCH günceller, DELETE kaldırır
- 2xx = başarı, 4xx = ajanın hatası, 5xx = sunucunun hatası
- Başlıklar kimlik doğrulamasını (
Authorization: Bearer) ve biçimi (Content-Type: application/json) taşır - Gövdeyi ayrıştırmak için
response.json(), alanlara güvenli biçimde erişmek için.get()kullanın - Bir
Sessionnesnesi, istekler arasında başlıkları ve bağlantıları paylaşır
Bu temeller sağlam olduğunda, ajanınızı herhangi bir REST API'sine güvenle bağlayabilirsiniz.
Sıkça Sorulan Sorular
“Aracı Geliştiricileri İçin REST API Temelleri” dersi ücretsiz mi?
Evet — “Aracı Geliştiricileri İçin REST API Temelleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Agents kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Agents kursu toplamda 4 dersten oluşur.
“Aracı Geliştiricileri İçin REST API Temelleri” dersinde ne öğreneceğim?
HTTP yöntemleri, durum kodları, üst bilgiler ve JSON istek/yanıt biçimi. AI Agents ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
AI Agents öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te AI Agents, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Aracı Geliştiricileri İçin REST API Temelleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu AI Agents dersinde kod yazıp çalıştırabilir miyim?
Evet. Her AI Agents dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Aracı Geliştiricileri İçin REST API Temelleri
- Kimlik Doğrulama: API Anahtarları ve OAuth
- API Yanıtlarını ve Hatalarını Ele Alma
- Hız Sınırlama ve Yeniden Deneme Mantığı