用Eve来处理html请求

时间:2014-06-10 06:33:34

标签: flask eve

我正在尝试构建一个支持MongoDB的Flask应用程序,该应用程序从相同的端点提供服务:

  • 默认情况下为HTML网络界面
  • Content-Type == application/json
  • 时的JSON响应

我的想法是,使用浏览器消费我的应用程序的用户和以编程方式使用我的API的服务都可以点击http://myapp.com/users/12345前者提供HTML响应,后者提供JSON响应。

据我所知,这与'纯'REST一致,与从http://myapp.com/api/users/12345等单独路径提供API的传统相反。

Eve文档中没有对视图的讨论,只是说默认情况下结果是JSON,如果请求则是XML。

是否有任何干净的方式来覆盖此行为,以便:

  • 如果Content-Type == application/json
  • ,则会提供标准的Eve JSON响应
  • 否则,视图会将模板应用于Eve返回的数据以生成HTML响应吗?

这似乎是一种创建RESTful和DRY应用程序的优雅方法。

1 个答案:

答案 0 :(得分:3)

您可以查看Eve-Docs扩展,该扩展在现有的Eve驱动的MongoDB REST服务之上实现HTML /docs端点。

记住Eve是一个Flask应用程序(实际上是一个子类),所以你可以用Flask做的所有东西也可以用Eve做(比如装饰渲染函数等)。

更新:这是一个小示例代码段,它将自定义/hello端点添加到Eve驱动的API(source)。您可以看到与标准的Flask端点非常相似:

from eve import Eve
app = Eve()

@app.route('/hello')
def hello_world():
    return 'Hello World!'

if __name__ == '__main__':
    app.run()