Difference between revisions of "Dokumentasi API dengan Swagger"

From OnnoWiki
Jump to navigation Jump to search
 
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.
+
Kita akan pakai '''FastAPI + Swagger UI''' karena simpel dan cocok buat dokumentasi REST API secara otomatis.
  
−
---
+
==Install Python dan pip==
−
 
 
−
## 🧩 1. **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:
  
−
```bash
+
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)==
  
−
## 📦 2. **Buat Virtual Environment (opsional tapi disarankan)**
+
sudo apt install python3-venv -y
 +
python3 -m venv venv
 +
source venv/bin/activate
  
−
```bash
+
==Install FastAPI dan Uvicorn==
−
sudo apt install python3-venv -y
 
−
python3 -m venv venv
 
−
source venv/bin/activate
 
−
```
 
  
−
---
+
pip install fastapi uvicorn
  
−
## 🔧 3. **Install FastAPI dan Uvicorn**
+
==Buat File Project: `main.py`==
  
−
```bash
+
# main.py
−
pip install fastapi uvicorn
+
−
```
+
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==
  
−
## 📁 4. **Buat File Project: `main.py`**
+
uvicorn main:app --reload
  
−
```python
+
==Akses Swagger UI==
−
# main.py
 
  
−
from fastapi import FastAPI
+
Setelah dijalankan, buka browser dan kunjungi:
−
from pydantic import BaseModel
 
  
−
app = FastAPI(title="Swagger API - Metro TV", version="1.0")
+
http://127.0.0.1:8000/docs
  
−
# Contoh Model
+
Swagger UI akan otomatis tampil dan mendokumentasikan semua endpoint.
−
class Item(BaseModel):
 
−
    name: str
 
−
    price: float
 
−
    is_offer: bool = None
 
  
−
# Route dasar
+
==Akses Redoc (Alternatif UI)==
−
@app.get("/")
 
−
def read_root():
 
−
    return {"message": "Hello, Metro TV"}
 
  
−
# Route dengan parameter
+
http://127.0.0.1:8000/redoc
−
@app.get("/items/{item_id}")
 
−
def read_item(item_id: int, q: str = None):
 
−
    return {"item_id": item_id, "q": q}
 
  
−
# POST endpoint
+
==Export Dokumentasi ke JSON atau YAML==
−
@app.post("/items/")
 
−
def create_item(item: Item):
 
−
    return {"item": item}
 
−
```
 
  
−
---
+
Kalau kamu butuh file dokumentasi:
−
 
 
−
## 🚀 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)**
 
  
−
```
+
'''JSON:'''
−
http://127.0.0.1:8000/redoc
 
−
```
 
  
−
---
+
http://127.0.0.1:8000/openapi.json
  
−
## 🧾 8. **Export Dokumentasi ke JSON atau YAML**
+
'''YAML (butuh converter, contoh pakai `json2yaml`):'''
  
−
Kalau kamu butuh file dokumentasi:
+
pip install json2yaml
 +
curl http://127.0.0.1:8000/openapi.json | json2yaml > openapi.yaml
  
−
### 🔹 JSON:
+
==Catatan:==
−
```
 
−
http://127.0.0.1:8000/openapi.json
 
−
```
 
  
−
### 🔹 YAML (butuh converter, contoh pakai `json2yaml`):
+
* Kita dapat integrasi Swagger manual (misalnya pakai Flask atau Express.js).
−
```bash
+
* Saat ini, '''FastAPI sudah auto generate Swagger''' tanpa ribet coding dokumentasi manual.
−
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.
+
==Pranala Menarik==
  
−
Mau ku buatin template project-nya sekalian dalam folder ZIP? Atau mau lanjut integrasi auth/token dan semacamnya?
+
* [[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.


Pranala Menarik