用来测试接口的 flask server

Restful规范

"""RESTFul url 规范,参考:http://www.pythondoc.com/flask-restful/second.html==========  ===============================================  =============================HTTP 方法   URL                                              动作==========  ===============================================  ==============================GET         http://[hostname]/todo/api/v1.0/tasks            检索任务列表GET         http://[hostname]/todo/api/v1.0/tasks/[task_id]  检索某个任务POST        http://[hostname]/todo/api/v1.0/tasks            创建新任务PUT         http://[hostname]/todo/api/v1.0/tasks/[task_id]  更新任务DELETE      http://[hostname]/todo/api/v1.0/tasks/[task_id]  删除任务==========  ================================================ =============================命名规范:# 我们使用 SomeListHandler 命名而不是复数形式方便区分,比如 VideosHandler 和 VideoHandler 不容易区分"""classTaskListHandler(BaseHandler):defget(self):"""获取列表"""passdefpost(self):"""创建一条新的记录"""passclassTaskHandler(BaseHandler):defget(self,_id):"""获取一条记录的信息"""passdefput(self,_id):"""更新一条记录的信息"""passdefdelete(self,_id):"""删除一条记录"""pass

测试 server

# 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