如何使用域获取 FastAPI 中的当前路径?

JPG*_*JPG 25 python fastapi

我有一个用 FastAPI 编写的简单路线,如下所示,

from fastapi import FastAPI

app = FastAPI()


@app.get("/foo/bar/{rand_int}/foo-bar/")
async def main(rand_int: int):
    return {"path": f"https://some-domain.com/foo/bar/{rand_int}/foo-bar/?somethig=foo"}
Run Code Online (Sandbox Code Playgroud)

我怎样才能“以编程方式”获取当前路径,

  • 领域 (some-domain.com
  • 小路 (/foo/bar/{rand_int}/foo-bar/
  • 和查询参数 ( ?somethig=foo)

JPG*_*JPG 37

我们可以使用Request.url-(starlette doc) API 来获取各种 URL 属性。要获取绝对URL,我们需要使用Request.url._url私有API(或str(Request.url)),如下

from fastapi import FastAPI, Request

app = FastAPI()


@app.get("/foo/bar/{rand_int}/foo-bar/")
async def main(rand_int: int, request: Request):
    return {"raw_url": str(request.url)}
Run Code Online (Sandbox Code Playgroud)

  • 也可以调用 str(request.url) 来获取 url 字符串以避免访问私有变量。 (11认同)
  • @Abbas 好点,更加Pythonic。我在 f 字符串中使用它,例如 `f"{request.url}: {some_log_message}"`。 (7认同)