Python Flask: ошибка «Метод не разрешен для запрошенного URL» - PullRequest
0 голосов
/ 18 марта 2020

Я очень новичок в работе с Python Flask, и я хотел попробовать простой API-пример:

from flask import Flask, jsonify, request
from flask_restful import Resource, Api

app = Flask(__name__)
api = Api(app)

class HelloWorld(Resource):
    def get(self):
        some_json = request.get_json()
        return {'you sent': some_json}, 201

class Multi(Resource):
    def get(self,num):
        return {'result': num*10}

api.add_resource(HelloWorld, '/')
api.add_resource(Multi,'/multi/<int:num>')

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

и если я наберу в терминале

-H "Content-Type: application/json" -X POST -d '{"name":"xyz","address":"myaddress"}' http://127.0.0.1:5000/

Я получаю следующее сообщение:

{
    "message": "The method is not allowed for the requested URL."
}

Я надеюсь, что кто-то может помочь мне с этим ...

1 Ответ

1 голос
/ 18 марта 2020

Поскольку вы вызываете метод POST HTTP. Вы должны переименовать функцию 'get' в классе HelloWorld в 'post'. Класс «HelloWorld» также может иметь функции «get» и «post», если конечная точка «/» должна служить обоим.

from flask import Flask, jsonify, request
from flask_restful import Resource, Api

app = Flask(__name__)
api = Api(app)

class HelloWorld(Resource):
    def post(self):
        some_json = request.get_json()
        return {'you sent': some_json}, 201

class Multi(Resource):
    def get(self,num):
        return {'result': num*10}

api.add_resource(HelloWorld, '/')
api.add_resource(Multi,'/multi/<int:num>')

if __name__ == '__main__':
    app.run(debug=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...