Dokumentasi API dengan Swagger: Difference between revisions
From OnnoCenterWiki
Jump to navigationJump to search
No edit summary |
No edit summary |
||
| 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 01: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.