Swaggerui, Redoc, Rapidoc, Elements, Scalar에 대한 완전히 피스닉, OpenApi 기반 사용자 정의 가능한 문서 페이지.
이 패키지는 OpenAPI 사양을 생성하지 않고 주어진 구성으로 페이지를 렌더링합니다.
gimme openapi 사양, 나머지는 나에게 맡기십시오 ...
| 선적 서류 비치 | 페이지 | 구성 |
|---|---|---|
| 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 Repo에 대한 풀 요청입니다. 이것이 제가 구성이 제한되어 있음을 이해하고 변경되지 않을 것입니다 ...
또한이 PR에 대한 저자의 답변은 향후 더 많은 대안 문서 도구를 보지 못할 것임을 보여줍니다.
다음은 Fastapi Repo에 대한 또 다른 풀 요청입니다. 스칼라 지원을 제공하지만 아직 승인/합병되지 않았으며 이전 PR 덕분에 그렇게 유지 될 것이라고 생각합니다.
많은 API 문서화에 대한 표준 인터페이스는 구성 기능이있는 인터페이스입니다.
최근에 OpenAPI 사양 기반 문서화 도구가 Python 커뮤니티에서 인기를 얻었습니다. 우리는 많은 프로젝트 (Fastapi, Litestar, Apispec, Flasgger, Spectree, Connexion 등)가 상자 밖에서 OpenAPI 사양을 지원하는 것을 볼 수 있습니다.
Litestar는 Swaggerui, Redoc, Rapidoc 및 Elements 및 Fastapi에 대한 지원을 받았으며 Swaggerui 및 Redoc을 지원하지만 다음은 무엇입니까? 다음 중 하나가 충분할까요?
주어진 구성으로 템플릿 한 HTML (파이썬 문자열 또는 파일)이 모두 공통적으로 있습니다.
내가 어디로 가는지 보십니까?
나는 openapipages OpenAPI 사양 기반 문서 도구의 sqlalchemy가되기를 원합니다.
많은 사람들을위한 하나의 인터페이스! 그리고 물론 프레임 워크의 불가지론 ... 따라서 Fastapi, Litestar 프로젝트 또는 OpenAPI 사양을 생성하는 기타 프로젝트에서 사용할 수 있습니다.
Fastapi 및 Litestar 프로젝트와 위에서 언급 한 두 개의 풀 요청은이 패키지를 만들도록 영감을주었습니다.
openapipages MIT 라이센스의 조건에 따라 배포됩니다.