请求资源会导致404(烧瓶)

时间:2020-04-05 06:34:19

标签: python flask flask-restful

在测试资源的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 :(得分:0)

您尚未在TodoList类中定义任何方法,这就是为什么会出现404错误的原因,因为它找不到在该端点上定义的任何HTTP方法。 Flask-RESTful documentation在您的Resource类中指定定义HTTP方法,例如

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