2

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

  • 默认情况下为 HTML Web 界面
  • 如果是 JSON 响应Content-Type == application/json

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

据我了解,这与“纯”REST 保持一致,这与从http://myapp.com/api/users/12345等单独路径提供 API 的传统不同。

Eve 文档中没有讨论视图,只是说结果默认以 JSON 格式提供,如果需要,则以 XML 格式提供。

是否有任何干净的方法来覆盖此行为,例如:

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

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

4

1 回答 1

3

您可以查看Eve-Docs/docs扩展,它在现有的、由 Eve 提供支持的 MongoDB REST 服务之上实现了一个 HTML端点。

记住 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()
于 2014-06-10T06:55:21.957 回答