API-COBA / app.py
farwew's picture
Create app.py
0a542d1 verified
Raw
History Blame Contribute Delete
2.33 kB
from fastapi import FastAPI, HTTPException
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel
from typing import List, Optional
import uuid
app = FastAPI()
# Enable CORS
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # Untuk production, ganti dengan domain frontend Anda
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Model data mahasiswa
class Mahasiswa(BaseModel):
id: Optional[str] = None
nama: str
alamat: str
jenis_kelamin: str
prodi: str
# Database sementara (in-memory)
mahasiswa_db = []
# Endpoint untuk mendapatkan semua data mahasiswa
@app.get("/mahasiswa", response_model=List[Mahasiswa])
async def get_all_mahasiswa():
return mahasiswa_db
# Endpoint untuk mendapatkan mahasiswa berdasarkan ID
@app.get("/mahasiswa/{mahasiswa_id}", response_model=Mahasiswa)
async def get_mahasiswa(mahasiswa_id: str):
for mahasiswa in mahasiswa_db:
if mahasiswa.id == mahasiswa_id:
return mahasiswa
raise HTTPException(status_code=404, detail="Mahasiswa tidak ditemukan")
# Endpoint untuk menambahkan mahasiswa baru
@app.post("/mahasiswa", response_model=Mahasiswa)
async def create_mahasiswa(mahasiswa: Mahasiswa):
mahasiswa.id = str(uuid.uuid4())
mahasiswa_db.append(mahasiswa)
return mahasiswa
# Endpoint untuk mengupdate data mahasiswa
@app.put("/mahasiswa/{mahasiswa_id}", response_model=Mahasiswa)
async def update_mahasiswa(mahasiswa_id: str, updated_mahasiswa: Mahasiswa):
for i, mahasiswa in enumerate(mahasiswa_db):
if mahasiswa.id == mahasiswa_id:
updated_mahasiswa.id = mahasiswa_id
mahasiswa_db[i] = updated_mahasiswa
return updated_mahasiswa
raise HTTPException(status_code=404, detail="Mahasiswa tidak ditemukan")
# Endpoint untuk menghapus data mahasiswa
@app.delete("/mahasiswa/{mahasiswa_id}")
async def delete_mahasiswa(mahasiswa_id: str):
for i, mahasiswa in enumerate(mahasiswa_db):
if mahasiswa.id == mahasiswa_id:
del mahasiswa_db[i]
return {"message": "Mahasiswa berhasil dihapus"}
raise HTTPException(status_code=404, detail="Mahasiswa tidak ditemukan")
# Root endpoint
@app.get("/")
async def root():
return {"message": "API Pendaftaran Mahasiswa"}