重写默认(XML和/或JSON)HTML响应标头字段'内容类型'的推荐方法是什么?到JSON-LD" application / ld + json"在GET上调用python Eve API?
这里的目的是:
使用过滤器检索存储在mongodb集合中的文档 基于自定义提供的Eve模式,
使用event-hook" on_fetched_resource"附上json-ld上下文 in" @ context" 字典字段和" @ graph"下的文档列表领域 在回复回复之前,
同时更改HTML标题'内容类型'回到JSON-LD之前 回应。
从Eve docs本地处理的内容类型'似乎相当硬编码。
我调查了mimerender的使用情况,从flask-mimerenderer提示,尝试通过装饰器覆盖添加到app.on_fetched_resource的自定义函数 - 它将更改处理到"响应"字典(包含字段" _items"等)使其成为JSON-LD - 以便尝试和获得响应运动" application / ld + json"代码
from eve import Eve
app = Eve(settings=mongo_settings)
def before_returning_items(resource_name, response):
# Process response dict to make contents json-ld compliant.
# In particular add "@context" key/value pair, and
# store documents retrieved in "_items" to "@graph" instead.
return response
app.on_fetched_resource += before_returning_items
if __name__ == '__main__':
app.run()
但是我没有找到确切的方法将Flask,Eve和mimerender的不同部分放在一起,以获取带有标题{'内容类型'的requests.get调用的ld + json标记。 '应用/ LD + JSON'} ...
到目前为止,我设法获得的最佳结果是编辑Eve render.py以添加条目:
{'mime': ('application/ld+json',), 'renderer': 'render_json', 'tag': 'JSON-LD'}
到_MIME_TYPES列表。
但理想情况下,我显然宁愿通过更改设置或使用mimerender等附加模块而不是调整库/模块代码来获得额外响应mimetype的预期结果...
在这种情况下推荐的方法可能是什么?