Di dunia yang didorong oleh teknologi saat ini, membangun API yang cepat, efisien, dan terukur sangat penting bagi para pengembang. Salah satu kombinasi hebat yang semakin populer adalah menggunakan FastAPI dengan MongoDB. FastAPI, seperti namanya, adalah kerangka kerja web modern dan berkinerja tinggi untuk membangun API dengan Python 3.7+ yang cepat untuk dikodekan dan dijalankan. Sementara itu, MongoDB adalah basis data NoSQL yang dikenal karena skalabilitas dan fleksibilitasnya. Bersama-sama, mereka menyediakan solusi yang kuat untuk membuat API yang dapat menangani apa pun mulai dari proyek kecil hingga aplikasi skala besar.
Jadi, mengapa Anda harus mempertimbangkan duo ini untuk proyek Anda berikutnya? Mari selami lebih dalam!
Memulai: Menyiapkan Lingkungan Anda
Sebelum kita mulai membangun API kita, mari siapkan lingkungan kita. Anda memerlukan Python yang terinstal pada sistem Anda, bersama dengan pip untuk mengelola paket.

Langkah 1: Instal FastAPI dan Uvicorn
Pertama, mari instal FastAPI. Buka terminal Anda dan jalankan perintah berikut:
pip install fastapi
Selanjutnya, kita akan menginstal Uvicorn, implementasi server ASGI untuk Python, yang akan melayani aplikasi FastAPI kita:
pip install uvicorn
Langkah 2: Instal Motor
Motor adalah driver async untuk MongoDB yang bekerja dengan mulus dengan FastAPI. Untuk menginstalnya, jalankan:
pip install motor
Bagus! Sekarang kita memiliki semua yang kita butuhkan untuk mulai membuat kode.
Membuat Aplikasi FastAPI Pertama Anda
Sekarang, mari buat aplikasi FastAPI dasar dan hubungkan ke MongoDB.
Langkah 1: Inisialisasi Aplikasi FastAPI
Buat file Python baru (sebut saja main.py
) dan mulai dengan mengimpor FastAPI dan menginisialisasi aplikasi:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "Selamat datang di tutorial FastAPI dengan MongoDB!"}
Kode ini menyiapkan aplikasi FastAPI dasar dengan satu endpoint.

Langkah 2: Hubungkan ke MongoDB
Selanjutnya, mari hubungkan aplikasi FastAPI kita ke MongoDB menggunakan Motor. Kita akan membuat file baru bernama database.py
untuk mengelola koneksi basis data kita.
from motor.motor_asyncio import AsyncIOMotorClient
MONGO_DETAILS = "mongodb://localhost:27017"
client = AsyncIOMotorClient(MONGO_DETAILS)
database = client.mydatabase
Dalam contoh ini, kita terhubung ke instance MongoDB yang berjalan secara lokal. Pastikan MongoDB terinstal dan berjalan di sistem Anda.
Langkah 3: Definisikan Model Pydantic
Model Pydantic adalah cara yang bagus untuk mendefinisikan struktur data dan memastikan validasi data di FastAPI. Buat file models.py
:
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str
price: float
available: bool = True
Model ini mendefinisikan struktur item dalam inventaris kita.

Membuat Endpoint API
Dengan pengaturan dasar yang sudah selesai, mari buat beberapa endpoint API untuk berinteraksi dengan basis data MongoDB kita.
Langkah 1: Buat Koleksi Item
Pertama, kita membutuhkan koleksi di basis data MongoDB kita untuk menyimpan item. Di main.py
, mari buat endpoint untuk menambahkan item baru ke basis data:
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
Endpoint ini memungkinkan kita untuk membuat item baru dalam koleksi MongoDB. Perhatikan bagaimana kita mengubah ID yang dimasukkan menjadi string untuk keterbacaan yang lebih baik.
Langkah 2: Ambil Item
Selanjutnya, kita akan membuat endpoint untuk mengambil semua item dari basis data:
@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
Endpoint ini mengambil semua item dari koleksi items
dan mengubah ID mereka menjadi string.
Langkah 3: Ambil Satu Item
Untuk mengambil satu item berdasarkan ID-nya, kita akan menambahkan endpoint lain:
@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="Item tidak ditemukan")
Endpoint ini mengambil item berdasarkan ID-nya dan mengembalikannya, atau memunculkan kesalahan 404 jika item tidak ditemukan.
Langkah 4: Perbarui Item
Memperbarui item sangat mudah dengan FastAPI dan Motor. Tambahkan kode berikut untuk memperbarui item berdasarkan ID-nya:
@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="Item tidak ditemukan")
Endpoint ini memperbarui item berdasarkan ID-nya dan mengembalikan item yang diperbarui.
Langkah 5: Hapus Item
Terakhir, mari tambahkan endpoint untuk menghapus item berdasarkan ID-nya:
@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": "Item dihapus"}
raise HTTPException(status_code=404, detail="Item tidak ditemukan")
Endpoint ini menghapus item dan mengembalikan pesan keberhasilan atau kesalahan 404 jika item tidak ditemukan.
Cara Menghubungkan ke Basis Data MongoDB​ ke Apidog
- Klik "Operasi Prosesor" di API dan pilih "Operasi Basis Data".

