如何将 CSS 样式添加到 FastAPI 文档

Nir*_*ary 5 python markdown swagger openapi fastapi

因此,我们使用 FastAPI 构建了一个 API,对于 API 的文档,我们首先使用 markdown 并在初始化 FastAPI 对象时传递它,如下所示

main = FastAPI(
    root_path="/public",
    title="API",
    description="""{}""".format(open("public/app/description.md").read()),
)
Run Code Online (Sandbox Code Playgroud)

在我们的description.md文件中,我们使用了markdowns代码块功能来突出显示语法。我们使用的语法是使用反引号和其旁边的编程语言名称,以便它像任何文本编辑器一样突出显示关键字。对于前: 在此输入图像描述

现在,一旦我们运行应用程序并导航到http://localhost/public/docs, FastAPI 就会去掉所有样式并将其设置为纯文本,但我们希望它的显示方式就像上图所示。这是去掉造型后的样子。 在此输入图像描述

我们还尝试使用 HTML/CSS,但 FastAPI 也去掉了样式并将 HTML 呈现为纯文本。有人可以指导我们实现 FastAPI 文档的语法突出显示,以便当我们转到/docs时我们的代码块语法突出显示保持不变任何帮助或线索表示赞赏

den*_*ost 0

您可以在 FastAPI 描述中包含的文档 Markdown 中注入 HTML。然而,默认情况下,FastAPI 在您的 markdown 上运行一个清理程序,删除styleclass,以及data-*属性。

如果您不想让 FastAPI 删除 CSS 样式属性,您可以使用swagger_ui_parameters选项并将键"useUnsafeMarkdown"设置为true

main = FastAPI(..., 
    description="""Hello <span style="color: gold;">shiny</span> world!""",

    swagger_ui_parameters={
        "useUnsafeMarkdown": True
    }
)
Run Code Online (Sandbox Code Playgroud)

另请参阅以下选项swagger_ui_parametersSwagger UI 配置