路由
在上一遍文章中,我使用了 Flask 的视图函数来定义所有的路由。
Flask-RESTful 提供了一个 Resource 基础类,它能够定义一个给定 URL 的一个或者多个 HTTP 方法。例如,定义一个可以使用 HTTP 的 GET, PUT 以及 DELETE 方法的 User 资源,你的代码可以如下:
1. from flask import Flask
2. from flask.ext.restful import Api, Resource
4. app = Flask(__name__)
5. api = Api(app)
7. class UserAPI(Resource):
8. def get(self, id):
9. pass
11. def put(self, id):
12. pass
14. def delete(self, id):
15. pass
17. api.add_resource(UserAPI, '/users/<int:id>', endpoint = 'user')
add_resource 函数使用指定的 endpoint 注册路由到框架上。如果没有指定 endpoint,Flask-RESTful 会根据类名生成一个,但是有时候有些函数比如 url_for 需要 endpoint,因此我会明确给 endpoint 赋值。
我的待办事项 API 定义两个 URLs:/todo/api/v1.0/tasks(获取所有任务列表),以及 /todo/api/v1.0/tasks/<int:id>(获取单个任务)。我们现在需要两个资源:
1. class TaskListAPI(Resource):
2. def get(self):
3. pass
5. def post(self):
6. pass
8. class TaskAPI(Resource):
9. def get(self, id):
10. pass
12. def put(self, id):
13. pass
15. def delete(self, id):
16. pass
18. api.add_resource(TaskListAPI, '/todo/api/v1.0/tasks', endpoint = 'tasks')
19. api.add_resource(TaskAPI, '/todo/api/v1.0/tasks/<int:id>', endpoint = 'task')
