Python 为什么这个默认路由会重定向?
在使用curl测试API功能时,我尝试将post数据发送到下面的路由。在观看调试时,视图响应301重定向以获取所需数据。我做错了什么 以下是我目前的观点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
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将保持唯一性,这有助于搜索引擎避免对同一页面进行两次索引
非常感谢你的解释,这解决了问题。我已经删除了后面的斜杠以获得所需的响应。