我正在尝试构建一个 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 文档中没有讨论 View ,只是说结果默认情况下以 JSON 形式提供,如果需要则以 XML 形式提供。
是否有任何干净的方法来覆盖此行为,例如:
- 如果
Content-Type == application/json
,则提供标准 Eve JSON 响应 - 否则, View 会将模板应用于 Eve 返回的数据以生成 HTML 响应?
这似乎是创建 RESTful 和 DRY 应用程序的一种优雅方法。
最佳答案
您可以查看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()
关于flask - 使用 Eve 处理 html 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24134383/