


Bahagian Membina API Todo dengan FastAPI: Panduan Langkah demi Langkah
Membina API Todo dengan FastAPI: Panduan Langkah demi Langkah
Kod boleh didapati di sini: GitHub - jamesbmour/blog_tutorials:
I. Pengenalan
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.
Perkara yang Kami Akan Liput:
- Mereka Model Data Todo
- Melaksanakan Operasi CRUD
- Mencipta Titik Akhir API
- Menambah Pengesahan Input dan Pengendalian Ralat
- Menguji API
- Kod Pemfaktoran Semula dan Penyusunan
II. Mereka bentuk Model Data Todo
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.
A. Mentakrifkan Skema Todo
Kami akan mencipta dua model menggunakan Pydantic:
- TodoCreate: Untuk memasukkan data semasa membuat atau mengemas kini todo.
- Todo: Untuk item todo yang lengkap, termasuk medan seperti id dan created_at.
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
B. Menjelaskan Bidang
- id: Pengecam unik untuk setiap todo.
- tajuk: Kandungan utama todo.
- penerangan: Butiran tambahan (pilihan).
- selesai: Status Boolean todo (sama ada ia selesai atau tidak).
- created_at: Cap masa yang menunjukkan masa todo dibuat.
III. Mencipta Operasi CRUD untuk Todos
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.
A. Menyediakan Pangkalan Data Dalam Memori
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(), }, ]
B. Melaksanakan Fungsi Pembantu
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
IV. Melaksanakan Titik Akhir API
A. Mencipta Todo Baharu
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
B. Mendapatkan Semua Todos
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
C. Mendapatkan Todo Tunggal
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
D. Mengemas kini 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)
E. Memadam 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"}
V. Menambah Pengesahan Input dan Pengendalian Ralat
A. Pengesahan Input dengan Pydantic
FastAPI secara automatik mengesahkan data input terhadap model Pydantic yang kami takrifkan. Ini memastikan bahawa data memenuhi skema jangkaan kami sebelum ia diproses.
B. Pengendalian Ralat Tersuai
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}, )
VI. Menguji API
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.
Contoh Pengujian
- Buat Todo: Uji titik akhir POST dengan membuat todo baharu.
- Dapatkan Todos: Gunakan titik akhir GET untuk mengambil semua todos atau yang tertentu melalui id.
- Kemas kini dan Padam: Uji titik akhir PUT dan DELETE untuk mengemas kini atau mengalih keluar todo.
VII. Pemfaktoran Semula dan Kod Penyusunan
Apabila aplikasi berkembang, adalah penting untuk memastikan kod itu teratur. Berikut adalah beberapa petua:
A. Memindahkan Model ke Fail Berasingan
Anda boleh mengalihkan model Pydantic anda ke fail models.py untuk memastikan fail aplikasi utama anda bersih.
B. Mencipta Penghala untuk Titik Akhir Todo
Pertimbangkan untuk membuat penghala berasingan untuk titik akhir yang berkaitan dengan todo, terutamanya apabila API anda berkembang.
VIII. Langkah Seterusnya
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.
Cadangan Penambahbaikan:
- Tambahkan penapisan dan penomboran pada titik akhir GET.
- Laksanakan pengesahan pengguna untuk mengurus tugas peribadi.
IX. Kesimpulan
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Penyelesaian kepada Isu Kebenaran Semasa Melihat Versi Python di Terminal Linux Apabila anda cuba melihat versi Python di Terminal Linux, masukkan Python ...

Cara mengelakkan dikesan semasa menggunakan fiddlerevery di mana untuk bacaan lelaki-dalam-pertengahan apabila anda menggunakan fiddlerevery di mana ...

Apabila menggunakan Perpustakaan Pandas Python, bagaimana untuk menyalin seluruh lajur antara dua data data dengan struktur yang berbeza adalah masalah biasa. Katakan kita mempunyai dua DAT ...

Bagaimanakah Uvicorn terus mendengar permintaan HTTP? Uvicorn adalah pelayan web ringan berdasarkan ASGI. Salah satu fungsi terasnya ialah mendengar permintaan HTTP dan teruskan ...

Fastapi ...

Menggunakan Python di Terminal Linux ...

Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam masa 10 jam? Sekiranya anda hanya mempunyai 10 jam untuk mengajar pemula komputer beberapa pengetahuan pengaturcaraan, apa yang akan anda pilih untuk mengajar ...

Memahami Strategi Anti-Crawling of Investing.com Ramai orang sering cuba merangkak data berita dari Investing.com (https://cn.investing.com/news/latest-news) ...
