我是Flask和Flask-RESTful的新手。我想为待办事项编写一个API。在/todos
,我想定义一个GET和一个POST请求,其中后者需要一个包含实际待办事项作为参数的字符串。
我对单个请求和必需的参数没有问题:
from flask import Flask
from flask_restful import Resource, Api, reqparse
app = Flask(__name__)
api = Api(app)
todos = {1: "test"}
class Todos(Resource):
def get(self):
if len( todos ) > 0:
return json.dumps( todos )
else:
return "No todo found", 204
class GetTodo(Resource):
parser = reqparse.RequestParser()
parser.add_argument("todoId", required=True, type=int, help="ID cannot be converted")
def get(self ):
args = GetTodo.parser.parse_args()
todoId = args["todoId"]
if todoId in todos:
return todos[todoId], 200
else:
return "Todo nicht gefunden", 404
api.add_resource(Todos, '/todos')
api.add_resource(GetTodo, "/todos/showtodo")
if __name__ == '__main__':
app.run()
我还有一个PostTodo课:
class PostTodo(Resource):
parser = reqparse.RequestParser()
parser.add_argument("todo", required=True, type=str, help="Please specify the todo")
def post(self):
args = PostTodo.parser.parse_args()
todo = args["todo"]
id = len(todos) + 1
todos.update( { id : todo } )
要添加POST方法,我看到了两个可能性:
哪个更好?我得到了第一个可行的方法,但是认为将两个资源添加到同一端点不是很干净。对于第二种方式,我不知道如何根据需要设置POST所需的参数,而不是GET。