与夏娃

问题描述:

我试图建立的MongoDB支持的瓶应用程序,它提供来自相同的端点维修HTML请求:与夏娃

    默认
  • JSON响应
  • 一个HTML Web界面。如果Content-Type == application/json

这个想法是,用户使用浏览器使用我的应用程序以及以编程方式使用我的API的服务都可以使用http://myapp.com/users/12345前者用于HTML响应,后者用于响应JSON。

据我所知,这与“纯”REST保持一致,与从另一条路径(如http://myapp.com/api/users/12345)提供API的传统相反。

在Eve文档中没有关于视图的讨论,除了说默认情况下将结果用作JSON并且在请求时用XML。

有没有干净的方式来覆盖这一行为是:

  • 如果Content-Type == application/json
  • 否则,视适用模板夏娃返回生成的数据标准夏娃JSON响应供应HTML回应?

这似乎是创建RESTful和DRY应用程序的优雅手段。

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

记住前夜是一个瓶的应用程序(实际上是一个子类),所以一切都可以用瓶可以像使用夏娃做太多(如装饰渲染功能等)

更新:这里有一个小例子片断这增加自定义/hello终端到Eve供电API(source)。正如你所看到的,它几乎与标准烧瓶端点相同:

from eve import Eve 
app = Eve() 

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

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

感谢你回到我这么快Nicola! – amorphic

+0

不适用于我。我收到XML消息404:在服务器上找不到请求的URL。如果您手动输入网址,请检查拼写并重试。 我想,配置文件在适当的解决方案中起着重要的作用,并且在所引用的代码中,配置文件是大而复杂的。 我试图在构建应用程序中用Flask替换Eve,并立即为静态文件提供服务。 –