FastAPI ve MongoDB ile Sağlam API'ler Oluşturmak

FastAPI ve MongoDB ile hızlı API'lar oluşturmayı öğrenin. Çevre kurulumundan, endpoint testine her şey dahil, sağlam uygulamalar için.

Efe Demir

Efe Demir

5 June 2025

FastAPI ve MongoDB ile Sağlam API'ler Oluşturmak

Günümüzün teknoloji odaklı dünyasında, hızlı, verimli ve ölçeklenebilir API'ler oluşturmak geliştiriciler için çok önemlidir. Popülerlik kazanan güçlü bir kombinasyon, FastAPI'nin MongoDB ile birlikte kullanılmasıdır. FastAPI, adından da anlaşılacağı gibi, Python 3.7+ ile API'ler oluşturmak için modern, yüksek performanslı bir web çerçevesidir; kodlaması ve çalıştırması hızlıdır. Bu arada, MongoDB ölçeklenebilirliği ve esnekliği ile bilinen bir NoSQL veritabanıdır. Birlikte, küçük bir projeden büyük ölçekli bir uygulamaya kadar her şeyi işleyebilen API'ler oluşturmak için sağlam bir çözüm sunarlar.

Peki, neden bir sonraki projeniz için bu ikiliyi düşünmelisiniz? Hadi dalalım!

Başlarken: Ortamınızı Kurma

API'mizi oluşturmaya başlamadan önce, ortamımızı kuralım. Sisteminizde Python'un yüklü olması ve paketleri yönetmek için pip'e ihtiyacınız olacak.

FastAPI çerçevesi, yüksek performans, öğrenmesi kolay, kodlaması hızlı, üretime hazır

Adım 1: FastAPI ve Uvicorn'u Yükleyin

İlk olarak, FastAPI'yi yükleyelim. Terminalinizi açın ve aşağıdaki komutu çalıştırın:

pip install fastapi

Ardından, FastAPI uygulamamıza hizmet edecek olan, Python için bir ASGI sunucu uygulaması olan Uvicorn'u yükleyeceğiz:

pip install uvicorn

Adım 2: Motor'u Yükleyin

Motor, FastAPI ile sorunsuz çalışan MongoDB için async sürücüsüdür. Yüklemek için şunu çalıştırın:

pip install motor

Harika! Artık kodlamaya başlamak için ihtiyacımız olan her şeye sahibiz.

İlk FastAPI Uygulamanızı Oluşturma

Şimdi, temel bir FastAPI uygulaması oluşturalım ve onu MongoDB'ye bağlayalım.

Adım 1: FastAPI Uygulamasını Başlatın

Yeni bir Python dosyası oluşturun (main.py olarak adlandıralım) ve FastAPI'yi içe aktararak ve uygulamayı başlatarak başlayın:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def read_root():
    return {"message": "MongoDB ile FastAPI eğitimine hoş geldiniz!"}

Bu kod, tek bir uç nokta ile temel bir FastAPI uygulaması kurar.

mongoDB official website

Adım 2: MongoDB'ye Bağlanın

Ardından, FastAPI uygulamamızı Motor kullanarak MongoDB'ye bağlayalım. Veritabanı bağlantımızı yönetmek için database.py adlı yeni bir dosya oluşturacağız.

from motor.motor_asyncio import AsyncIOMotorClient

MONGO_DETAILS = "mongodb://localhost:27017"

client = AsyncIOMotorClient(MONGO_DETAILS)
database = client.mydatabase

Bu örnekte, yerel olarak çalışan bir MongoDB örneğine bağlanıyoruz. MongoDB'nin sisteminizde yüklü ve çalışır durumda olduğundan emin olun.

Adım 3: Pydantic Modellerini Tanımlayın

Pydantic modelleri, veri yapılarını tanımlamak ve FastAPI'de veri doğrulamasını sağlamak için harika bir yoldur. Bir models.py dosyası oluşturun:

from pydantic import BaseModel

class Item(BaseModel):
    name: str
    description: str
    price: float
    available: bool = True

Bu model, envanterimizdeki bir öğenin yapısını tanımlar.

API Uç Noktaları Oluşturma

Temel kurulumu hallettiğimize göre, MongoDB veritabanımızla etkileşim kurmak için bazı API uç noktaları oluşturalım.

Adım 1: Öğeler Koleksiyonu Oluşturun

İlk olarak, öğeleri depolamak için MongoDB veritabanımızda bir koleksiyona ihtiyacımız var. main.py içinde, veritabanına yeni öğeler eklemek için bir uç nokta oluşturalım:

from fastapi import FastAPI, HTTPException
from database import database
from models import Item
from bson import ObjectId

app = FastAPI()

@app.post("/items/")
async def create_item(item: Item):
    item_dict = item.dict()
    result = await database["items"].insert_one(item_dict)
    item_dict["_id"] = str(result.inserted_id)
    return item_dict

