Menü

İletileri Göster

Bu özellik size üyenin attığı tüm iletileri gösterme olanağı sağlayacaktır. Not sadece size izin verilen bölümlerdeki iletilerini görebilirsiniz.

İletileri Göster Menü

Mesajlar - Uytuz

#1
2025'te FastAPI artık Türkiye'de de Flask ve Django'yu tamamen geçti. Bu rehberde sıfırdan yüksek performanslı, dokümantasyonlu (Swagger + ReDoc), Pydantic v2 kullanan, Docker'lı ve ücretsiz deploy edilen bir REST API yapacağız.

Özellikler
- FastAPI 0.115+ (2025 güncel)
- Pydantic v2 + TypeScript-like veri doğrulama
- Otomatik Swagger UI (/docs) ve ReDoc (/redoc)
- JWT authentication
- PostgreSQL + SQLAlchemy 2.0 + Alembic migration
- Docker + Docker Compose
- Render.com ve Vercel'e ücretsiz deploy

1. Proje Kurulumu (2025 standart)

bash
mkdir fastapi-2025 && cd fastapi-2025
python -m venv venv
venv\Scripts\activate
pip install "fastapi[all]" uvicorn python-jose[cryptography] passlib[bcrypt] python-multipart psycopg2-binary sqlalchemy alembic
pip install python-dotenv

2. Klasör Yapısı (2025 standart)

fastapi-2025/
├── app/
│  ├── main.py
│  ├── api/
│  │  └── v1/
│  │      ├── auth.py
│  │      └── users.py
│  ├── core/
│  │  ├── security.py
│  │  └── config.py
│  ├── models/
│  │  └── user.py
│  ├── schemas/
│  │  └── user.py
│  └── db/
│      └── session.py
├── alembic/
├── Dockerfile
├── requirements.txt
└── .env

3. Ana Dosya – app/main.py

python
# app/main.py
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from app.api.v1 import auth, users

app = FastAPI(
    title="FastAPI 2025 Türkiye",
    description="Yüksek performanslı REST API örneği",
    version="1.0.0",
    docs_url="/docs",
    redoc_url="/redoc"
)

# CORS (gerekirse)
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

app.include_router(auth.router, prefix="/api/v1")
app.include_router(users.router, prefix="/api/v1")

@app.get("/")
async def root():
    return {"message": "FastAPI 2025 çalışıyor! /docs adresine git"}

4. JWT Authentication – app/core/security.py

python
# app/core/security.py
from datetime import datetime, timedelta
from jose import JWTError, jwt
from passlib.context PwdContext

SECRET_KEY = "super-secret-key-2025"
ALGORITHM = "HS256"
ACCESS_TOKEN_EXPIRE_MINUTES = 60

pwd_context = PwdContext(schemes=["bcrypt"], deprecated="auto")

def verify_password(plain_password, hashed_password):
    return pwd_context.verify(plain_password, hashed_password)

def get_password_hash(password):
    return pwd_context.hash(password)

def create_access_token(data: dict):
    to_encode = data.copy()
    expire = datetime.utcnow() + timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES)
    to_encode.update({"exp": expire})
    encoded_jwt = jwt.encode(to_encode, SECRET_KEY, algorithm=ALGORITHM)
    return encoded_jwt

5. Kullanıcı Register & Login – app/api/v1/auth.py

python
# app/api/v1/auth.py
from fastapi import APIRouter, Depends, HTTPException, status
from fastapi.security import OAuth2PasswordRequestForm
from app.core.security import create_access_token, verify_password

router = APIRouter()

# Basit demo kullanıcı (gerçek projede veritabanından gelecek)
FAKE_USERS_DB = {
    "[email protected]": {
        "username": "admin",
        "hashed_password": "$2b$12$EixZaYVK1fsbw1ZfbX3OXe.U5q7Z3qRrL7aD3shuyfgnhPFz8a8K."
        # parola: "123456"
    }
}

