当前位置: 首页 > news >正文

fastapi的docs页面是空白解决

环境:openEuler、python 3.11.6、fastapi 0.115.2

背景:居家办公,默认搭建的fastapi的docs接口为空白

时间:20241016

说明:网上很多教程的缺点是复杂(但是能够了解的更清楚),使用官方文档解决很便利

官方文档地址:Custom Docs UI Static Assets

 1、搭建环境

 安装相应的python包

pip install fastapi uvicorn

创建main文件:

# main.py
from fastapi import FastAPI
app = FastAPI()@app.get("/") # 根路由
async def root():return "I want to change the world"if __name__ == "__main__":import uvicornuvicorn.run(app, host="0.0.0.0", port=8000)# 启动命令:uvicorn main:app --reload --host 0.0.0.0 --port 8000

运行测试:

说明启动成功

(venv) [jack@Laptop-L14-gen4 fastTest]$ uvicorn main:app --reload --host 0.0.0.0 --port 8000
INFO:     Will watch for changes in these directories: ['/home/jack/fastTest']
INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [6119] using StatReload
INFO:     Started server process [6121]
INFO:     Waiting for application startup.
INFO:     Application startup complete.

 浏览器查看

 至此,说明基本环境搭建完毕

2、问题发现

默认访问 http://172.26.20.199:8000/docs 应该如下:

可问题却是空白

 原因分析:

fastapi的文件是提供的CDN为国外的网址,偶尔可能存在网络延迟,导致为空白,使用F12可以看到是文件获取不到

3、解决问题

第一种方式的再试试,存在这种可能性

第二种方式为复制官方文档提供的部分代码:

# 增加的代码部分from fastapi.openapi.docs import (get_redoc_html,get_swagger_ui_html,get_swagger_ui_oauth2_redirect_html,
)app = FastAPI(docs_url=None, redoc_url=None)@app.get("/docs", include_in_schema=False)
async def custom_swagger_ui_html():return get_swagger_ui_html(openapi_url=app.openapi_url,title=app.title + " - Swagger UI",oauth2_redirect_url=app.swagger_ui_oauth2_redirect_url,swagger_js_url="https://unpkg.com/swagger-ui-dist@5/swagger-ui-bundle.js",swagger_css_url="https://unpkg.com/swagger-ui-dist@5/swagger-ui.css",)

上述代码完全无脑复制到你的main.py中,覆盖app = 这一行即可,复制完如下:

# main.py
from fastapi import FastAPIfrom fastapi.openapi.docs import (get_redoc_html,get_swagger_ui_html,get_swagger_ui_oauth2_redirect_html,
)app = FastAPI(docs_url=None, redoc_url=None)@app.get("/docs", include_in_schema=False)
async def custom_swagger_ui_html():return get_swagger_ui_html(openapi_url=app.openapi_url,title=app.title + " - Swagger UI",oauth2_redirect_url=app.swagger_ui_oauth2_redirect_url,swagger_js_url="https://unpkg.com/swagger-ui-dist@5/swagger-ui-bundle.js",swagger_css_url="https://unpkg.com/swagger-ui-dist@5/swagger-ui.css",)@app.get("/") # 根路由
async def root():return "I want to change the world"if __name__ == "__main__":import uvicornuvicorn.run(app, host="0.0.0.0", port=8000)# 启动命令:uvicorn main:app --reload --host 0.0.0.0 --port 8000

保存,fastapi会自动重新加载,刷新网页即可。

http://www.lryc.cn/news/461517.html

相关文章:

  • 浙大数据结构:11-散列4 Hashing - Hard Version
  • pm2 守护http-server
  • 国外电商系统开发-运维系统应用管理
  • 剖析线程池实现原理
  • 【中危】Oracle TNS Listener SID 可以被猜测
  • 三维测量与建模笔记 - 简介
  • Glide 简易教程
  • flutter 使用三方/自家字体
  • 2024台州赛CTFwp
  • 词根plac-和place、please
  • ubuntu下route命令详解
  • 13.java面向对象:面向对象的三大特征
  • 【VUE】Vue中的内置组件
  • 若依框架篇-若依框架搭建具体过程、后端源代码分析、功能详解(权限控制、数据字典、定时任务、代码生成、表单构建、接口测试)
  • 恢复已删除文件的 10 种安卓数据恢复工具
  • Internet Download Manager2025快速下载,新功能解锁!
  • 传感器应用注意事项
  • PayPal美区账号注册指南
  • 《鸟哥的Linux私房菜基础篇》---1 Linux的介绍与如何开启Linux之路
  • 选择排序,插入排序,快速排序的java简单实现
  • 数据库中,超出范围和溢出问题的一些处理方法
  • Re75 读论文:Toolformer: Language Models Can Teach Themselves to Use Tools
  • Android App系统签名
  • Shiro认证(Authentication)
  • Qt和c++面试集合
  • Spark 3.3.x版本中的动态分区裁剪(DPP,Dynamic Partition Pruning)的实现及应用剖析
  • Android 各国语言value文件夹命名规则
  • 深入理解Redis锁与Backoff重试机制在Go中的实现
  • uniapp-小程序开发0-1笔记大全
  • Go语言数据库操作深入讲解