如何在FastAPI中解析URL中的子域?

问题描述 投票:0回答:1

我们的客户将使用我们的新 API:

foo123.bar456.domain.com/v1.5/

foo123
bar456
子域是特定于帐户的(让我们进行负载平衡)。它们表示我们需要做的关系和触发处理。

我们不想(重复)在 ULR 中传递参数,如

....domain.com/v1.5/?acc=foo123?parent=bar456
所示,坦率地说,这只是非Pythonic。

所以,我想在 FastAPI 中解析调用的完全限定域名。

我找不到有关如何执行此操作(URL 解析)的提示,该提示不涉及 FQDN 右侧的文件夹。提示/指示?谢谢!

python fastapi subdomain starlette parse-url
1个回答
0
投票

您可以在

urllib.parse.urlparse()
上使用
request.url
来获取主机名/域,然后根据需要进一步分解它 - 受到 这个答案,以及 这个答案这个答案的启发.

示例

使用下面的示例,例如,在浏览器地址栏中输入

http://abc.def.localhost:8000/
并按 Enter 键时,它将返回
abc.def.localhost
。您还可以使用 split
 作为分隔符进一步 
.
 该字符串,以便获得所需的子域。

from fastapi import FastAPI, Request
import urllib


app = FastAPI()


@app.get('/')
def index(request: Request):
    url = urllib.parse.urlparse(str(request.url))
    return url.hostname
© www.soinside.com 2019 - 2024. All rights reserved.