使用内容协商输出rdf的烧瓶装饰器
flask_rdf的Python项目详细描述
使用内容协商输出rdf的烧瓶、瓶子或wsgi装饰器。
将@flask_rdf或@bottle_rdf或@wsgi_rdf装饰符应用于 一个视图函数并返回一个rdflib图形对象。烧瓶将自动 根据请求接受的内容,将其格式化为rdf输出格式 头儿说。如果view函数返回一个rdflib图之外的内容, 它将不经修改而通过。
自定义格式可以很容易注册。注册新的 具有rdflib插件支持的序列化程序,使用add_format 方法注册新的mimetype请求以使用新的格式化程序。
这个模块的功能仍然可以帮助其他web框架,甚至 如果还没有一个特定的装饰。format.decide函数将 返回有关要发送的withContent-Type头和内容的信息 要与rdflib一起使用的序列化格式。format.wants_rdf函数 可以在较高级别上用于确定客户机是否需要rdf。
API
add_format(mimetype, serialize_format),format.add_format(mimetype, serialize_format)
注册要识别的新格式以进行内容协商。它 接受参数mimetype,serialize_format,并用于添加 用于内容的自定义rdflib序列化程序插件 谈判。 第三个参数(需要上下文)将此序列化程序限制为 只能由context_aware的图使用。
format.decide(accept, context_aware=False)
给定一个accept头,返回一个(mimetype,format)元组 最好满足客户的要求。 如果accept头为空,则默认为rdf+xml 如果无法满足accept头,则返回(none,none) 第二个参数,上下文感知,可用于允许格式 需要一个context_aware图。
FormatSelector(),format.FormatSelector()
Class to decide serialization formats. It supports using the module-level formats added with ^{tt19}$, but it has its own list of formats added with ^{tt20}$.
wants_rdf(accept),format.wants_rdf(accept),FormatSelector.wants_rdf(accept)
Returns whether the client’s Accept header indicates that the client is prepared to receive RDF data. This can be used in the view to return a pretty HTML page for browsers, for example.
@flask_rdf,@flask.returns_rdf
使用烧瓶请求的accept的烧瓶视图函数的decorator 头球。它处理将rdflib图形对象转换为适当的 烧瓶响应,取决于内容协商。其他内容 未经修改即返回。
flask.Decorator
类来充当装饰器,以防需要重写某些行为。 构造函数接受formatSelector对象来执行自定义协商。 decorator对象本身可以用作decorator,而且 支持方法.output和.decorate。
@bottle_rdf,@bottle.returns_rdf
用于瓶子视图函数的decorator,以使用瓶子请求的accept 头球。它处理将rdflib图形对象转换为适当的 瓶子响应,取决于内容协商。其他内容 未经修改即返回。
bottle.Decorator
类来充当装饰器,以防需要重写某些行为。 构造函数接受formatSelector对象来执行自定义协商。 decorator对象本身可以用作decorator,而且 支持方法.output和.decorate。
@wsgi_rdf,@wsgi.returns_rdf
用于wsgi应用程序函数的decorator,以使用wsgi请求的accept 头球。它处理将rdflib图形对象转换为适当的 瓶子响应,取决于内容协商。其他内容 未经修改即返回。 对wsgi的start_response的调用将不加更改地传递数据。做 start_response和返回rdf对象都将导致 输出被返回,所以不要这样做。
wsgi.Decorator
类来充当装饰器,以防需要重写某些行为。 构造函数接受formatSelector对象来执行自定义协商。 decorator对象本身可以用作decorator,而且 支持方法.output和.decorate。
示例
#!/usr/bin/env pythonfromrdflibimportGraph,BNode,Literal,URIReffromrdflib.namespaceimportFOAFfromflaskimportFlaskfromflask_rdf.flaskimportreturns_rdfimportrandomapp=Flask(__name__)@app.route('/')@app.route('/<path:path>')@returns_rdfdefrandom_age(path=''):graph=Graph('IOMemory',BNode())graph.add((URIRef(path),FOAF.age,Literal(random.randint(20,50))))returngraphif__name__=='__main__':app.run(host='0.0.0.0',debug=True)