flask - 使用 Eve 处理 html 请求

标签 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 文档中没有讨论 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/

相关文章:

python - 使用来自 EVE 的自签名证书连接到 MongoDB

python - 终结点查询字符串参数中有多个 "where clauses"

python - 使用 Python Eve Rest 和 Mongo 过滤嵌入式文档

css - 为什么我的字体文件没有下载没有加载?

python - 为什么flask中的GET请求被调用了两次?

python - Heroku 新手 - "No such type as web"

python - 将 dash_html_components 传递给 Jinja 模板

python - python-eve 的 redis 设置

python - 如何通过 sqlalchemy 查询从 Flask 流式传输 CSV?

mongodb - 使用 Eve 获取 mongodb 集合