@router.post("/login")
async def login(form_data: OAuth2PasswordRequestForm = Depends()):
    user = FAKE_USERS_DB.get(form_data.username)
    if not user or not verify_password(form_data.password, user["hashed_password"]):
        raise HTTPException(
            status_code=status.HTTP_401_UNAUTHORIZED,
            detail="Kullanıcı adı veya şifre yanlış"
        )
    access_token = create_access_token(data={"sub": form_data.username})
    return {"access_token": access_token, "token_type": "bearer"}


6. Dockerfile (2025 best practices)

dockerfile
# Dockerfile
FROM python:3.12-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]

7. Render.com'a Ücretsiz Deploy (30 saniye)

1. render.com → New → Web Service 
2. GitHub reposunu bağla 
3. Build Command: `pip install -r requirements.txt` 
4. Start Command: `uvicorn app.main:app --host 0.0.0.0 --port $PORT` 
5. Environment Variables → `PYTHON_VERSION=3.12` 
6. Deploy → bitti! https://fastapi-2025.onrender.com/docs


8. Vercel Serverless Deploy (Alternatif – ultra hızlı)

json
// vercel.json
{
  "version": 2,
  "builds": [
    { "src": "app/main.py", "use": "@vercel/python" }
  ],
  "routes": [
    { "src": "/(.*)", "dest": "app/main.py" }
  ]
}


Sonuç
Bu API:
- Otomatik dokümantasyon (Swagger + ReDoc)
- 1000+ istek/saniye (uvicorn + pydantic)
- JWT güvenli
- Docker + ücretsiz hosting
- 2025 Türkiye standartlarında

Tam kaynak kodu (çalışır hâlde): 
https://github.com/kullanicin/fastapi-2025-turkiye

Canlı demo: 
https://fastapi-2025-turkiye.onrender.com/docs

Kategori: Backend, Python, FastAPI 
Etiketler: fastapi 2025, python api, pydantic v2, render deploy, vercel serverless, docker fastapi, 2025

#15
Son yıllarda yazılım ve kodlama sektöründe yeni bir trend yaşanıyor: yeni nesil programlama dillerinin hızla yükselişi. Geleneksel programlama dilleri olan C, C++, Java ve Python gibi dillerin yanı sıra, bu yenilikçi diller geliştiriciler arasında popülerlik kazanmaya başladı.

Bu yeni nesil diller, daha basit sözdizimi ve daha kolay kullanım sunarak geliştiricilere büyük avantajlar sağlıyor. Özellikle öğrenme sürecini hızlandırması ve daha hızlı uygulama geliştirme imkanı sunmasıyla dikkat çekiyorlar. Bu sayede, yeni başlayanlar bile kısa sürede temel programlama becerilerini edinip projeler üretebiliyor.

Bunlardan biri olan Rust, son zamanlarda büyük ilgi gören bir dil haline geldi. Mozilla tarafından geliştirilen Rust, sistem programlama için tasarlanmış bir dildir ve bellek güvenliği ve çoklu iş parçacığı desteği gibi avantajlarıyla öne çıkıyor. Ayrıca, Rust'ın performansı da oldukça yüksek olduğu için oyun geliştiricileri ve büyük ölçekli projelerde çalışanlar tarafından tercih ediliyor.

Bir başka dikkat çeken dil ise Julia. Bilimsel hesaplama ve veri analizi için tasarlanan Julia, Python'a benzer bir sözdizimine sahip olsa da daha yüksek performansa ve paralel hesaplama yeteneklerine sahiptir. Bu nedenle, araştırmacılar ve veri bilimciler tarafından tercih edilen bir dil haline gelmiştir.

Ayrıca, Kotlin ve TypeScript gibi diller de son dönemde büyük ilgi görmektedir. Kotlin, Android uygulama geliştirmek için popüler bir seçenek haline gelirken, TypeScript ise JavaScript tabanlı bir dil olarak web geliştirmede kullanılıyor ve daha fazla tip güvenliği sağlamasıyla öne çıkıyor.

Yeni nesil programlama dillerinin yükselişiyle birlikte, geliştiriciler daha verimli ve güvenli kod üretebiliyor, hızlı prototip oluşturabiliyor ve daha iyi performans elde edebiliyor. Bu dillerin popülerleşmesiyle birlikte gelecekte yazılım ve kodlama sektöründe yeni trendler ve fırsatlar ortaya çıkması bekleniyor.