基于原理图的python部分json-api实现

hyp的Python项目详细描述


hyp
==
python中的json-api响应。

about
----
hyp是实现[json-api]响应规范(http://jsonapi.org)的“必须”部分的库。这意味着您可以使用hyp将模型序列化为包含链接和链接复合文档的响应。它和你选择的微型网络框架结合起来真的很好,最好是[烧瓶](http://flask.pocoo.org)。

它内置了对[示意图](https://schematics.readthedocs.org/)和[棉花糖](http://marshmallow.readthedocs.org)的支持,因为您可以使用它们中的任何一个将模型(或原语)序列化为json,hyp从中创建响应。要添加对更多数据序列化库的支持,例如[colander](http://docs.pylonsproject.org/projects/colander/en/latest/)应该很简单。


tutorial
--
>首先让我们为您的模型定义一些序列化器:

``python
from marshmallow import serializer,字段



class commentserializer(序列化程序):
id=fields.integer()
content=fields.string()



class personserializer(序列化程序):
id=fields.integer()
name=fields.string()



class postsserializer(序列化程序):
id=fields.integer()
title=fields.string()
```

然后我们可以使用hyp.responders类创建自己的响应程序:

``python
from hyp.responder import responder



class commentresponder(响应程序):
type='comment'
serializer=commentserializer


class personresponder(响应程序):
type=“person”
serializer=personserializer



类PostResponder(响应程序):
type='post'
serializer=PostSerializer
links={
“comments”:{
“responder”:commentResponder(),
“ref”:“http://example.com/comments/{posts.comments},
},
“author”:{
“responder”:personresponder(),
“ref”:“http://example.com/people/{posts.author},
},
}
````

最后,我们可以使用响应程序创建响应。这些响应完全适用于任何烧瓶应用程序:

``python
post={
'id':1,
'title':'my post',
'comments':[
{'id':1,'content':'a comment'},
{'id':2,'content':'another comment'},
]

json=postreponder.respond(post,linked={'comments':post['comments']})

````

`json'变量现在将包含一些新压缩的json,可以发送回客户端:

``json
{
“posts”:[
{
“id”:1,
“title”:“My title”,
“links”:{
“comments”:[1,2]
}
}
],
“linked”:{
“comments”:[
{
“id”:1,
“content”:“my comment”
},
{
“id”:2,
“content”:“another comment”
}
]
},
“links”:{
“posts.comments”:{
“type”:“comments”,
“ref”:“http://example.com/comments/{posts.comments}”
}
}
}
````

例如,如果要使用flask的[jsonify](http://flask.pocoo.org/docs/api/flask.json.jsonify),则可以使用“build”方法,而不是这样:

``python
post={
'id:1,
'title':'my post',
'comment s':[
{'id:1,'content':'a comment'},
{'id:2,“content”:“另一个注释”},
]
}


response=postreponder.build(post,linked={'comments':post['comments']})
json=烧瓶J校准(响应)
```

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JavaFX FadeTransition消耗大量GPU   可以在ajax请求(JavaScript)中使用文件类(Java)吗?   java为什么是组织。ietf,org。天哪,组织。w3c和org。POJO的xml部分?   macos Processing 3安装Java工具包mac 10.12.6   socket的java连接问题。从客户端到socket。io服务器0.9.6   java应用程序默认凭据无法创建Google App Engine服务帐户凭据   通过在Maven中运行项目的java类生成源代码   使用ObjectInputStream从socket等待java数据   java在firebase数据库中获取当前用户详细信息   swing如何向Java JScrollPane动态添加组件   java如何在ANTLR4中发出令牌?   绘制圆时出现java InvalidClassException。为什么?   用于Java的SNMP库   java spring mvc控制器以不同的方式映射   java缩放文件夹中的图像   多线程Java线程池阻塞队列,始终执行最后几个   java无法访问ActivityCompatApi23类文件   java使用XMLHttpRequest每5秒在JS中发送一次空请求,并在Internet Explorer 9中返回304   java如何在hibernate jpa中通过两个辅助表连接两个实体?   eclipse如何在osgi插件中将java文档附加到jar?