RuoYi-Vue3-FastAPI icon indicating copy to clipboard operation
RuoYi-Vue3-FastAPI copied to clipboard

swagger-doc

Open buptzyf opened this issue 1 year ago • 9 comments

我又来了,重开了个issue

默认启动方式下,localhost:9099/docs打不开swagger页面

然后app.py中修改为:

if __name__ == "__main__":
    uvicorn.run(
        app="server:app",
        host=AppConfig.app_host,
        port=AppConfig.app_port,
        reload=AppConfig.app_reload,
    )

server.py中修改为:

初始化FastAPI对象

app = FastAPI(
    title=AppConfig.app_name,
    description=f"{AppConfig.app_name}接口文档",
    root_path=AppConfig.app_root_path,
    version=AppConfig.app_version,
    lifespan=lifespan,
)

就可正常打开了,这样改是否合理(hhh来自一个前java程序员

buptzyf avatar Jun 29 '24 12:06 buptzyf

这样修改你会发现前端无法正常获取静态文件,这是fastapi目前存在的一个bug,已有相关的pr,待合并后应该就正常了

insistence avatar Jun 29 '24 12:06 insistence

看到你提的了,https://github.com/tiangolo/fastapi/issues/11622

感觉fastapi的release节奏变慢了,这个好像没下文了

https://github.com/tiangolo/fastapi/discussions/11626

buptzyf avatar Jun 29 '24 14:06 buptzyf

这样修改你会发现前端无法正常获取静态文件,这是fastapi目前存在的一个bug,已有相关的pr,待合并后应该就正常了

在app.py中去掉root_path配置,在server.py中新增配置 docs_url=AppConfig.app_root_path + '/docs',这样就能解决这个问题了

# 初始化FastAPI对象
app = FastAPI(
    title=AppConfig.app_name,
    description=f'{AppConfig.app_name}接口文档',
    docs_url=AppConfig.app_root_path + '/docs',
    version=AppConfig.app_version,
    lifespan=lifespan,
)

我本地代码运行截图,头像是本地静态文件 image

yxb94616 avatar Aug 22 '24 13:08 yxb94616

这样修改你会发现前端无法正常获取静态文件,这是fastapi目前存在的一个bug,已有相关的pr,待合并后应该就正常了

在app.py中去掉root_path配置,在server.py中新增配置 docs_url=AppConfig.app_root_path + '/docs',这样就能解决这个问题了

# 初始化FastAPI对象
app = FastAPI(
    title=AppConfig.app_name,
    description=f'{AppConfig.app_name}接口文档',
    docs_url=AppConfig.app_root_path + '/docs',
    version=AppConfig.app_version,
    lifespan=lifespan,
)

我本地代码运行截图,头像是本地静态文件 image

这样写前端的系统接口菜单就失效了

insistence avatar Aug 22 '24 15:08 insistence

这样修改你会发现前端无法正常获取静态文件,这是fastapi目前存在的一个bug,已有相关的pr,待合并后应该就正常了

在app.py中去掉root_path配置,在server.py中新增配置 docs_url=AppConfig.app_root_path + '/docs',这样就能解决这个问题了

# 初始化FastAPI对象
app = FastAPI(
    title=AppConfig.app_name,
    description=f'{AppConfig.app_name}接口文档',
    docs_url=AppConfig.app_root_path + '/docs',
    version=AppConfig.app_version,
    lifespan=lifespan,
)

我本地代码运行截图,头像是本地静态文件 image

这样写前端的系统接口菜单就失效了

这个系统接口菜单是指的哪个呐?我看我本地的前端功能都正常的 image

yxb94616 avatar Aug 23 '24 01:08 yxb94616

这样修改你会发现前端无法正常获取静态文件,这是fastapi目前存在的一个bug,已有相关的pr,待合并后应该就正常了

在app.py中去掉root_path配置,在server.py中新增配置 docs_url=AppConfig.app_root_path + '/docs',这样就能解决这个问题了

# 初始化FastAPI对象
app = FastAPI(
    title=AppConfig.app_name,
    description=f'{AppConfig.app_name}接口文档',
    docs_url=AppConfig.app_root_path + '/docs',
    version=AppConfig.app_version,
    lifespan=lifespan,
)

我本地代码运行截图,头像是本地静态文件 image

这样写前端的系统接口菜单就失效了

明白了,这里指的是 OpenAPI 的接口会失效

yxb94616 avatar Aug 23 '24 01:08 yxb94616

这样修改你会发现前端无法正常获取静态文件,这是fastapi目前存在的一个bug,已有相关的pr,待合并后应该就正常了

我再次尝试了一下,backend 修改如 @buptzyf 这个老哥写一样,把root_path=AppConfig.app_root_path 配置从app.py改到server.py来,然后修改 frontend 的 vite 的 proxy 配置,不要 rewrite 配置就行:

proxy: {
  // https://cn.vitejs.dev/config/#server-proxy
  "/dev-api": {
    target: "http://127.0.0.1:9099/",
    changeOrigin: true,
    // rewrite: (p) => p.replace(/^\/dev-api/, ""),
  },
},

这样无论是前端接口及静态资源,又或是openapi文档和接口都能正常访问了

yxb94616 avatar Aug 23 '24 02:08 yxb94616

这样修改你会发现前端无法正常获取静态文件,这是fastapi目前存在的一个bug,已有相关的pr,待合并后应该就正常了

我再次尝试了一下,backend 修改如 @buptzyf 这个老哥写一样,把root_path=AppConfig.app_root_path 配置从app.py改到server.py来,然后修改 frontend 的 vite 的 proxy 配置,不要 rewrite 配置就行:

proxy: {
  // https://cn.vitejs.dev/config/#server-proxy
  "/dev-api": {
    target: "http://127.0.0.1:9099/",
    changeOrigin: true,
    // rewrite: (p) => p.replace(/^\/dev-api/, ""),
  },
},

这样无论是前端接口及静态资源,又或是openapi文档和接口都能正常访问了

感谢贡献解决方案,但从项目本身来说我还是倾向于保留rewrite依然可以正常使用的写法,对于nginx也是如此。在底层bug未解决之前,我会一直保留这个issue,以给需要的人提供解决方法。

insistence avatar Aug 26 '24 03:08 insistence

Image 改到FastAPI 没发现任何问题 docs也能打开

Jiachang-Cai avatar May 29 '25 09:05 Jiachang-Cai