Difference between revisions of "Dokumentasi API dengan Swagger"
Onnowpurbo (talk | contribs)  | 
				Onnowpurbo (talk | contribs)   | 
				||
| Line 1: | Line 1: | ||
| − | + | Oke Dzaq! Di bawah ini adalah panduan lengkap untuk membuat **modul dokumentasi API dengan Swagger** di **Ubuntu 24.04**. Kita akan pakai **FastAPI + Swagger UI** karena simpel dan cocok buat dokumentasi REST API secara otomatis.  | |
| − | + | ---  | |
| − | + | ## 🧩 1. **Install Python dan pip**  | |
| + | Ubuntu 24.04 biasanya udah include Python 3. Tapi kita pastikan dulu:  | ||
| − | + | ```bash  | |
| − | + | sudo apt update  | |
| − | + | sudo apt install python3 python3-pip -y  | |
| + | ```  | ||
| − | + | ---  | |
| + | ## 📦 2. **Buat Virtual Environment (opsional tapi disarankan)**  | ||
```bash  | ```bash  | ||
| − | + | sudo apt install python3-venv -y  | |
| + | python3 -m venv venv  | ||
| + | source venv/bin/activate  | ||
```  | ```  | ||
| − | |||
| − | + | ---  | |
| + | ## 🔧 3. **Install FastAPI dan Uvicorn**  | ||
```bash  | ```bash  | ||
| − | pip install   | + | pip install fastapi uvicorn  | 
```  | ```  | ||
| − | |||
| − | + | ---  | |
| − | |||
| − | |||
| + | ## 📁 4. **Buat File Project: `main.py`**  | ||
```python  | ```python  | ||
| − | + | # 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}  | ||
| + | ```  | ||
| − | + | ---  | |
| + | ## 🚀 5. **Jalankan API**  | ||
| − | ```  | + | ```bash  | 
| − | + | uvicorn main:app --reload  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
```  | ```  | ||
| − | |||
| − | + | ---  | |
| − | ##  | + | ## 🌐 6. **Akses Swagger UI**  | 
| − | + | Setelah dijalankan, buka browser dan kunjungi:  | |
| − | 1  | + | ```  | 
| + | http://127.0.0.1:8000/docs  | ||
| + | ```  | ||
| − | + | Swagger UI akan otomatis tampil dan mendokumentasikan semua endpoint.  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | ---  | |
| − | + | ## 📝 7. **Akses Redoc (Alternatif UI)**  | |
| − | |||
| − | |||
| − | + | ```  | |
| − | + | http://127.0.0.1:8000/redoc  | |
| + | ```  | ||
| − | + | ---  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | ## 🧾 8. **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`):  | |
| − | + | ```bash  | |
| − | + | pip install json2yaml  | |
| − | + | curl http://127.0.0.1:8000/openapi.json | json2yaml > openapi.yaml  | |
| − | + | ```  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| + | ---  | ||
| + | Kalau kamu mau integrasi Swagger manual (misalnya pakai Flask atau Express.js), tinggal bilang aja. Tapi buat sekarang, **FastAPI udah auto generate Swagger** tanpa ribet coding dokumentasi manual.  | ||
| − | + | Mau ku buatin template project-nya sekalian dalam folder ZIP? Atau mau lanjut integrasi auth/token dan semacamnya?  | |
| − | |||
| − | |||
| − | |||
Revision as of 19:17, 7 April 2025
Oke Dzaq! Di bawah ini adalah panduan lengkap untuk membuat **modul dokumentasi API dengan Swagger** di **Ubuntu 24.04**. Kita akan pakai **FastAPI + Swagger UI** karena simpel dan cocok buat dokumentasi REST API secara otomatis.
---
- 🧩 1. **Install Python dan pip**
 
Ubuntu 24.04 biasanya udah include Python 3. Tapi kita pastikan dulu:
```bash sudo apt update sudo apt install python3 python3-pip -y ```
---
- 📦 2. **Buat Virtual Environment (opsional tapi disarankan)**
 
```bash sudo apt install python3-venv -y python3 -m venv venv source venv/bin/activate ```
---
- 🔧 3. **Install FastAPI dan Uvicorn**
 
```bash pip install fastapi uvicorn ```
---
- 📁 4. **Buat File Project: `main.py`**
 
```python
- 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}
```
---
- 🚀 5. **Jalankan API**
 
```bash uvicorn main:app --reload ```
---
- 🌐 6. **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.
---
- 📝 7. **Akses Redoc (Alternatif UI)**
 
``` http://127.0.0.1:8000/redoc ```
---
- 🧾 8. **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`):
 
```bash pip install json2yaml curl http://127.0.0.1:8000/openapi.json | json2yaml > openapi.yaml ```
---
Kalau kamu mau integrasi Swagger manual (misalnya pakai Flask atau Express.js), tinggal bilang aja. Tapi buat sekarang, **FastAPI udah auto generate Swagger** tanpa ribet coding dokumentasi manual.
Mau ku buatin template project-nya sekalian dalam folder ZIP? Atau mau lanjut integrasi auth/token dan semacamnya?