使用标题'内容类型'返回回复as' application / ld + json'

时间:2016-09-30 14:02:13

标签: flask http-headers mime-types json-ld eve

重写默认(XML和/或JSON)HTML响应标头字段'内容类型'的推荐方法是什么?到JSON-LD" application / ld + json"在GET上调用python Eve API?

这里的目的是:

  1. 使用过滤器检索存储在mongodb集合中的文档 基于自定义提供的Eve模式,

  2. 使用event-hook" on_fetched_resource"附上json-ld上下文 in" @ context" 字典字段和" @ graph"下的文档列表领域 在回复回复之前,

  3. 同时更改HTML标题'内容类型'回到JSON-LD之前 回应。

  4. 从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的预期结果...

    在这种情况下推荐的方法可能是什么?

0 个答案:

没有答案