Запрос ресурса приводит к 404 (Flask) - PullRequest
0 голосов
/ 05 апреля 2020

Когда я тестирую конечную точку URL для ресурса, я получаю ошибку 404 Not Found. Я не понимаю, почему его нельзя найти, так как ресурс добавлен в экземпляр api, а план добавлен в приложение flask.

tests.py

def test_todo_collection_resource(self):
    with app.test_client() as client:
        http_response = client.get("/todos/")
        json_data = http_response.get_json()

    self.assertEqual(http_response.status_code, 200) <<<---FAILS
    self.assertTrue(http_response.is_json)
    self.assertTrue(all(
        (instance['name'] in self.todo_resources.values()
            for instance in json_data)
    ))

todos.py


from flask import Blueprint, jsonify

from flask_restful import Api, Resource, fields, marshal

from models import Todo

todo_api = Blueprint("resources.todos", __name__)
api = Api(todo_api)

todos_fields = {
    'name': fields.String
}

class TodoList(Resource):
    pass


api.add_resource(
    TodoList,
    ''
    'todos'
)

app.py

from flask import Flask, g, jsonify, render_template
from config import HOST, PORT, DEBUG

from peewee import *


import models
from resources.todos import todo_api

app = Flask(__name__)
app.register_blueprint(todo_api, url_prefix="/todos/")

models.DATABASE.init('todo_api.db')
models.initialize(models.User, models.Todo)


@app.route('/')
def my_todos():
    return render_template('index.html')

if __name__ == '__main__':
    app.run(host=HOST, port=PORT, debug=DEBUG)

1 Ответ

0 голосов
/ 09 апреля 2020

Вы не определили никаких методов в своем классе TodoList, поэтому существует ошибка 404, поскольку он не может найти методы HTTP, определенные в этой конечной точке. Flask -RESTful документация определяет определение методов HTTP в вашем классе ресурсов, например

class TodoList(Resource):
    def get(self):
        return TODOS
...