Flask 返回带有标题的响应';内容类型';as';应用程序/ld+;json';

Flask 返回带有标题的响应';内容类型';as';应用程序/ld+;json';,flask,http-headers,mime-types,json-ld,eve,Flask,Http Headers,Mime Types,Json Ld,Eve,在对python Eve API进行GET调用时,将默认(XML和/或JSON)HTML响应头字段“内容类型”重写为JSON-LD的“应用程序/LD+JSON”的建议方法是什么 其目的是: 使用筛选器检索存储在mongodb集合中的文档 基于自定义提供的Eve模式 使用事件挂钩“on_fetched_resource”附加json ld上下文 在“@context”中 字典字段和“@graph”字段下的文档列表 在回复之前 在返回之前,还要将HTML标题“Content type”更改为JSON

在对python Eve API进行GET调用时,将默认(XML和/或JSON)HTML响应头字段“内容类型”重写为JSON-LD的“应用程序/LD+JSON”的建议方法是什么

其目的是:

  • 使用筛选器检索存储在mongodb集合中的文档 基于自定义提供的Eve模式

  • 使用事件挂钩“on_fetched_resource”附加json ld上下文 在“@context”中 字典字段和“@graph”字段下的文档列表 在回复之前

  • 在返回之前,还要将HTML标题“Content type”更改为JSON-LD 回应

  • 从Eve文档来看,本机处理的“内容类型”似乎相当硬编码

    我调查了使用,暗示,试图通过一个装饰器覆盖添加到app.on_fetched_资源中的自定义函数,该函数处理对“response”字典(包含字段“_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这三个不同的部分放在一起,以获得请求的ld+json标记

    到目前为止,我获得的最佳结果是编辑Eve render.py以添加条目:

        {'mime': ('application/ld+json',), 'renderer': 'render_json', 'tag': 'JSON-LD'}
    
    到_MIME_类型列表

    然而,理想情况下,我显然更愿意通过更改设置或使用附加模块(如mimerender)来获得附加响应mimetype的预期结果,而不是调整库/模块代码

    在这种情况下,推荐的方法是什么