【问题标题】:An example of POST request in Flask API gives "Method Not Allowed"Flask API 中的 POST 请求示例给出“方法不允许”
【发布时间】:2016-01-07 14:42:03
【问题描述】:

我正在使用 FLASK API,我想使用 POST 请求。

我只想做一个 POST 请求的例子,它会返回一些东西,我不断收到错误消息“方法不允许”。

我想提供一个参数(例如 query_params = 'name1' )来搜索用户并返回 JSON,实际上我不知道在哪里提供此参数,我不明白为什么我会收到该消息. 这里我做了一个简单的路线:

@mod_api.route('/show-user', methods=['POST'])
def show_user():
    query_params = 'name1'
    query = {query_params: 'Myname' }
    json_resp = mongo.db.coordinates.find(query)
    return Response(response=json_util.dumps(json_resp), status=200, mimetype='application/json')

有什么帮助吗?

【问题讨论】:

  • 更有趣的是你如何提出请求
  • @njzk2 我不明白你的意思?
  • 您说您收到了method not allowed。我的第一个问题是您的请求不正确,因为烧瓶代码看起来不错。因此,请添加您的请求方式。
  • 我的猜测是您正在发出GET 请求而不是POST,将GET 方法添加到methods 参数并确保您仍然有同样的错误。

标签: python mongodb python-2.7 api flask


【解决方案1】:

可能的原因是您可能没有对仅接受 POST 请求的路由执行 POST 请求。这是一个简化的示例,删除了 mongodb 详细信息以说明这一点。

from flask import Flask

app = Flask(__name__)

@app.route('/show-user', methods=('POST',))
def show_user():
    return "name info"

if __name__ == "__main__":
    app.run(debug=True)

现在,如果我们发出 POST 请求,它可以工作,但如果我们发出 GET 请求,它会引发您看到的错误:

curl -H "Content-Type: application/json" -X POST -d '{}' http://127.0.0.1:5000/show-user
name info

curl -H "Content-Type: application/json" -X GET http://127.0.0.1:5000/show-user

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>405 Method Not Allowed</title>
<h1>Method Not Allowed</h1>
<p>The method is not allowed for the requested URL.</p>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-23
    • 2014-01-08
    • 1970-01-01
    • 2020-01-15
    • 2019-01-04
    • 2020-11-02
    • 2017-12-09
    • 1970-01-01
    相关资源
    最近更新 更多