完全基于pythonic,基于开放式的可自定义文档页面,用于Swaggerui,redoc,rapidoc,元素,标量。
请记住,此软件包不会生成OpenAPI规格,它只是用给定的配置呈现页面。
gimme a Openapi规格,把其余的留给我...
| 文档 | 页 | config |
|---|---|---|
| Swaggerui | ✅ | ✔️ |
| 重做 | ✅ | ✔️ |
| Rapidoc | ✅ | ✔️ |
| 元素 | ✅ | ✔️ |
| 标量 | ✅ | ✔️ |
表情符号键:
| 表情符号 | 意义 |
|---|---|
| ✅ | 准备好 |
| ✔️ | 部分 |
| 失败的 | |
| ? | 进行中 |
| ? | 待办的 |
| 没有把握 |
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回购的拉动请求。这是我了解配置有限的观点,不会改变...
另外,作者对此公关的回答表明,将来我们将不会看到更多替代文档工具。
这是对Fastapi仓库提出的另一个拉力请求。它带来了标量支持,但尚未获得批准/合并,我认为由于以前的PR,它将保持这种状态。
许多API文档界面的标准接口具有配置功能。
最近,基于OpenAPI规格的文档工具在Python社区中变得很流行。我们看到许多项目(Fastapi,Litestar,Apispec,Flasgger,Spectree,Connexion等)提供了支持OpenAPI规范的支持。
Litestar对Swaggerui,ReDoc,Rapidoc和Elements有支持,Fastapi对Swaggerui和Redoc有所支持,但是接下来是什么?下一个足够吗?
它们都有一个共同点,其中一些HTML(如python字符串或文件)用给定的配置模板。
你看到我要去的地方吗?
我希望openapipages成为基于OpenAPI规格的文档工具的Sqlalchemy。
一个界面的一个接口!当然,框架不可知论...因此,您可以在Fastapi,Litestar项目或任何其他生成OpenAPI规格的项目中使用它。
Fastapi和Litestar项目以及上面提到的两个拉请求激发了我创建此软件包。
openapipages根据MIT许可条款分发。