Bu uç nokta, MongoDB koleksiyonunda yeni öğeler oluşturmamızı sağlar. Eklenen kimliği daha iyi okunabilirlik için bir dizeye nasıl dönüştürdüğümüze dikkat edin.

Adım 2: Öğeleri Alın

Ardından, veritabanından tüm öğeleri almak için bir uç nokta oluşturacağız:

@app.get("/items/")
async def get_items():
    items = await database["items"].find().to_list(1000)
    for item in items:
        item["_id"] = str(item["_id"])
    return items

Bu uç nokta, items koleksiyonundan tüm öğeleri alır ve kimliklerini dizelere dönüştürür.

Adım 3: Tek Bir Öğeyi Alın

Tek bir öğeyi kimliğine göre almak için, başka bir uç nokta ekleyeceğiz:

@app.get("/items/{item_id}")
async def get_item(item_id: str):
    item = await database["items"].find_one({"_id": ObjectId(item_id)})
    if item:
        item["_id"] = str(item["_id"])
        return item
    raise HTTPException(status_code=404, detail="Öğe bulunamadı")

Bu uç nokta, bir öğeyi kimliğine göre alır ve döndürür veya öğe bulunamazsa 404 hatası verir.

Adım 4: Bir Öğeyi Güncelleyin

FastAPI ve Motor ile bir öğeyi güncellemek basittir. Bir öğeyi kimliğine göre güncellemek için aşağıdaki kodu ekleyin:

@app.put("/items/{item_id}")
async def update_item(item_id: str, item: Item):
    result = await database["items"].update_one(
        {"_id": ObjectId(item_id)}, {"$set": item.dict()}
    )
    if result.modified_count == 1:
        updated_item = await database["items"].find_one({"_id": ObjectId(item_id)})
        updated_item["_id"] = str(updated_item["_id"])
        return updated_item
    raise HTTPException(status_code=404, detail="Öğe bulunamadı")

Bu uç nokta, bir öğeyi kimliğine göre günceller ve güncellenmiş öğeyi döndürür.

Adım 5: Bir Öğeyi Silin

Son olarak, bir öğeyi kimliğine göre silmek için bir uç nokta ekleyelim:

@app.delete("/items/{item_id}")
async def delete_item(item_id: str):
    result = await database["items"].delete_one({"_id": ObjectId(item_id)})
    if result.deleted_count == 1:
        return {"message": "Öğe silindi"}
    raise HTTPException(status_code=404, detail="Öğe bulunamadı")

Bu uç nokta bir öğeyi siler ve bir başarı mesajı veya öğe bulunamazsa 404 hatası döndürür.

MongoDB Veritabanına Apidog'a Nasıl Bağlanılır

  1. API'de "İşlemci İşlemi"ni tıklayın ve "Veritabanı İşlemleri"ni seçin.
API'de "İşlemci İşlemi"ni tıklayın ve "Veritabanı İşlemleri"ni seçin.

2. "Veritabanı Bağlantısı" altındaki açılır kutuda "Veritabanı Bağlantısını Yönet"'i tıklayın, ardından sağ üst köşedeki "Yeni" düğmesini tıklayın.

"Veritabanı Bağlantısını Yönet"i tıklayın

3. MongoDB veritabanı türünü seçin, ardından ilgili bağlantı bilgilerini doldurun.

MongoDB veritabanı türünü seçin
💡
Apidog, verilerinizin güvenliğine önem verir. Veritabanı adresi, port, kullanıcı adı, şifre, veritabanı adı yalnızca istemcide yerel olarak saklanır ve buluta senkronize edilmez. Aynı ekip içinde bile, veritabanları için bağlantı bilgileri üyeler arasında senkronize edilmeyecektir. Her ekip üyesinin veritabanı bağlantısını manuel olarak kurması gerekir.

MongoDB Veritabanını İşletme

MongoDB, verileri BSON belge formatında saklar. Çoğu kullanıcının kullanım alışkanlıklarının kolaylığı için, Apidog'da MongoDB veritabanlarını değiştirirken, JSON formatında dosyalar gönderin. Sistem, her alanı JSON'un gerçek içeriğine göre karşılık gelen BSON veri türüne otomatik olarak eşleyecektir.

Bunların arasında, _id alanı nispeten özeldir. MongoDB özelliklerine göre, her belgenin birincil anahtar olarak bir _id alanı olması gerekir ve bu alanın varsayılan veri türü String yerine ObjectId'dir.

ObjectId türünde bir _id alanı bildirmeniz gerekiyorsa, geleneksel dize formatını kullanabilirsiniz. Dize içeriği ObjectId formatına uygunsa, Apidog bunu otomatik olarak BSON'daki ObjectId türüne eşleyecektir.

Şimdi MongoDB'de böyle bir BSON belgesi olduğunu varsayalım:

{    _id: ObjectId('6569a36afcf5ee79c08d2f94'),    name: "Apidog"}

Bu nedenle, Apidog'u kullanarak belgeyi _id aracılığıyla sorgularken, "Sorgu Koşulları"na girilmesi gereken JSON değeri şudur:

