Lindages
Lindages

Reputation: 399

An example of POST request in Flask API gives "Method Not Allowed"

I'm using FLASK API and I want to use POST requests.

I want just to do an example with POST requests that will return something, I keep getting an error message "Method Not Allowed".

I want to give a parameter(e.g query_params = 'name1' ) to search for a user and to return a JSON, actually I don't know where to give this parameter and I don't understand why I'm getting that message. Here I did a simple route:

@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')

Any help please?

Upvotes: 0

Views: 3309

Answers (1)

Angelos
Angelos

Reputation: 1640

The likely reason is that you are probably not doing a POST request against the route, which only accepts POST requests. Here is a simplified example with the mongodb details removed to illustrate this.

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)

Now if we do a POST request it works, but if we do A GET request it raises the error you saw:

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>

Upvotes: 3

Related Questions