如何用 flask 优雅的实现 restful api

2015-01-27 22:06:16 +08:00
 BeanYoung

api 这么来设计,访问 /users.json 返回 json 格式数据,访问 /users.csv 返回 csv 格式数据。

目前想到这么几个实现方法:

  1. nginx 匹配 url,将 url 后缀去掉,对于不同的 url 后缀,添加对应的 Accept header,flask 里根据请求headers 里 Accept 的值返回对应格式的数据。flask-restful 这个库可以根据 Accept header 来返回对应的数据格式。
  2. 给一个函数添加路由
@app.route('/users<data_type>')
def users(data_type='.json'):
    pass

第一种依赖外部代理服务器,第二种还没想好怎么和 flask-restful 一起用。

有没有更优雅的方式来实现类似的需求?

8359 次点击
所在节点    Python
6 条回复
gevin
2015-01-27 23:23:47 +08:00
>>访问 /users.json 返回 json 格式数据,访问 /users.csv 返回 csv 格式数据

这不是严格意义上的RESTful API
9hills
2015-01-27 23:28:56 +08:00
你的需求就不是restful api,标准做法是做到Accept中,而且不是你的Nginx来做,而是你的客户端来做
9hills
2015-01-27 23:29:29 +08:00
不过你的客户端说老子就是不遵守Restful,那么你也没必要非要在Server搞restful。。。
zhangxiao
2015-01-28 03:29:40 +08:00
restful 就像是共产主义,大部分只能做到社会主义初级阶段
elvis_w
2015-01-28 09:19:37 +08:00
这问题浓浓的知乎(逼乎)风格
flask不是有专门的扩展吗?
https://flask-restful.readthedocs.org/en/0.3.1/
够优雅吧
elvis_w
2015-01-28 09:22:47 +08:00
@elvis_w 没注意看帖子内容,你这严格说来根本不是RESTful啊,不同资源应该在HTTP头中请求才是RESTful啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/165991

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX