Difference between revisions of "Dokumentasi API dengan Swagger"
		
		
		
		
		
		Jump to navigation
		Jump to search
		
				
		
		
	
Onnowpurbo (talk | contribs)  | 
				Onnowpurbo (talk | contribs)   | 
				||
| Line 1: | Line 1: | ||
| − | + | Kita akan pakai '''FastAPI + Swagger UI''' karena simpel dan cocok buat dokumentasi REST API secara otomatis.  | |
| − | + | ==Install Python dan pip==  | |
| − | |||
| − | |||
Ubuntu 24.04 biasanya udah include Python 3. Tapi kita pastikan dulu:  | Ubuntu 24.04 biasanya udah include Python 3. Tapi kita pastikan dulu:  | ||
| − | + |  sudo apt update  | |
| − | sudo apt update  | + |  sudo apt install python3 python3-pip -y  | 
| − | sudo apt install python3 python3-pip -y  | ||
| − | |||
| − | + | ==Buat Virtual Environment (opsional tapi disarankan)==  | |
| − | + |  sudo apt install python3-venv -y  | |
| + |  python3 -m venv venv  | ||
| + |  source venv/bin/activate  | ||
| − | + | ==Install FastAPI dan Uvicorn==  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | + |  pip install fastapi uvicorn  | |
| − | + | ==Buat File Project: `main.py`==  | |
| − | + |  # main.py  | |
| − | + | ||
| − | + |  from fastapi import FastAPI  | |
| + |  from pydantic import BaseModel  | ||
| + | |||
| + |  app = FastAPI(title="Swagger API - Metro TV", version="1.0")  | ||
| + | |||
| + |  # Contoh Model  | ||
| + |  class Item(BaseModel):  | ||
| + |      name: str  | ||
| + |      price: float  | ||
| + |      is_offer: bool = None   | ||
| + | |||
| + |  # Route dasar  | ||
| + |  @app.get("/")  | ||
| + |  def read_root():  | ||
| + |      return {"message": "Hello, Metro TV"}  | ||
| + | |||
| + |  # Route dengan parameter  | ||
| + |  @app.get("/items/{item_id}")  | ||
| + |  def read_item(item_id: int, q: str = None):  | ||
| + |      return {"item_id": item_id, "q": q}  | ||
| + | |||
| + |  # POST endpoint  | ||
| + |  @app.post("/items/")  | ||
| + |  def create_item(item: Item):  | ||
| + |      return {"item": item}  | ||
| − | + | ==Jalankan API==  | |
| − | + |  uvicorn main:app --reload  | |
| − | + | ==Akses Swagger UI==  | |
| − | |||
| − | + | Setelah dijalankan, buka browser dan kunjungi:  | |
| − | |||
| − | + |  http://127.0.0.1:8000/docs  | |
| − | + | Swagger UI akan otomatis tampil dan mendokumentasikan semua endpoint.  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | ==Akses Redoc (Alternatif UI)==  | |
| − | |||
| − | |||
| − | |||
| − | + |  http://127.0.0.1:8000/redoc  | |
| − | |||
| − | |||
| − | |||
| − | + | ==Export Dokumentasi ke JSON atau YAML==  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | Kalau kamu butuh file dokumentasi:  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | '''JSON:'''  | |
| − | |||
| − | |||
| − | + |  http://127.0.0.1:8000/openapi.json  | |
| − | + | '''YAML (butuh converter, contoh pakai `json2yaml`):'''  | |
| − | + |  pip install json2yaml  | |
| + |  curl http://127.0.0.1:8000/openapi.json | json2yaml > openapi.yaml  | ||
| − | + | ==Catatan:==  | |
| − | |||
| − | |||
| − | |||
| − | + | * Kita dapat integrasi Swagger manual (misalnya pakai Flask atau Express.js).  | |
| − | + | * Saat ini, '''FastAPI sudah auto generate Swagger''' tanpa ribet coding dokumentasi manual.  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | ==Pranala Menarik==  | |
| − | + | * [[Web Programming]]  | |
Latest revision as of 08:09, 8 April 2025
Kita akan pakai FastAPI + Swagger UI karena simpel dan cocok buat dokumentasi REST API secara otomatis.
Install Python dan pip
Ubuntu 24.04 biasanya udah include Python 3. Tapi kita pastikan dulu:
sudo apt update sudo apt install python3 python3-pip -y
Buat Virtual Environment (opsional tapi disarankan)
sudo apt install python3-venv -y python3 -m venv venv source venv/bin/activate
Install FastAPI dan Uvicorn
pip install fastapi uvicorn
Buat File Project: `main.py`
# main.py
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI(title="Swagger API - Metro TV", version="1.0")
# Contoh Model
class Item(BaseModel):
    name: str
    price: float
    is_offer: bool = None 
# Route dasar
@app.get("/")
def read_root():
    return {"message": "Hello, Metro TV"}
# Route dengan parameter
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}
# POST endpoint
@app.post("/items/")
def create_item(item: Item):
    return {"item": item}
Jalankan API
uvicorn main:app --reload
Akses Swagger UI
Setelah dijalankan, buka browser dan kunjungi:
http://127.0.0.1:8000/docs
Swagger UI akan otomatis tampil dan mendokumentasikan semua endpoint.
Akses Redoc (Alternatif UI)
http://127.0.0.1:8000/redoc
Export Dokumentasi ke JSON atau YAML
Kalau kamu butuh file dokumentasi:
JSON:
http://127.0.0.1:8000/openapi.json
YAML (butuh converter, contoh pakai `json2yaml`):
pip install json2yaml curl http://127.0.0.1:8000/openapi.json | json2yaml > openapi.yaml
Catatan:
- Kita dapat integrasi Swagger manual (misalnya pakai Flask atau Express.js).
 - Saat ini, FastAPI sudah auto generate Swagger tanpa ribet coding dokumentasi manual.