DEV Community

Cover image for Replacing fastapi's default api docs with elements
Amal Shaji
Amal Shaji Subscriber

Posted on Originally published at amal.sh

Replacing fastapi's default api docs with elements

By default, fastapi comes with swagger for API testing and redoc for API documentation. Let's replace them with elements, a pretty API documentation tool.

Turn off the defaults

Turn off the default documentation by setting it to None



app = FastAPI(
    docs_url=None, redoc_url=None
)


Enter fullscreen mode Exit fullscreen mode

Add the new docs view



@app.get("/docs", include_in_schema=False)
async def api_documentation(request: Request):
    return HTMLResponse("""
<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title>Elements in HTML</title>

    <script src="https://unpkg.com/@stoplight/elements/web-components.min.js"></script>
    <link rel="stylesheet" href="https://unpkg.com/@stoplight/elements/styles.min.css">
  </head>
  <body>

    <elements-api
      apiDescriptionUrl="openapi.json"
      router="hash"
    />

  </body>
</html>""")


Enter fullscreen mode Exit fullscreen mode

Navigate to /docsYou should see something like this

demo

References

Top comments (3)

Collapse
 
inayet profile image
Inayet Hadi

Exactly what I was looking for, thank you so much

Collapse
 
ronifintech profile image
Roni Yosofov

I had to register to say THANK YOU!
Didn't know I could replace Swagger so easily!
elements is awesome!

Collapse
 
shreyaan_seth_ff1cf0a1dc0 profile image
Shreyaan Seth

damn thanks