我认为这一定是一个非常简单的问题,或者我可能忽略了一些重要的问题,但我只是开始了,而且有些东西我无法理解。 我写了一个简单的烧瓶应用程序:
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route("/")
def index():
return "Index!"
@app.route('/test', methods=['GET', 'POST'])
def test():
if request.method=='GET':
return "OK this is a get method"
elif request.method=='POST':
return "OK this is a post method"
else:
return("ok")
if __name__ == "__main__":
app.run()
当我打开以下网址时,我会按预期获得GET方法消息。
http://localhost:5000/test
但我无法将其切换为POST方法。 我需要输入什么URL来查看POST方法消息?
答案 0 :(得分:2)
每当您通过浏览器发出直接网址请求时,都会进行GET
来电。它与URL无关,但与请求服务器的请求类型值无关。
要发出POST请求(或任何其他类型的请求),您可以使用任何Rest Client Tool,请参阅:How do I manually fire HTTP POST requests with Firefox or Chrome?
我个人使用Postman作为Chrome的插件。 Advance Rest Client也是实现这一目标的一个非常好的选择。
如果你想要一个令人讨厌的工具(有些人认为命令行是令人讨厌的;)),你可以使用curl
来传输带有URL的数据。要提出POST
请求,您必须将其命名为:
curl -i -X POST -H 'Content-Type: application/json' -d '{"param1": "value1", "param2": "value2"}' http://localhost:5000/test
答案 1 :(得分:0)
HTML表单是您发送帖子请求的主要方式。而不是你的return "Index"
,你可以改为:
return '''
<form method="post" action="/test">
<input type="text" name="your field"/>
<button type="submit">Post to your /test!</button>
</form>
'''
实际上,您可以在模板文件夹中的whatever.html
文件中包含该表单代码,并使用render_template
进行呈现,以保持代码的智能化。