Kem Intensif Pembangunan Bahagian Belakang FastAPI · Pelajaran

Menyuntik Kebergantungan Umum

Laksanakan kebergantungan umum untuk sesi pangkalan data, pengesahan pengguna atau konfigurasi dikongsi merentas titik akhir.

Pelajaran 2 daripada 411 langkah

Menyuntik Kebergantungan Umum ialah pelajaran Kem Intensif Pembangunan Bahagian Belakang FastAPI percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Kem Intensif Pembangunan Bahagian Belakang FastAPI, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Kem Intensif Pembangunan Bahagian Belakang FastAPI merangkumi sejumlah 4 pelajaran.

Pengenalan kepada Kebergantungan Biasa

Dalam FastAPI, kebergantungan sangat berkuasa. Kebergantungan membantu anda berkongsi logik, mengurus sumber dan memastikan kod anda kemas.

Kebergantungan biasa ialah fungsi atau kelas yang anda gunakan semula merentasi banyak titik akhir API. Ini mengelakkan kod berulang dan menjadikan aplikasi anda lebih mudah diselenggara serta diuji.

Anggaplah ia sebagai blok binaan yang boleh digunakan semula untuk API anda.

Menyuntik Konfigurasi Dikongsi

Banyak aplikasi memerlukan tetapan global, seperti kunci API atau URL pangkalan data. Dengan menyuntik konfigurasi, anda boleh mengakses tetapan ini dengan mudah dalam mana-mana titik akhir tanpa menggunakan pemboleh ubah global.

Ini memastikan konfigurasi anda fleksibel dan mudah dikemas kini.

Demo: Kebergantungan Konfigurasi Mudah

Mari kita cipta kebergantungan yang mengembalikan kamus tetapan mudah. Dalam aplikasi sebenar, kebergantungan ini mungkin memuatkan tetapan daripada pemboleh ubah persekitaran menggunakan BaseSettings Pydantic.

from fastapi import FastAPI, Depends

app = FastAPI()

# This function acts as our dependency
def get_settings():
    return {"app_name": "CoddyKit API", "version": "1.0.0"}

@app.get("/info")
def read_info(settings: dict = Depends(get_settings)):
    return {"message": f"Welcome to {settings['app_name']} v{settings['version']}"}

# To run this:
# 1. Save as main.py
# 2. Run 'uvicorn main:app --reload'
# 3. Go to http://127.0.0.1:8000/info

Pengurusan Sesi Pangkalan Data

Tugas biasa bagi API bahagian belakang ialah berinteraksi dengan pangkalan data. Setiap permintaan biasanya memerlukan "sesi" atau sambungan pangkalan data uniknya sendiri.

Mengurus sesi ini secara manual dalam setiap titik akhir adalah leceh dan mudah menyebabkan ralat. Kebergantungan boleh mengendalikan penciptaan dan penutupannya secara automatik untuk anda.

Demo: Kebergantungan Sesi Pangkalan Data

Berikut ialah contoh ringkas kebergantungan get_db. Dalam aplikasi sebenar, kebergantungan ini akan menyambung kepada pangkalan data menggunakan ORM seperti SQLAlchemy.

Kata kunci yield amat penting di sini!

from fastapi import FastAPI, Depends
from typing import Generator

app = FastAPI()

# This simulates a database session.
# In a real app, this would be a SQLAlchemy session.
class MockDBSession:
    def __init__(self):
        print("Opening DB session...")
    def close(self):
        print("Closing DB session...")
    def query(self, item_id: int):
        return {"id": item_id, "name": f"Item {item_id}"}

def get_db() -> Generator:
    db = MockDBSession()
    try:
        yield db  # This is where the endpoint gets the 'db' object
    finally:
        db.close() # This runs after the request is finished

@app.get("/items/{item_id}")
def read_item(item_id: int, db: MockDBSession = Depends(get_db)):
    # The 'db' object is provided by the dependency
    return db.query(item_id)

# To run this:
# 1. Save as main.py
# 2. Run 'uvicorn main:app --reload'
# 3. Go to http://127.0.0.1:8000/items/1

Keajaiban `yield`

Kata kunci yield dalam fungsi get_db kita amat penting.

  • Kod sebelum yield dijalankan sebelum fungsi titik akhir. Ini digunakan untuk persediaan (contohnya, membuka sambungan pangkalan data).
  • Kod selepas yield dijalankan selepas fungsi titik akhir dan responsnya. Ini digunakan untuk pembersihan (contohnya, menutup sambungan).

Corak ini dipanggil "kebergantungan dengan yield" atau "kebergantungan pengurus konteks".

Menyuntik Pengesahan User

Kebanyakan API perlu mengetahui pihak yang membuat permintaan. Kebergantungan pengesahan mengekstrak maklumat user daripada pengepala permintaan (seperti kunci API atau token JWT) dan menyediakannya kepada titik akhir anda.

