Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

swagger-doc #6

Open
buptzyf opened this issue Jun 29, 2024 · 8 comments
Open

swagger-doc #6

buptzyf opened this issue Jun 29, 2024 · 8 comments

Comments

@buptzyf
Copy link

buptzyf commented Jun 29, 2024

我又来了,重开了个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程序员

@insistence
Copy link
Owner

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

@buptzyf
Copy link
Author

buptzyf commented Jun 29, 2024

看到你提的了,fastapi/fastapi#11622

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

fastapi/fastapi#11626

@yxb94616
Copy link

这样修改你会发现前端无法正常获取静态文件,这是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
Copy link
Owner

这样修改你会发现前端无法正常获取静态文件,这是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
Copy link

这样修改你会发现前端无法正常获取静态文件,这是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
Copy link

这样修改你会发现前端无法正常获取静态文件,这是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
Copy link

这样修改你会发现前端无法正常获取静态文件,这是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文档和接口都能正常访问了

@insistence
Copy link
Owner

这样修改你会发现前端无法正常获取静态文件,这是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,以给需要的人提供解决方法。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants