Python 为什么这个默认路由会重定向?

Python 为什么这个默认路由会重定向?,python,api,redirect,curl,flask,Python,Api,Redirect,Curl,Flask,在使用curl测试API功能时,我尝试将post数据发送到下面的路由。在观看调试时,视图响应301重定向以获取所需数据。我做错了什么 以下是我目前的观点 from flask import Flask, jsonify, render_template, request from flask_cors import CORS app = Flask(__name__) @app.route('/') def index(): return render_template('ind

在使用curl测试API功能时,我尝试将post数据发送到下面的路由。在观看调试时,视图响应301重定向以获取所需数据。我做错了什么

以下是我目前的观点

from flask import Flask, jsonify, render_template, request
from flask_cors import CORS
app = Flask(__name__)




@app.route('/')
def index():
    return render_template('index.html')


@app.route("/api/user/login/", methods=["GET", "POST"])
def login(*args, **kwargs):
    print 'Got request for login'
    print args
    print kwargs
    print request.args
    print request.args.get("username")
    print request.values.get("username")
    print request.method

    response = {'username': 'Erik'}

    dict = request.args
    for key in dict:
        print 'form key ' + dict[key]

    # return jsonify(response)
    return response


if __name__ == "__main__":
    app.run(host='0.0.0.0', port=8080)
调用以下代码

curl -d "username=Flash" http://0.0.0.0:8080/api/user/login
启动重定向

/home/user/fab/bin/python2.7 /home/user/PycharmProjects/myelm/server.py
 * Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)
127.0.0.1 - - [06/Sep/2017 23:04:25] "POST /api/user/login HTTP/1.1" 301 -
以下是有关此行为的详细信息:

唯一URL/重定向行为 Flask的URL规则基于Werkzeug的路由模块。该模块背后的思想是确保基于Apache和早期HTTP服务器所制定的先例的漂亮且独特的URL

以这两条规则为例:

@app.route('/projects/')
def projects():
    return 'The project page'

@app.route('/about')
def about():
    return 'The about page'
虽然它们看起来很相似,但在URL定义中使用尾随斜杠的方式有所不同。在第一种情况下,projects端点的规范URL后面有一个斜杠。从这个意义上讲,它类似于文件系统上的文件夹。不带尾随斜杠访问它将导致Flask重定向到带尾随斜杠的规范URL

但是,在第二种情况下,URL的定义不带尾随斜杠,与类UNIX系统上的文件路径名类似。使用尾随斜杠访问URL将产生404“未找到”错误

这种行为允许相对URL继续工作,即使尾部斜杠被省略,这与Apache和其他服务器的工作方式一致。此外,URL将保持唯一性,这有助于搜索引擎避免对同一页面进行两次索引


非常感谢你的解释,这解决了问题。我已经删除了后面的斜杠以获得所需的响应。