Web API 的工作通常与 HTTP 动词紧密相关,所以这使得实现这样一个基于 MethodView
类的 API 很有意义。也就是说,你会注意到 大多数时候, API 需要不同的 URL 规则来访问相同的方法视图。譬如,想象一种 情况,你在 web 上暴露一个用户对象:
创新互联建站专注于连山网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供连山营销型网站建设,连山网站制作、连山网页设计、连山网站官网定制、重庆小程序开发公司服务,打造连山网络公司原创品牌,更为您提供连山网站排名全网营销落地服务。
URL | HTTP 方法 | 描述 |
/users/ | GET | 获得全部用户的列表 |
/users/ | POST | 创建一个新用户 |
/users/ | GET | 显示某个用户 |
/users/ | PUT | 更新某个用户 |
/users/ | DELETE | 删除某个用户 |
那么,你会想用 MethodView
做什么?诀窍是利用你可以 对相同的视图提供多个规则的事实。
让我们假设这时视图看起来是这个样子:
class UserAPI(MethodView):
def get(self, user_id):
if user_id is None:
# return a list of users
pass
else:
# expose a single user
pass
def post(self):
# create a new user
pass
def delete(self, user_id):
# delete a single user
pass
def put(self, user_id):
# update a single user
pass
如此,我们怎样把它挂载到路由系统中?添加两条规则,并且为每条规则显式地 指出 HTTP 方法:
user_view = UserAPI.as_view('user_api')
app.add_url_rule('/users/', defaults={'user_id': None},
view_func=user_view, methods=['GET',])
app.add_url_rule('/users/', view_func=user_view, methods=['POST',])
app.add_url_rule('/users/', view_func=user_view,
methods=['GET', 'PUT', 'DELETE'])
如果你有许多看起来类似的 API ,你可以重构上述的注册代码:
def register_api(view, endpoint, url, pk='id', pk_type='int'):
view_func = view.as_view(endpoint)
app.add_url_rule(url, defaults={pk: None},
view_func=view_func, methods=['GET',])
app.add_url_rule(url, view_func=view_func, methods=['POST',])
app.add_url_rule('%s<%s:%s>' % (url, pk_type, pk), view_func=view_func,
methods=['GET', 'PUT', 'DELETE'])
register_api(UserAPI, 'user_api', '/users/', pk='user_id')
标题名称:创新互联Flask教程:Flask用于API的方法视图
文章网址:http://www.shufengxianlan.com/qtweb/news38/24238.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联