我正在尝试构建一个支持MongoDB的Flask应用程序,该应用程序从相同的 endpoints 提供服务:
-
默认情况下为HTML Web界面
-
如果
Content-Type == application/json
的JSON响应
我们的想法是,用浏览器消费我的应用程序的用户和以编程方式使用我的API的服务都可以命中http://myapp.com/users/12345前者提供HTML响应,后者提供JSON响应 .
据我所知,这与'pure' REST保持一致,与从单独的路径(例如http://myapp.com/api/users/12345)提供API的传统相反 .
在Eve文档中没有讨论视图,只是说默认情况下结果是JSON,如果请求则是XML .
是否有任何干净的方法来覆盖此行为,以便:
-
如果
Content-Type == application/json
,则提供标准的Eve JSON响应 -
否则,视图会将模板应用于Eve返回的数据以生成HTML响应吗?
这似乎是一种创建RESTful和DRY应用程序的优雅方法 .
1 回答
您可以查看Eve-Docs扩展,该扩展在现有的Eve驱动的MongoDB REST服务之上实现HTML
/docs
endpoints .记住Eve是一个Flask应用程序(实际上是一个子类),所以你可以用Flask做的所有事情你也可以用Eve做(比如装饰渲染函数等)
更新:这是一个小示例代码片段,它将自定义
/hello
endpoints 添加到Eve驱动的API(source) . 您可以看到与标准Flask endpoints 非常相似: