2018-08-06

Flask_restful 开发指南

  • http://flask-restful.readthedocs.io/en/latest/quickstart.html#full-example

代码节选自《python实现RESTful服务(基于flask-restful)》
原作者:VellBibi
链接:https://www.jianshu.com/p/6ac1cab17929
來源:
著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

这里修改和简化了id处理逻辑, 以下是改动之后的demo.py样例代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from flask import Flask
from flask_restful import reqparse, abort, Api, Resource

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

TODOS = {
    1: {'task': 'build an API'},
    2: {'task': '哈哈哈'},
    3: {'task': 'profit!'},
}
current_max_todo_id = max(TODOS)  # assert isinstance(current_max_todo_id, int) 

parser = reqparse.RequestParser()
parser.add_argument('task')


class Todo(Resource):
    def get(self, todo_id):
        global TODOS
        if todo_id not in TODOS:
            abort(404, message="todo item {} doesn't exist".format(todo_id))
        return TODOS[todo_id]

    def delete(self, todo_id):
        global TODOS
        if todo_id not in TODOS:
            abort(404, message="todo item {} doesn't exist".format(todo_id))
        del TODOS[todo_id]
        return '', 204

    def put(self, todo_id):
        global TODOS
        global parser
        global current_max_todo_id
        args = parser.parse_args()
        TODOS[todo_id] = {'task': args.get('task', '')}
        current_max_todo_id = max(todo_id, current_max_todo_id)
        return task, 201


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

    def post(self):
        global TODOS
        global parser
        args = parser.parse_args()
        todo_id = self.get_next_todo_id()
        TODOS[todo_id] = {'task': args.get('task', '')}
        return TODOS[todo_id], 201
    
    def get_next_todo_id(self):
        global current_max_todo_id
        current_max_todo_id += 1
        return current_max_todo_id


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

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

你可能感兴趣的:(2018-08-06)