flask-restful: запрошенный URL-адрес не найден на сервере.

Я пытаюсь следовать документации flask-restful и пытаюсь запустить следующий код.

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

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

todos = {}

class TodoSimple(Resource):
    def get(self, todo_id):
        return {todo_id: todos[todo_id]}

    def put(self, todo_id):
        todos[todo_id] = request.form['data']
        return {todo_id: todos[todo_id]}

api.add_resource(TodoSimple, '/<string:todo_id>')

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

Но когда я попытался запустить его с URL-адресом «http://127.0.0.1:5000/todo1, он отвечает сообщением «Запрошенный URL-адрес не найден на сервере. Если вы ввели URL-адрес вручную, проверьте правильность написания и повторите попытку». Что я делаю не так с кодом. Пожалуйста помоги.


person Kumar Swapnil    schedule 07.01.2017    source источник
comment
Запуск вашего кода один к одному приводит к результату 127.0.0.1 - - [07/Jan/2017 12:12:17] "GET /todo1 HTTP/1.1" 500. Во всяком случае, я предполагаю, что вы определили в своей реальной коллекции кода todos некоторые данные. Можете ли вы показать свою трассировку при получении ошибки?   -  person Piotr Dawidiuk    schedule 07.01.2017


Ответы (1)


Проблема в том, как вы определяете маршрут URL для своего ресурса. Прямо сейчас вы пытаетесь получить к нему доступ через http://127.0.0.1:5000/todo1, но вы определили TodoSimple для обслуживания запросов, отправленных на http://127.0.0.1:5000/1. Я бы рекомендовал изменить код на sth, как показано ниже.

api.add_resource(TodoSimple, '/todo/<int:todo_id>')

а затем попробуйте получить к нему доступ через GET http://127.0.0.1:5000/todo/1

person mic4ael    schedule 07.01.2017
comment
Не полезно. Все та же проблема!! - person Kumar Swapnil; 07.01.2017
comment
хм, у меня работает, можете ли вы отредактировать вопрос с изменениями, которые я предложил? - person mic4ael; 07.01.2017
comment
Теперь все работает. Проблема исчезла, когда я перезагрузил компьютер. Ваша помощь приветствуется. Спасибо!! - person Kumar Swapnil; 07.01.2017
comment
вы можете выразить признательность, проголосовав за мой ответ;) - person mic4ael; 07.01.2017
comment
У меня нет пороговой репутации, необходимой для того, чтобы проголосовать за ответ. Так что обязательно проголосую в следующий раз :) !! - person Kumar Swapnil; 07.01.2017