使用Flask编写的接口编码

来源:互联网 发布:java通过构造方法传参 编辑:程序博客网 时间:2024/06/14 06:32
# -*- coding:utf-8 -*-import sysreload(sys)sys.setdefaultencoding("utf-8")from flask import Flaskfrom flask_restful import Resource,Api,abort,reqparseapp = Flask(__name__)api = Api(app)class HelloWorld(Resource):    def get(self):        return {'hello':'world'}TODOS = {    'todo1': {'task': 'build an API'},    'todo2': {'task': '?????'},    'todo3': {'task': 'profit!'},}# TODOS不在请求数据中时,报404def abort_if_todo_doesnt_exist(todo_id):    if todo_id not in TODOS:        abort(404,message=u'请求参数不存在'.format(todo_id))# 创建reqparse对象parser = reqparse.RequestParser()# 添加请求参数parser.add_argument('task')class Todo(Resource):    # 发送get请求,获取请求数据    def get(self,todo_id):        abort_if_todo_doesnt_exist(todo_id)        return TODOS[todo_id]    # 删除请求数据,返回错误状态码204    def delete(self,todo_id):        abort_if_todo_doesnt_exist(todo_id)        del TODOS        return '',204    # 解析所传递的参数,并返回状态码201    def put(self,todo_id):        # 创建请求参数解析对象        args = parser.parse_args()        # 准备请求参数        task = {'task':args['task']}        TODOS[todo_id] = task        return task,201# 展示所有的请求参数,并且获取新添加的请求参数class TodoList(Resource):    # 执行get请求,获取所有请求参数    def get(self):        return TODOS    # 发送post请求,获取请求参数    def post(self):        # 创建请求参数解析对象        args = parser.parse_args()        todo_id = int(max(TODOS.keys()).lstrip('todo'))+1        todo_id = 'todo%i'%todo_id        if not args['task']:            return {'code':8001,'msg':'参数名有误'}        TODOS[todo_id] = {'task': args['task']}        return TODOS[todo_id],201# 把数据添加到api资源中api.add_resource(HelloWorld,'/')api.add_resource(TodoList,'/todos')api.add_resource(Todo,'/todos/<todo_id>')if __name__ == '__main__':    app.run(debug=True)
原创粉丝点击