صفحات توثيق قابلة للتخصيص القابلة للتخصيص القابلة للتخصيص القابلة للتخصيص القابلة للتخصيص على OpenAPI ، REDOC ، Rapidoc ، عناصر ، العددية.
ضع في اعتبارك أن هذه الحزمة لا تنشئ مواصفات OpenAPI ، بل إنها تجعل الصفحات فقط مع التكوين المحدد.
gimme مواصف Openapi ، اترك الباقي لي ...
| الوثائق | صفحة | تكوين |
|---|---|---|
| Swaggerui | ✅ | ✔ |
| ريدوك | ✅ | ✔ |
| رابدوك | ✅ | ✔ |
| عناصر | ✅ | ✔ |
| العددية | ✅ | ✔ |
مفتاح الرموز التعبيرية:
| الرموز التعبيرية | معنى |
|---|---|
| ✅ | مستعد |
| ✔ | جزئيا |
| فشل | |
| ؟ | في تَقَدم |
| ؟ | قيد الانتظار |
| لست متأكدا |
pip install openapipages أعلم أنه يبدو قليلاً من الغلاية ولكن كل شيء مستقيم إلى الأمام. طريقة .render() تُرجع HTML كسلسلة. بفضل هذا التصميم ، يمكنك تمديد وتكوين الصفحات كما ترغب في ذلك (على سبيل المثال ، أضف منطقًا إضافيًا لتقييد الوصول إلى الصفحة).
يتم تعيين معلمة
include_in_schemaعلىFalseفي كل نقطة نهاية لتجنب تضمين نقاط النهاية هذه في مواصفات OpenAPI.
from fastapi import FastAPI
from fastapi . responses import HTMLResponse
from openapipages import Elements , RapiDoc , ReDoc , Scalar , SwaggerUI
# Disable the built-in /redoc page so we can make a custom one.
app = FastAPI ( redoc_url = None )
@ app . get ( "/" )
def root () -> dict [ str , str ]:
return { "Hello" : "World" }
@ app . get ( "/swaggerui" , response_class = HTMLResponse , include_in_schema = False )
def get_swaggerui () -> str :
return SwaggerUI ( title = "Swagger UI" ). render ()
@ app . get ( "/redoc" , response_class = HTMLResponse , include_in_schema = False )
def get_redoc () -> str :
return ReDoc ( title = "ReDoc" ). render ()
@ app . get ( "/scalar" , response_class = HTMLResponse , include_in_schema = False )
def get_scalar () -> str :
return Scalar ( title = "Scalar" ). render ()
@ app . get ( "/elements" , response_class = HTMLResponse , include_in_schema = False )
def get_elements () -> str :
return Elements ( title = "Elements" ). render ()
@ app . get ( "/rapidoc" , response_class = HTMLResponse , include_in_schema = False )
def get_rapidoc () -> str :
return RapiDoc ( title = "RapiDoc" ). render ()يتم تعيين معلمة
include_in_schemaعلىFalseفي كل نقطة نهاية لتجنب تضمين نقاط النهاية هذه في مواصفات OpenAPI.
from litestar import Litestar , MediaType , get
from openapipages import Elements , RapiDoc , ReDoc , Scalar , SwaggerUI
openapi_url = "/schema/openapi.json"
@ get ( "/" )
def root () -> dict [ str , str ]:
return { "Hello" : "World" }
@ get ( "/swaggerui" , media_type = MediaType . HTML , include_in_schema = False )
def get_swaggerui () -> str :
return SwaggerUI ( title = "Swagger UI" , openapi_url = openapi_url ). render ()
@ get ( "/redoc" , media_type = MediaType . HTML , include_in_schema = False )
def get_redoc () -> str :
return ReDoc ( title = "ReDoc" , openapi_url = openapi_url ). render ()
@ get ( "/scalar" , media_type = MediaType . HTML , include_in_schema = False )
def get_scalar () -> str :
return Scalar ( title = "Scalar" , openapi_url = openapi_url ). render ()
@ get ( "/elements" , media_type = MediaType . HTML , include_in_schema = False )
def get_elements () -> str :
return Elements ( title = "Elements" , openapi_url = openapi_url ). render ()
@ get ( "/rapidoc" , media_type = MediaType . HTML , include_in_schema = False )
def get_rapidoc () -> str :
return RapiDoc ( title = "RapiDoc" , openapi_url = openapi_url ). render ()
app = Litestar ([ root , get_swaggerui , get_redoc , get_scalar , get_elements , get_rapidoc ])TL ؛ DR - لا أريد نسخه ولصقه مرة أخرى ...
العديد من أدوات توثيق API جاهزة للاستخدام في متناول يدك مع واجهة قياسية.
لا مزيد من النسخ ولصق نفس الشيء من مشروع إلى آخر. استيراد الحزمة واستخدمها!
هنا طلب سحب تم تقديمه إلى Fastapi Repo. كانت هذه هي النقطة التي فهمت أن التكوين محدود ولن يتغير ...
أيضًا ، توضح إجابة المؤلف على هذا العلاقات العامة أننا لن نرى المزيد من أدوات التوثيق البديلة في المستقبل.
إليك طلب سحب آخر تم تقديمه إلى Fastapi Repo. إنه يجلب الدعم القياسي ، ولكن لم تتم الموافقة عليه/دمجه بعد وأعتقد أنه سيبقى بهذه الطريقة بفضل العلاقات العامة السابقة.
واجهة قياسية للعديد من واجهات وثائق API مع ميزات التكوين.
في الآونة الأخيرة ، أصبحت أدوات التوثيق القائمة على المواصفات Openapi شائعة في مجتمع Python. نرى الكثير من المشاريع (Fastapi ، Litestar ، Apispec ، Flasgger ، Spectree ، Connexion ، إلخ) تقدم الدعم لمواصفات OpenAPI خارج الصندوق.
لدى Litestar دعم Swaggerui و Redoc و Rapidoc و Elements و Fastapi لديه دعم لـ Swaggerui ، و Redoc ولكن ما هو التالي؟ هل سيكون القادم كافيًا؟
لديهم جميعًا شيء واحد مشترك ، بعض HTML (كسلسلة Python أو ملف) معبدة بالتكوين المحدد.
هل ترى إلى أين أنا ذاهب؟
أريد أن يكون openapipages SqlalChemy لأدوات التوثيق القائمة على المواصفات OpenAPI.
واجهة واحدة للكثيرين! وبالطبع الإطار غير الملحوظ ... حتى تتمكن من استخدامه في مشاريع Fastapi أو Litestar أو أي مشروع آخر يولد مواصفات OpenAPI.
ألهمني مشاريع Fastapi و Litestar وطلبي السحب المذكوران أعلاه لإنشاء هذه الحزمة.
يتم توزيع openapipages بموجب شروط ترخيص معهد ماساتشوستس للتكنولوجيا.