我正在尝试构建一个支持MongoDB的Flask应用程序,该应用程序从相同的端点提供服务:
Content-Type == application/json
我的想法是,使用浏览器消费我的应用程序的用户和以编程方式使用我的API的服务都可以点击http://myapp.com/users/12345前者提供HTML响应,后者提供JSON响应。
据我所知,这与'纯'REST一致,与从http://myapp.com/api/users/12345等单独路径提供API的传统相反。
Eve文档中没有对视图的讨论,只是说默认情况下结果是JSON,如果请求则是XML。
是否有任何干净的方式来覆盖此行为,以便:
Content-Type == application/json
这似乎是一种创建RESTful和DRY应用程序的优雅方法。
答案 0 :(得分:3)
您可以查看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()