我们的客户将使用我们的新 API:
foo123.bar456.domain.com/v1.5/
foo123
和 bar456
子域是特定于帐户的(让我们进行负载平衡)。它们表示我们需要做的关系和触发处理。
我们不想(重复)在 ULR 中传递参数,如
....domain.com/v1.5/?acc=foo123?parent=bar456
所示,坦率地说,这只是非Pythonic。
所以,我想在 FastAPI 中解析调用的完全限定域名。
我找不到有关如何执行此操作(URL 解析)的提示,该提示不涉及 FQDN 右侧的文件夹。提示/指示?谢谢!
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