Kod boleh didapati di sini: GitHub - jamesbmour/blog_tutorials:
Dalam siaran sebelumnya, kami memperkenalkan FastAPI dan menyediakan struktur projek asas. Sekarang, kami akan melangkah lebih jauh dengan membina API Todo yang berfungsi. Pada penghujung tutorial ini, anda akan mempunyai bahagian belakang yang berfungsi yang boleh membuat, membaca, mengemas kini dan memadam item tugasan.
Untuk mengurus tugasan, kita mesti menentukan model data yang mewakili item tugasan. FastAPI menggunakan model Pydantic untuk mengesahkan dan menghuraikan data, jadi kami akan memanfaatkannya di sini.
Kami akan mencipta dua model menggunakan Pydantic:
from pydantic import BaseModel from typing import Optional from datetime import datetime class TodoCreate(BaseModel): title: str description: Optional[str] = None completed: bool = False class Todo(BaseModel): id: str title: str description: Optional[str] = None completed: bool created_at: datetime
CRUD bermaksud Cipta, Baca, Kemas Kini dan Padam—empat operasi asas untuk mengurus data. Kami akan melaksanakan operasi ini menggunakan pangkalan data dalam memori (senarai ringkas) untuk tutorial ini.
Kami akan menggunakan senarai untuk menyimpan tugasan kami. Untuk memudahkan, kami juga akan menambah beberapa contoh todos.
from uuid import uuid4 from datetime import datetime todos = [ { "id": str(uuid4()), "title": "Learn FastAPI", "description": "Go through the official FastAPI documentation and tutorials.", "completed": False, "created_at": datetime.now(), }, { "id": str(uuid4()), "title": "Build a Todo API", "description": "Create a REST API for managing todo items using FastAPI.", "completed": False, "created_at": datetime.now(), }, { "id": str(uuid4()), "title": "Write blog post", "description": "Draft a blog post about creating a Todo API with FastAPI.", "completed": False, "created_at": datetime.now(), }, ]
Kami akan melaksanakan fungsi pembantu mudah untuk mencari todo mengikut idnya.
def get_todo_by_id(todo_id: str): for todo in todos: if todo["id"] == todo_id: return todo return None
Titik akhir POST membolehkan pengguna membuat item tugasan baharu.
@app.post("/todos/", response_model=Todo) def create_todo(todo: TodoCreate): new_todo = Todo( id=str(uuid4()), title=todo.title, description=todo.description, completed=todo.completed, created_at=datetime.now() ) todos.append(new_todo.dict()) return new_todo
Titik akhir GET mendapatkan semula semua tugasan daripada pangkalan data dalam memori kami.
@app.get("/todos/", response_model=List[Todo]) def get_all_todos(): return todos
Titik akhir GET membenarkan mendapatkan semula satu tugasan mengikut idnya.
@app.get("/todos/{todo_id}", response_model=Todo) def get_todo(todo_id: str): todo = get_todo_by_id(todo_id) if not todo: raise HTTPException(status_code=404, detail="Todo not found") return todo
Titik akhir PUT membolehkan pengguna mengemas kini todo sedia ada.
@app.put("/todos/{todo_id}", response_model=Todo) def update_todo(todo_id: str, todo_data: TodoCreate): todo = get_todo_by_id(todo_id) if not todo: raise HTTPException(status_code=404, detail="Todo not found") todo["title"] = todo_data.title todo["description"] = todo_data.description todo["completed"] = todo_data.completed return Todo(**todo)
Titik akhir DELETE membolehkan pengguna memadamkan todo mengikut idnya.
@app.delete("/todos/{todo_id}") def delete_todo(todo_id: str): todo = get_todo_by_id(todo_id) if not todo: raise HTTPException(status_code=404, detail="Todo not found") todos.remove(todo) return {"detail": "Todo deleted successfully"}
FastAPI secara automatik mengesahkan data input terhadap model Pydantic yang kami takrifkan. Ini memastikan bahawa data memenuhi skema jangkaan kami sebelum ia diproses.
Kami boleh menyesuaikan respons ralat dengan menambahkan pengendali pengecualian.
@app.exception_handler(HTTPException) def http_exception_handler(request, exc: HTTPException): return JSONResponse( status_code=exc.status_code, content={"detail": exc.detail}, )
FastAPI disertakan dengan dokumentasi UI Swagger interaktif, menjadikannya mudah untuk menguji titik akhir API anda. Hanya jalankan aplikasi dan navigasi ke /docs dalam penyemak imbas anda.
Apabila aplikasi berkembang, adalah penting untuk memastikan kod itu teratur. Berikut adalah beberapa petua:
Anda boleh mengalihkan model Pydantic anda ke fail models.py untuk memastikan fail aplikasi utama anda bersih.
Pertimbangkan untuk membuat penghala berasingan untuk titik akhir yang berkaitan dengan todo, terutamanya apabila API anda berkembang.
Dalam siaran seterusnya, kami akan menyepadukan pangkalan data sebenar (seperti SQLite atau PostgreSQL) ke dalam aplikasi FastAPI kami. Kami juga akan melihat ke dalam pengesahan pengguna dan ciri yang lebih maju.
Dalam tutorial ini, kami membina API Todo mudah menggunakan FastAPI. Kami bermula dengan mereka bentuk model data, melaksanakan operasi CRUD dan mencipta titik akhir untuk mengurus tugasan. Kami juga menyentuh tentang pengesahan input, pengendalian ralat dan ujian. Dengan asas ini, anda boleh memanjangkan API lagi atau menyepadukannya dengan bahagian hadapan untuk mencipta aplikasi sepenuhnya.
Jika anda ingin menyokong penulisan saya atau belikan saya bir:
https://buymeacoffee.com/bmours
Atas ialah kandungan terperinci Bahagian Membina API Todo dengan FastAPI: Panduan Langkah demi Langkah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!