擅长:python、mysql、java
<p>不要混淆查询参数和路径参数。</p>
<h3>路径参数</h3>
<p>路径参数是<code>URL</code>中<em>路径</em>部分的变量。</p>
<pre><code>@app.route('/longword/game_id/')
def longword(game_id):
[...]
</code></pre>
<p>您可以选择指定此类参数的类型:</p>
<pre><code>@app.route('/longword/<int:game_id>/')
def longword(game_id):
[...]
</code></pre>
<p>要调用该函数,您需要<code>GET</code></p>
<pre><code>http://localhost:5000/longword/123/
</code></pre>
<p>这些参数不能是可选的(除非没有它们声明另一个路由)。URL中未命名参数,但参数/值关联不含糊。想想<em>位置参数</em>。</p>
<h3>查询参数</h3>
<p>查询参数位于查询字符串</em>中(在<code>?</code>之后)。</p>
<pre><code>@app.route('/longword/')
def longword(game_id):
game_id = request.args.get('gameid')
return "got hardcode %d" % game_id
</code></pre>
<p>在这种情况下,参数对于路由是未知的。您可以从请求对象获取它们。注意,这里没有验证,所以必须覆盖丢失或类型错误的情况。</p>
<p>要调用该函数,您需要<code>GET</code></p>
<pre><code>http://localhost:5000/longword/?gameid=123&playerid=456
</code></pre>
<p>查询参数可以按任意顺序提供,并且它们可以是可选的,具体取决于您在函数中所做的操作。想想<em>关键字参数</em>。</p>
<p>注意:要获得函数参数的验证,您可能需要查看<a href="https://webargs.readthedocs.io/en/latest/" rel="nofollow noreferrer">webargs</a>。</p>