簡體   English   中英

如何在 Docker 上運行時重定向 FastAPI 文檔

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM