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.

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.

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
- 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.

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

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.

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.

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:
- Yeni Bir Proje Oluşturun: Apidog İstemcisini açın ve Apidog'da yeni bir proje oluşturun.

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

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.

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.

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!