विषय पर बढ़ें

फास्ट एपीआई

Fmar को Fके साथ जोड़ना बहुत सरल है।

एक तरफ से कनेक्ट करने के लिए डेटाबेस में स्टार्टअप, आप सभी की जरूरत है बदलने के लिए है dनमूना के साथ नमूना

यहां आप एक बहुत ही सरल उदाहरण एप्लिकेशन कोड पा सकते हैं।

!!! चेतावनी यह उदाहरण मानता है कि आपने पहले से ही एक डेटाबेस बनाया है। यदि ऐसा नहीं है, तो डेटाबेस इनिशियलाइज़ेशन अनुभाग पर जाएं।

!!!निम्नलिखित उदाहरण (all parts) एक फ़ाइल में रखा जाना चाहिए।

1
यह स्पष्टता के लिए उपखंडों में विभाजित है।

!!!नोट यदि आप Fmar अनुरोधों और प्रतिक्रियाओं में नमूना का उपयोग करने के तरीके के बारे में अधिक जानना चाहते हैं, तो प्रतिक्रियाओं और अनुरोधों के प्रलेखन की जांच करें।

त्वरित शुरुआत

!!!ध्यान दें कि आप गिथुब रिपॉजिटरी में उदाहरणों के तहत पूर्ण त्वरित लॉन्च स्क्रिप्ट पा सकते हैं।

आयात और आरंभीकरण

प्रारंभ और बंद कार्यक्रमों को परिभाषित करने और अनुप्रयोगों में उनका उपयोग करने के लिए फास्ट एपीआई जीवन चक्र का उपयोग करें।

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
टाइपिंग आयात से सूची, वैकल्पिक

आयात डेटाबेस
आयात sqlalchआयात करें
से आयात

आयात करें

से lib आयात asyncप्रबंधक
से आयात


@ asyncप्रबंधक
Ac def जीवनकाल (_: FastAPI) - > AcIter[कोई नहीं]:
    यदि कॉन्फ़िगर नहीं किया गया है। Database.is_connected:
        प्रतीक्षा करें con.as()

    उपज

    यदि config.Database.is_connected:
        प्रतीक्षा करें con..dis()


base_ormar_config = ormar। marConfig (
    मेटाडेटा = वर्गधर्मी। मेटाडेटा (),
    डेटाबेस = डेटाबेस। डेटाबेस ("sqlite: //test.db"),
)
ऐप = F(lifespan = lifespan) (base_ormar_config))

!!!जानकारी आप फास्टापी प्रलेखन में एक डेटाबेस से कनेक्ट करने के बारे में अधिक पढ़ सकते हैं

मॉडल परिभाषा

उपयुक्त क्षेत्रों के साथ ormar नमूना परिभाषित करें।

इन मॉडलों का उपयोग dनमूना के बजाय किया जाएगा।

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
आधार _ ormar _ config = marConfig (
    मेटाडेटा = मेटाडेटा
    डेटाबेस = डेटाबेस
)


कक्षा श्रेणी (ormar. Model):
    ormar_config = base_ormar_config (टेबलनाम = "श्रेणियाँ")

    आईडी: int = ormar। पूर्णांक (primary_key = True)
    नाम: str = ormar। स्ट्रिंग (max_length = 100)


कक्षा Item (ormar. Model):
    ormar _ config = आधार _ ormar _ config कॉपी ()

    आईडी: int = ormar। पूर्णांक (primary_key = True)
    नाम: str = ormar। स्ट्रिंग (max_length = 100)
    श्रेणी: वैकल्पिक [श्रेणी] = ormar। विदेशी (श्रेणी, अशक्त = सच)

!!!टिप आप मॉडल अनुभाग में एक नमूना को परिभाषित करने के बारे में अधिक पढ़ सकते हैं।

Fसमापन बिंदु परिभाषा

आपके लिए आवश्यक समापन बिंदुओं को परिभाषित करें, यह देखते हुए कि ormar नमूना का उपयोग प्रतिक्रिया \ _ मॉडल और अनुरोध मापदंडों के रूप में कैसे किया जाता है।

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
@ App.("/items /", responsion_model = सूची [आइटम])
Ac def get_items ():
    आइटम = प्रतीक्षा आइटम का चयन करें _ संबंधित ("category") .all ()
    आइटम लौटाएं


@ app.post ("/ आइटम /", प्रतिक्रिया _ मॉडल = आइटम)
Ac def create_item (item: Item):
    प्रतीक्षा item.save ()
    वापसी आइटम


@ app.post ("/ श्रेणियां /", प्रतिक्रिया _ मॉडल = श्रेणी)
Ac def create_category (category: Category):
    प्रतीक्षा category.save ()
    वापसी श्रेणी


