Sanic - 端点的路径类型不包含查询参数
Sanic - path type of endpoint doesn't include query arguments
如果我将路线定义为(仅代码的相关部分):
...
@app.get("brawlstats/endpoint:path>")
...
我尝试访问路由 /brawlstats/rankings/global/brawlers/16000001?limit=200
,它在问号处中断。我希望端点包括整个 url。我如何让它包含整个路径?
?
之后的所有内容都被视为 query string 的一部分。你的 endpoint
代表 path after /brawlstats
.
由于 endpoint
和 limit
参数分开,您可以使用此示例检索两者:
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)
如果我将路线定义为(仅代码的相关部分):
...
@app.get("brawlstats/endpoint:path>")
...
我尝试访问路由 /brawlstats/rankings/global/brawlers/16000001?limit=200
,它在问号处中断。我希望端点包括整个 url。我如何让它包含整个路径?
?
之后的所有内容都被视为 query string 的一部分。你的 endpoint
代表 path after /brawlstats
.
由于 endpoint
和 limit
参数分开,您可以使用此示例检索两者:
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)