Ini memastikan logik pengesahan berasingan dan boleh digunakan semula merentasi banyak laluan.

Demo: Kebergantungan User Semasa

Berikut ialah kebergantungan asas yang mensimulasikan proses mendapatkan user semasa. Dalam aplikasi sebenar, proses ini akan melibatkan pengesahan token daripada pengepala permintaan.

Jika user belum disahkan, kebergantungan ini boleh mencetuskan HTTPException untuk menghentikan permintaan lebih awal.

from fastapi import FastAPI, Depends, HTTPException, status
from typing import Optional

app = FastAPI()

class User:
    def __init__(self, username: str, email: Optional[str] = None):
        self.username = username
        self.email = email

# This dependency simulates fetching the current user
def get_current_user(token: str = "some_valid_token") -> User:
    # In a real app, 'token' would come from request headers
    # and be validated against a database or auth service.
    if token != "some_valid_token":
        raise HTTPException(
            status_code=status.HTTP_401_UNAUTHORIZED,
            detail="Invalid authentication credentials",
            headers={"WWW-Authenticate": "Bearer"},
        )
    return User(username="jane_doe", email="jane@example.com")

@app.get("/me")
def read_current_user(current_user: User = Depends(get_current_user)):
    return {"username": current_user.username, "email": current_user.email}

# To run this:
# 1. Save as main.py
# 2. Run 'uvicorn main:app --reload'
# 3. Go to http://127.0.0.1:8000/me

Merangkaikan & Menggunakan Semula Kebergantungan

Kebergantungan juga boleh bergantung pada kebergantungan lain! Ini membolehkan logik kompleks dipecahkan kepada bahagian yang lebih kecil dan mudah diurus.

Contohnya, kebergantungan "user pentadbir semasa" mungkin terlebih dahulu bergantung pada "user semasa", kemudian menyemak sama ada user tersebut mempunyai keistimewaan pentadbir.

Kemodulan ini merupakan kekuatan utama suntikan kebergantungan FastAPI.

Semak Pemahaman Anda

Pertimbangkan kebergantungan FastAPI berikut:

from fastapi import HTTPException, status

def check_api_key(api_key: str = "SECRET_KEY"):
    if api_key != "VALID_API_KEY":
        raise HTTPException(
            status_code=status.HTTP_403_FORBIDDEN,
            detail="Invalid API Key"
        )
    return True

Jika titik akhir menggunakan Depends(check_api_key) dan permintaan diterima tanpa API_KEY yang betul, apakah yang akan berlaku?

Kebergantungan Lazim: Intipati Utama

Kita telah meneroka cara menyuntik kebergantungan lazim dalam FastAPI:

  • Konfigurasi: Kongsi tetapan aplikasi dengan mudah merentasi titik akhir.
  • Sesi Pangkalan Data: Urus sambungan pangkalan data bagi setiap permintaan menggunakan yield untuk persediaan dan pembersihan yang betul.
  • Pengesahan User: Pusatkan logik untuk mengenal pasti dan mengesahkan user.

Kebergantungan menggalakkan kod yang kemas, boleh digunakan semula dan mudah diuji dengan mengasingkan kebimbangan merentas komponen daripada logik titik akhir utama.

Percuma untuk bermula

Pelajari Kem Intensif Pembangunan Bahagian Belakang FastAPI dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
21
Pelajaran
84

Soalan Lazim

Adakah pelajaran “Menyuntik Kebergantungan Umum” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Kem Intensif Pembangunan Bahagian Belakang FastAPI, termasuk “Menyuntik Kebergantungan Umum”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Kem Intensif Pembangunan Bahagian Belakang FastAPI merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Menyuntik Kebergantungan Umum”?

Laksanakan kebergantungan umum untuk sesi pangkalan data, pengesahan pengguna atau konfigurasi dikongsi merentas titik akhir. Anda berlatih Kem Intensif Pembangunan Bahagian Belakang FastAPI menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Kem Intensif Pembangunan Bahagian Belakang FastAPI?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Kem Intensif Pembangunan Bahagian Belakang FastAPI di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.

Berapa lamakah pelajaran “Menyuntik Kebergantungan Umum” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Kem Intensif Pembangunan Bahagian Belakang FastAPI ini?

Ya. Setiap pelajaran Kem Intensif Pembangunan Bahagian Belakang FastAPI menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Memahami Kebergantungan dalam FastAPI
  2. Menyuntik Kebergantungan Umum
  3. Kebergantungan Berasaskan Kelas dan Yield
  4. Kebergantungan Global dan Subkebergantungan
← Kembali ke Kem Intensif Pembangunan Bahagian Belakang FastAPI