@ App.("/items/{item_id}")
Ac def get_item (item _ id: int, item: item):
    item_db = I.का इंतजार करें (pk = item_id)
    वापसी का इंतजार आइटम_डीबी (** item.model_dmp) ()


@ App.("/items/{item_id}")
Ac def delet_item (item _ id: int, item: = कोई नहीं):
    यदि आइटम:
        वापसी {"deleted_rows": await item.delete()}
    item_db = I.का इंतजार करें (pk = item_id)
    वापसी {"deleted_rows": await item_db.delete()}

!!!ध्यान दें कि Fआपके लिए इसे शुरू करने के बाद एक ormar नमूना विधि जैसे () सीधे उपलब्ध है।

!!!ध्यान दें कि आप सीधे एक नमूना वापस कर सकते हैं (or list of models) - Fआपके लिए इसे jsonकरेगा

आवेदन का परीक्षण करें

Fचल रहा है

यदि आप इस स्क्रिप्ट को चलाना चाहते हैं और फास्टापी स्वैगर का उपयोग करना चाहते हैं तो पहले uस्थापित करें

पिप स्थापित u

और Fशुरू करें।

uvicorn <filename_without_extension>:app --reload

अब आप अपने ब्राउज़र पर नेविगेट कर सकते हैं (fastapi पता डिफ़ॉल्ट रूप से 127.0.0.1:8000/docs है) और api का उपयोग करें।

!!!जानकारी आप Fप्रलेखन में Fचलाने के बारे में अधिक पढ़ सकते हैं।

पाइटेस्ट के साथ टेस्ट

यहां एक नमूना परीक्षण है जो प्रदर्शित करेगा कि सब कुछ उम्मीद के मुताबिक काम करता है।

पहले तालिका बनाना सुनिश्चित करें। यदि आप pyका उपयोग करते हैं, तो आप एक स्थिरता का उपयोग कर सकते हैं।

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
@ .(autouse = True, गुंजाइश = "मॉड्यूल")
डिफ क्रिएट _ टेस्ट _ डेटाबेस ():
    इंजन = sqlal (DATABASE_URL)
    सभी बनाएँ (engine)
    उपज
    ड्रॉप _ सभी (इंजन)



# फास्टापी के साथ ओमार के काम की जांच करने के लिए एक नमूना परीक्षण है

से te.आयात Testent

Dपरीक्षण _ सभी _ समापन बिंदु ():
    # ध्यान दें कि Testent केवल सिंक है, यहां asyका उपयोग न करें
    क्लाइंट = टेस्टक्लाइंट (ऐप)
    # ध्यान दें कि आपको मैन्युअल रूप से डेटाबेस से कनेक्ट करने की आवश्यकता है
    # या परीक्षण के दौरान ग्राहक को संदर्भ प्रबंधक के रूप में उपयोग करें
    ग्राहकों के रूप में ग्राहकों के साथ:
        प्रतिक्रिया = client.post ("/ श्रेणियां /", json ={"name": "test cat"})
        श्रेणी = प्रतिक्रिया.json ()
        प्रतिक्रिया = client.post (
            "/ आइटम /", json ={"name": "test", "id": 1, "category": category}
        )
        आइटम = आइटम (** response.json ())
        item.pk कोई नहीं है

        प्रतिक्रिया = ग्राहक ("/items/")
        आइटम = [Item (** item) प्रतिक्रिया में आइटम के लिए। json ()]
        सम्मिलित आइटम [0] == आइटम

        item.name = "नया नाम"
        प्रतिक्रिया = client.put (f "/items/{item.pk}", json = आइटम। model_dmp) ())
        प्रतिक्रिया दें। json () == item.model_dump ()

        प्रतिक्रिया = ग्राहक ("/items/")
        आइटम = [Item (** item) प्रतिक्रिया में आइटम के लिए। json ()]
        आइटम डालें [0]। नाम = = "नया नाम"

        प्रतिक्रिया = client.delet (f "/items/{item.pk}", json = item. model_dump ())
        प्रतिक्रिया दें। json ().get ("deleted_rows", "__ UNDEFINED__")! = "__ UNDEFINED__"
        प्रतिक्रिया = ग्राहक ("/items/")
        आइटम = प्रतिक्रिया.json ()
        लेन (आइटम) = 0 डालें

!!!टिप यदि आप अधिक परीक्षण मामलों को देखना चाहते हैं और ormar / api का परीक्षण कैसे करना चाहते हैं, तो githरिपॉजिटरी में परीक्षण निर्देशिका देखें

!!!जानकारी आप Fप्रलेखन में Fपरीक्षण के बारे में अधिक पढ़ सकते हैं।