端点的Sanic路径类型不包含查询参数

2024-06-02 06:12:58 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我已将我的路线定义为(仅代码的相关部分):

...
@app.get("brawlstats/endpoint:path>")
...

我试图访问路径/brawlstats/rankings/global/brawlers/16000001?limit=200,它在问号处被切断。我希望端点包含整个url。如何使其包含整个路径


Tags: path代码路径appget定义端点路线
1条回答
网友
1楼 · 发布于 2024-06-02 06:12:58

?之后的所有内容都被视为query string的一部分。您的endpoint表示/brawlstats之后的路径

由于endpointlimit参数是分开的,因此您可以使用此示例检索这两个参数:

from sanic import Sanic
from sanic.response import text

app = Sanic()


@app.get('/brawlstats/<endpoint:path>')
async def brawlstats(request, endpoint):

    # endpoint is set to part after '/brawlstats'.
    # limit query arg is converted to integer or 0 if it's not set.
    limit = int(request.args.get('limit', 0))

    if endpoint == 'rankings/global/brawlers/16000001' and limit > 0:
        return text('Success', 200)

    return text('Bad request', 400)

if __name__ == "__main__":
    app.run(host="127.0.0.1", port=8000)

相关问题 更多 >