# pip install flask Flask-RESTfulfromflaskimportFlaskfromflask_restfulimportreqparse,abort,Api,Resourcefromflaskimportrequestapp=Flask(__name__)api=Api(app)TODOS={'todo1':{'task':'build an API'},'todo2':{'task':'?????'},'todo3':{'task':'profit!'},}defabort_if_todo_doesnt_exist(todo_id):iftodo_idnotinTODOS:abort(404,message="Todo{} doesn't exist".format(todo_id))parser=reqparse.RequestParser()parser.add_argument('task')# Todo# shows a single todo item and lets you delete a todo itemclassTodo(Resource):defget(self,todo_id):abort_if_todo_doesnt_exist(todo_id)returnTODOS[todo_id]defdelete(self,todo_id):abort_if_todo_doesnt_exist(todo_id)delTODOS[todo_id]return'',204defput(self,todo_id):args=parser.parse_args()task={'task':args['task']}TODOS[todo_id]=taskreturntask,201# TodoList# shows a list of all todos, and lets you POST to add new tasksclassTodoList(Resource):defget(self):returnTODOSdefpost(self):print(request.data)args=parser.parse_args()todo_id=int(max(TODOS.keys()).lstrip('todo'))+1todo_id='todo%i'%todo_idTODOS[todo_id]={'task':args['task']}returnTODOS[todo_id],201classTaskList(Resource):defpost(self):print(request.data)return{"id":1}classPing(Resource):defget(self):return'pong'### Actually setup the Api resource routing here##api.add_resource(Ping,'/')api.add_resource(TodoList,'/todos')api.add_resource(Todo,'/todos/<todo_id>')api.add_resource(TaskList,'/tasks')if__name__=='__main__':app.run(debug=True)# port=5000