Hedef: Python (FastAPI) kullanarak, dışarıdan güncel kurları çeken, önbellekleme (caching) yapan ve Swagger dokümantasyonu olan profesyonel bir API geliştirmek.
1. Aşama: Mimarinin Tasarlanması ve Yaptırılacak İşin Tanımı
Yazılıma başlamadan önce yapay zekaya doğrudan kod yazdırmak yerine, projeyi mimari açıdan planlamasını isteyin.
Prompt 1 (Mimarı Rolü): “Sen kıdemli bir Backend Mimarısın. Python ve FastAPI kullanarak bir Döviz Dönüştürücü API geliştireceğiz. Sistem dış bir API’den (örn. Exchangerate-api) kurları çekecek, her istekte dış sunucuya gitmemek için lütfı memory-cache (veya functools) kullanacak. Bana bu projenin dosya yapısını, kullanılacak kütüphaneleri ve temel mimari adımlarını listeler misin?”
YZ’nin Çıktısı (Özet):
main.py(API rotaları ve FastAPI uygulaması)services.py(Dış API çağrıları ve dönüştürme mantığı)schemas.py(Pydantic veri doğrulama modelleri)requirements.txt(fastapi,uvicorn,requests,pydantic)
2. Aşama: Veri Modelleri ve İş Mantığının (Business Logic) Üretilmesi
Dosya yapısı belirlendikten sonra kod bloklarını modüler olarak ürettirin.
Prompt 2 (Kod Üretimi – Veri Modelleri): “FastAPI projemiz için schemas.py dosyasını yaz. İstek (Request) modeli olarak from_currency, to_currency ve amount almalı. Yanıt (Response) modeli olarak from_currency, to_currency, original_amount, converted_amount ve rate döndürmeli. Pydantic v2 uyumlu olsun ve tip kontrolleri/örnek değerler (json_schema_extra) içersin”.
Prompt 3 (İş Mantığı ve Cache): “Şimdi services.py dosyasını yaz. Bu dosya dış bir API’den güncel döviz kurunu çekip hesaplama yapacak. Dış API erişimi başarısız olursa uygun bir Exception fırlatmalı. Ayrıca functools.lru_cache veya zamana dayalı basit bir önbellek mekanizması ekleyerek aynı kurlar için sürekli dış servise istek atılmasını engelle”.
3. Aşama: API Rotalarının Birleştirilmesi (main.py)
Şimdi üretilen parçaları FastAPI’nin ana uygulamasına bağlıyoruz.
# main.py örneği (YZ tarafından üretilen yapı)
from fastapi import FastAPI, HTTPException, Depends
from schemas import ConversionRequest, ConversionResponse
from services import CurrencyService
app = FastAPI(
title=”YZ Destekli Döviz Dönüştürücü API”,
description=”FastAPI ve YZ desteğiyle geliştirilmiş kur dönüştürücü servis.”,
version=”1.0.0″
)
currency_service = CurrencyService()
@app.post(“/convert”, response_model=ConversionResponse, summary=”Para Birimi Dönüştür”)
async def convert_currency(request: ConversionRequest):
try:
result = currency_service.convert(
from_curr=request.from_currency,
to_curr=request.to_currency,
amount=request.amount
)
return result
except Exception as e:
raise HTTPException(status_code=400, detail=str(e))
4. Aşama: Birim Testlerinin (Unit Test) Otomatik Yazdırılması
Bir YZ modelinin en başarılı olduğu alanlardan biri, yazılan koda uygun Unit Test üretmektir.
Prompt 4 (Test Yazımı): “Yukarıda yazdığımız services.py ve main.py kodları için pytest ve FastAPI TestClient kullanarak birim testleri yaz. Dış API çağrılarını unittest.mock (Mocking) kullanarak simüle et, böylece testler çalışırken gerçek internet isteği atılmasın”.
5. Aşama: Refactoring ve Hata Ayıklama (Debugging)
Kod çalıştıktan sonra güvenlik, performans ve okunabilirlik taraması yaptırın.
Prompt 5 (Kod İyileştirme ve Güvenlik): “Yazdığımız bu tüm kodları incele:
- Herhangi bir bellek sızıntısı veya güvenlik açığı var mı?
- Type hint (tip ipuçları) eksiksiz mi?
- Hata yönetimi (Error Handling) edge-case’leri (örneğin eksi miktar girilmesi, geçersiz para birimi kodu) kapsıyor mu? Eksikleri giderip production-ready (canlıya alınabilir) hale getir”.
Yorumlar (0)