[英]How to make FASTAPI pickup changes in an API routing file automatically while running inside a docker container?
[英]How to redirect FastAPI Documentation while running on Docker
我需要将“ /swagger-ui.html ”重定向到文档页面。
我试过了:
app = FastAPI()
@app.get("/swagger-ui.html")
async def docs_redirect():
response = RedirectResponse(url='/docs')
return response
和
app = FastAPI(docs_url="/swagger-ui.html")
@app.get("/")
async def docs_redirect():
response = RedirectResponse(url='/swagger-ui.html')
return response
但是,直接运行项目(使用 uvicorn 命令)我可以工作,但是当我把它放在 Docker 容器上时,它会在浏览器上输出这条消息,询问位置,输入没有任何作用:
无法推断 base url。这在使用动态 servlet 注册或 API 在 API 网关后面时很常见。 基础 url 是提供所有 swagger 资源的根。 例如,如果 api 在http://example.org/api/v2/api-docs可用,那么基础 url 是http://example.org/api/ 。 请手动输入位置:
这是我的 dockerfile:
FROM python:3.8
USER root
RUN mkdir -p /usr/local/backend
WORKDIR /usr/local/backend
EXPOSE 8080
ARG BUILD_ENV=dev
ENV BUILD_ENV=$BUILD_ENV
COPY . /usr/local/backend
RUN pip install -r requirements.txt
ENTRYPOINT ["uvicorn", "app.main:app", "--port", "8080"]
试试这个代码,当我使用docker-compose
时它对我有用:
app = FastAPI()
@app.get("/")
async def docs_redirect():
return RedirectResponse(url='/docs')
避免在文档页面中显示重定向
@app.get("/", include_in_schema=False)
async def docs_redirect():
return RedirectResponse(url='/docs')
此处的文档: https://fastapi.tiangolo.com/advanced/path-operation-advanced-configuration/#exclude-from-openapi
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.