{    "_id": "6569a36afcf5ee79c08d2f94"  }

Ortak İşlemler

Ortak CRUD işlemleri için, görsel API işlemleri aracılığıyla destek. Herhangi bir JavaScript kodu yazmanıza gerek yok, sadece "İşlem Türü"nde eylemi belirtin, ardından "Koleksiyon Adı"nı belirtin ve ardından "Sorgu Koşulları"nda ilgili içeriği JSON olarak yazın.

Örneğin, yukarıda bahsedilen sorgu işlemi için, komutu girdikten ve "Konsol Günlüğü"nü etkinleştirdikten sonra, sorgulanan belgeyi konsolda görüntüleyebilirsiniz.

Apidog'da "Sorgu Koşulları"nda ilgili içeriği JSON olarak yazın

Gelişmiş Komutlar

Daha gelişmiş işlemlere ihtiyacınız varsa, doğrudan veritabanı komutlarını da çalıştırabilirsiniz. "İşlem Türü"nde, "Veritabanı Komutu Çalıştır"ı seçin ve ardından veritabanı komutunu JSON formatında girin. Veritabanı komutunun, db.collection.findOne() gibi yöntem çağrılarını değil, belirli bir formattaki JSON verilerini ifade ettiğini unutmayın.

Örneğin, kullanıcılar koleksiyonundaki belge sayısını sorgulamak için, count veritabanı komutunu kullanabilirsiniz:

{    "count": "users"}

Komutu girdikten sonra, sonucu konsolda görüntüleyebilirsiniz.

Veritabanı komutlarını çalıştırın

API'nizi Test Etme

API'nizi test etmek için Postman veya Apidog gibi araçları kullanabilirsiniz. Bu araçlar, uç noktalarınıza istek göndermenize ve yanıtları görmenize olanak tanır, bu da hata ayıklamayı ve her şeyin doğru çalıştığından emin olmayı kolaylaştırır.

Test İçin Apidog Kullanma

Apidog , API'ler oluşturma, test etme ve yönetme sürecini basitleştiren güçlü bir API geliştirme ve test aracıdır. FastAPI MongoDB uygulamanızı test etmek için Apidog'u şu şekilde kullanabilirsiniz:

  1. Yeni Bir Proje Oluşturun: Apidog İstemcisini açın ve Apidog'da yeni bir proje oluşturun.
Apidog'da Yeni Bir Proje Oluşturun

2 Uç Noktalar Ekle: Oluşturduğunuz uç noktaları (/items/, /items/{item_id}, vb.) projeye ekleyin.

Apidog'da Uç Noktalar Ekle

3. İstek Gönder: Uç noktalarınıza GET, POST, PUT ve DELETE istekleri göndermek ve yanıtları gözlemlemek için aracı kullanın.

Apidog'da İstek Gönder

4. Yanıtları Doğrulayın: Yanıtların beklenen çıktılarla eşleştiğinden emin olun ve herhangi bir sorunu düzeltmek için ayrıntılı hata mesajlarını kullanın.

Apidog'da Yanıtları Doğrulayın

Sonuç

Bu eğitimde, MongoDB ile bir FastAPI uygulamasının kurulumunun temellerini ele aldık. Öğeleri oluşturmanıza, almanıza, güncellemenize ve silmenize olanak tanıyan basit bir envanter API'si oluşturduk. FastAPI'nin hızı ve kullanım kolaylığı, MongoDB'nin esnekliği ve ölçeklenebilirliği ile birleştiğinde, onları sağlam API'ler oluşturmak için mükemmel bir eşleşme haline getirir.

Apidog gibi araçlardan yararlanarak, geliştirme ve test sürecini kolaylaştırabilir, API'lerinizin güvenilir ve performanslı olmasını sağlayabilirsiniz.

Öyleyse, ne bekliyorsunuz? FastAPI ve MongoDB'ye dalın ve bugün harika API'ler oluşturmaya başlayın!

Explore more

Cursor ile Deepseek R1'i Yerel Olarak Nasıl Kullanılır

Cursor ile Deepseek R1'i Yerel Olarak Nasıl Kullanılır

Yerel DeepSeek R1'i Cursor IDE ile kurun ve yapılandırın. Özel, uygun maliyetli AI kodlama yardımı için.

4 June 2025

Android'de Gemma 3n Nasıl Çalıştırılır?

Android'de Gemma 3n Nasıl Çalıştırılır?

Google AI Edge Gallery'den Gemma 3n'i Android'e kurup çalıştırmayı öğrenin.

3 June 2025

GitHub Eylemleri ile Claude Kodunu Nasıl Kullanılır

GitHub Eylemleri ile Claude Kodunu Nasıl Kullanılır

Claude Code'u GitHub Actions ile entegre edin: Kod incelemeleri, hata düzeltmeleri ve özellik uygulamaları. Kurulum, iş akışları ve geliştiriciler için ipuçları.

29 May 2025

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin