Flask 使用Eve服务html请求

Flask 使用Eve服务html请求,flask,eve,Flask,Eve,我正在尝试构建一个MongoDB支持的Flask应用程序,它从相同的端点提供服务: 默认情况下为HTML web界面 如果Content Type==application/JSON 其思想是,使用浏览器使用我的应用程序的用户和以编程方式使用我的API的服务都可以命中前者,前者被提供一个HTML响应,后者被提供一个JSON响应 据我所知,这与“纯”REST保持一致,而不是从单独的路径(例如)提供API的传统 Eve文档中没有关于视图的讨论,只是说结果在默认情况下作为JSON提供,在请求时作为

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

  • 默认情况下为HTML web界面
  • 如果
    Content Type==application/JSON
其思想是,使用浏览器使用我的应用程序的用户和以编程方式使用我的API的服务都可以命中前者,前者被提供一个HTML响应,后者被提供一个JSON响应

据我所知,这与“纯”REST保持一致,而不是从单独的路径(例如)提供API的传统

Eve文档中没有关于视图的讨论,只是说结果在默认情况下作为JSON提供,在请求时作为XML提供

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

  • 如果
    Content Type==application/JSON
  • 否则,视图会对Eve返回的数据应用模板以生成HTML响应
这似乎是一种创建RESTful和DRY应用程序的优雅方法。

您可以看看在现有的、Eve支持的MongoDB REST服务之上实现HTML
/docs
端点的扩展

记住Eve是一个Flask应用程序(实际上是一个子类),所以你可以用Flask做的所有事情你也可以用Eve做(比如装饰渲染函数等等)

更新:下面是一个小示例片段,它将自定义的
/hello
端点添加到Eve支持的API()。如您所见,它与标准烧瓶端点几乎相同:

from eve import Eve
app = Eve()

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

if __name__ == '__main__':
    app.run()
您可以看看这个扩展,它在现有的、Eve支持的MongoDB REST服务之上实现了一个HTML
/docs
端点

记住Eve是一个Flask应用程序(实际上是一个子类),所以你可以用Flask做的所有事情你也可以用Eve做(比如装饰渲染函数等等)

更新:下面是一个小示例片段,它将自定义的
/hello
端点添加到Eve支持的API()。如您所见,它与标准烧瓶端点几乎相同:

from eve import Eve
app = Eve()

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

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

谢谢你这么快就给我回电话Nicola!不适合我。我收到XML消息404:在服务器上找不到请求的URL。如果您手动输入URL,请检查拼写并重试。我想,配置文件在正确解析中起着重要作用,而在引用的代码中,配置文件又大又复杂。我试着用Flask来代替Eve来构建应用程序,它在提供静态文件时立即起作用。谢谢你这么快回复我Nicola!不适合我。我收到XML消息404:在服务器上找不到请求的URL。如果您手动输入URL,请检查拼写并重试。我想,配置文件在正确解析中起着重要作用,而在引用的代码中,配置文件又大又复杂。在构建应用程序时,我尝试用Flask替换Eve,但它在提供静态文件时立即起到了作用。