API स्कीमा
te जेनेरेटिव एपीआई पैटर्न का समर्थन करता है, जैसे कि व्यापक रूप से उपयोग किए जाने वाले ओपनएपीआई विनिर्देश। (पूर्व में "स्वैगर" के रूप में जाना जाता है।)
पैटर्न पीढ़ी द्वारा काम करता है app.routes एप्लिकेशन पर मार्गों की जांच करें और पूर्ण एपीआई स्कीमा निर्धारित करने के लिए समापन बिंदु पर दस्तावेज़ स्ट्रिंग या अन्य गुणों का उपयोग करें।
te किसी विशेष स्कीमा पीढ़ी या सत्यापन उपकरण से बंधा नहीं है, लेकिन इसमें एक सरल कार्यान्वयन शामिल है जो दस्तावेज़ स्ट्रिंग के आधार पर स्कीमा उत्पन्न करता है।
te.से आयात
स्टारलेट से। रूटिंग आयात मार्ग
से te.as आयात aआयात
स्कीमास = स्कीमाजेनरेटर (
{"OpenAPI": 3.0.0 "", "जानकारी":{"title": "Example API", "version": "1.0"}}
)
Dसूची _ उपयोगकर्ता (अनुरोध):
"""
प्रतिक्रियाएं:
200:
विवरण: उपयोगकर्ताओं की एक सूची।
उदाहरण:
[{"username": "tom"}, {"username": "lucy"}]
"""
नोट कार्यान्वयन त्रुटि उठाएँ ()
डिफ क्रिएट _ उपयोगकर्ता (अनुरोध):
"""
प्रतिक्रियाएं:
200:
विवरण: एक उपयोगकर्ता।
उदाहरण:
{"username": "tom"}
"""
नोट कार्यान्वयन त्रुटि उठाएँ ()
डिफ ओपनपी _ स्कीमा (अनुरोध):
स्कीमा लौटाएं। API प्रतिक्रिया (request = request)
मार्ग = [
मार्ग ("/ उपयोगकर्ता", समापन बिंदु = सूची _ उपयोगकर्ता, तरीके = ["GET"]),
रूट ("/users", एंडपॉइंट = create_user, विधियाँ = ["POST"]),
मार्ग ("/ स्कीमा", समापन बिंदु = openapi _ स्कीमा, _ in _ स्कीमा = गलत)
]
ऐप = स्टारलेट (routes = routes)
अब हम "/ स्कीमा" समापन बिंदु पर स्कीमा तक पहुंच सकते हैं।
आप उपयोग कर सकते हैं .get_schema(routes) सीधे एपीआई स्कीमा उत्पन्न करें:
स्कीमा = स्कीमास.गेट_स्कीमा (routes = app.routes)
स्कीमा = = {डालें
"ओपनपी": 3.0.0
"जानकारी":{"title": "Example API", "version": "1.0"},
"पथ": {
"/ उपयोगकर्ता": {
"प्राप्त करें": {
"प्रतिक्रियाएं": <
200: {
"विवरण": "उपयोगकर्ताओं की एक सूची।"
"उदाहरण": [{"username": "tom"},{"username": "lucy"}],
}
}
},
"पोस्ट": {
"प्रतिक्रियाएं": <
200: {"विवरण": "एक उपयोगकर्ता।", "उदाहरण":{"username": "tom"}}
}
},
},
},
}
आप एपीआई स्कीमा को प्रिंट करने में सक्षम होना चाह सकते हैं ताकि आप एपीआई प्रलेखन उत्पन्न करने जैसे उपकरणों का उपयोग कर सकें।
अगर __ नाम __ == '__ main__':
assert v [-1] में ("run", "schema"), "उपयोग: example.py [रन | स्कीमा]"
यदि v [-1] == "रन":
uvicorn.run ("उदाहरण: ऐप", होस्ट = 0.0.0.0 पोर्ट = 8000)
f v [-1] == "स्कीमा":
स्कीमा = स्कीमास.गेट_स्कीमा (routes = app.routes)
प्रिंट (yaml.dum) (स्कीमा, डिफ़ॉल्ट _ प्रवाह _ शैली = गलत))
तृतीय-पक्ष सॉफ्टवेयर पैकेज
स्टारबॉडी - एपीआई विशिष्टता
te APISpec के साथ एकीकृत करना आसान है और कई ऑब्जेक्ट क्रमबद्ध पुस्तकालयों का समर्थन करता है।