2. Klik "Kelola Koneksi Basis Data" di kotak dropdown di bawah "Koneksi Basis Data", lalu klik tombol "Baru" di sudut kanan atas.

3. Pilih jenis basis data MongoDB, lalu isi informasi koneksi yang sesuai.

Operasikan Basis Data MongoDB​
MongoDB menyimpan data dalam format dokumen BSON. Untuk kenyamanan kebiasaan penggunaan sebagian besar pengguna, saat memodifikasi basis data MongoDB di Apidog, kirimkan file format JSON. Sistem akan secara otomatis memetakan setiap bidang ke jenis data BSON yang sesuai berdasarkan konten JSON yang sebenarnya.
Di antaranya, bidang _id
relatif khusus. Menurut spesifikasi MongoDB, setiap dokumen harus memiliki bidang _id
sebagai kunci utama, dan jenis data default dari bidang ini adalah ObjectId
daripada String
.
Jika Anda perlu mendeklarasikan bidang _id
dari jenis ObjectId
, Anda dapat menggunakan format string konvensional. Jika konten string sesuai dengan format ObjectId
, Apidog akan secara otomatis memetakannya ke jenis ObjectId
di BSON.
Asumsikan ada dokumen BSON seperti itu di MongoDB sekarang:
{ _id: ObjectId('6569a36afcf5ee79c08d2f94'), name: "Apidog"}
Jadi, saat menggunakan Apidog untuk menanyakan dokumen melalui _id
, nilai JSON yang perlu dimasukkan dalam "Kondisi Kueri" adalah:
{ "_id": "6569a36afcf5ee79c08d2f94" }
Operasi Umum​
Untuk operasi CRUD umum, dukungan melalui operasi API visual. Tidak perlu menulis kode JavaScript apa pun, cukup tentukan tindakan di "Jenis Operasi", lalu tentukan "Nama Koleksi", dan kemudian tulis konten yang sesuai dalam JSON di "Kondisi Kueri".
Misalnya, untuk operasi kueri yang disebutkan di atas, Anda dapat melihat dokumen yang dikueri di konsol setelah memasukkan perintah dan mengaktifkan "Log Konsol".

Perintah Tingkat Lanjut​
Jika Anda memerlukan operasi yang lebih canggih, Anda juga dapat langsung menjalankan perintah basis data. Di "Jenis Operasi", pilih "Jalankan Perintah Basis Data" lalu masukkan perintah basis data dalam format JSON. Perhatikan bahwa perintah basis data tidak mengacu pada panggilan metode seperti db.collection.findOne()
, tetapi data JSON dalam format tertentu.
Misalnya, untuk menanyakan jumlah dokumen dalam koleksi pengguna, Anda dapat menggunakan perintah basis data count
:
{ "count": "users"}
Setelah memasukkan perintah, Anda dapat melihat hasilnya di konsol.

Menguji API Anda
Untuk menguji API Anda, Anda dapat menggunakan alat seperti Postman atau Apidog. Alat-alat ini memungkinkan Anda untuk mengirim permintaan ke endpoint Anda dan melihat respons, sehingga lebih mudah untuk melakukan debug dan memastikan semuanya berfungsi dengan benar.
Menggunakan Apidog untuk Pengujian
Apidog adalah alat pengembangan dan pengujian API yang kuat yang menyederhanakan proses pembuatan, pengujian, dan pengelolaan API. Berikut cara Anda dapat menggunakan Apidog untuk menguji aplikasi FastAPI MongoDB Anda:
- Buat Proyek Baru: Buka Klien Apidog dan Buat proyek baru di Apidog.

2 Tambahkan Endpoint: Tambahkan endpoint yang telah Anda buat (/items/
, /items/{item_id}
, dll.) ke proyek.

3. Kirim Permintaan: Gunakan alat ini untuk mengirim permintaan GET, POST, PUT, dan DELETE ke endpoint Anda dan amati respons.

4. Validasi Respons: Pastikan bahwa respons sesuai dengan output yang diharapkan, dan gunakan pesan kesalahan terperinci untuk memperbaiki masalah apa pun.

Kesimpulan
Dalam tutorial ini, kita telah membahas dasar-dasar pengaturan aplikasi FastAPI dengan MongoDB. Kita membuat API inventaris sederhana yang memungkinkan Anda untuk membuat, mengambil, memperbarui, dan menghapus item. Kecepatan dan kemudahan penggunaan FastAPI, dikombinasikan dengan fleksibilitas dan skalabilitas MongoDB, menjadikannya pasangan yang sempurna untuk membangun API yang kuat.
Dengan memanfaatkan alat seperti Apidog, Anda dapat merampingkan proses pengembangan dan pengujian, memastikan API Anda andal dan berkinerja tinggi.
Jadi, tunggu apa lagi? Selami FastAPI dan MongoDB, dan mulailah membangun API yang luar biasa hari ini!