为django提供了一个灵活且功能强大的api层。
django-tastypie的Python项目详细描述
从2010年开始为django应用程序创建美味的api。
目前处于beta版本(v0.14.2)中,但在几个 地点。
要求
核心
- python 2.7+或python 3.4+
- django-1.11(LTS)、2.0(LTS)或2.1-支持最后两个LTS和最后一个增量版本。
- dateutil(http://labix.org/python-dateutil)>;=2.1
格式支持
- xml:lxml 3(http://lxml.de/)和defusedxml(https://pypi.python.org/pypi/defusedxml)
- yaml:pyyaml(http://pyyaml.org/)
- 二进制plist:biplist(https://bitbucket.org/wooster/biplist)
可选
- http摘要身份验证:python3摘要(https://bitbucket.org/akoha/python-digest/)
它是什么样子的?
基本示例如下:
# myapp/api.py# ============fromtastypie.resourcesimportModelResourcefrommyapp.modelsimportEntryclassEntryResource(ModelResource):classMeta:queryset=Entry.objects.all()# urls.py# =======fromdjango.conf.urlsimporturl,includefromtastypie.apiimportApifrommyapp.apiimportEntryResourcev1_api=Api(api_name='v1')v1_api.register(EntryResource())urlpatterns=[# The normal jazz here then...url(r'^api/',include(v1_api.urls)),]
这将为Entry模型提供一个完全工作的读写api 以restful方式支持所有crud操作。已经支持json/xml/yaml 在那里,很容易添加相关的数据/身份验证/缓存。
您可以在以下文档中找到更多信息 https://django-tastypie.readthedocs.io/。
为什么是口味?
django还有其他api框架。你需要 评估可用的选项并自己决定。也就是说,这里有一些 品味的常见原因。
- 您需要一个restful和使用http的api。
- 你想支持深厚的关系。
- 您不需要编写自己的序列化程序才能使输出正确。
- 您需要/需要与json同等对待的xml序列化(yaml是 也在那里)。
标准物质
- https://django-tastypie.readthedocs.io/en/latest/
- https://github.com/django-tastypie/django-tastypie/tree/master/tests/basic显示 Tastypie的基本用法
- http://en.wikipedia.org/wiki/REST
- http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
- http://www.ietf.org/rfc/rfc2616.txt
- http://jacobian.org/writing/rest-worst-practices/
获取帮助
获得帮助的主要方式有两种。
- 转到StackOverflow并用tastypie标记发布一个问题。
- 我们有一个IRC频道(#tastypie on irc.freenode.net)来寻求帮助, 对我们提出一个想法,或者通常是随机应变。
安全性
TaSpPe致力于提供灵活、安全的API,并被设计 考虑到许多安全特性和选项。由于复杂的性质 API和不断发现的新攻击向量和漏洞, 没有一个软件能对安全漏洞免疫。我们依靠我们的社区报告 帮助我们调查安全问题。
如果遇到安全漏洞,请不要打开github问题。 相反,在tastypie-security@googlegroups.com
然后我们一起调查并解决问题 宣布解决方案和漏洞。