Django的灵活且功能强大的API层。
项目描述
自2010年以来为Django应用创建美味的API。
目前处于测试版,但在多个网站上积极用于生产。
需求
核心
Python 3.6+,最好3.8+(取决于您的Django版本所支持的版本)
Django 4.2、3.2(LTS版本)或Django 4.0、4.1和5.0(中间版本)
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-digest (https://bitbucket.org/akoha/python-digest/)
它看起来像什么?
一个基本示例看起来像
# myapp/api.py
# ============
from tastypie.resources import ModelResource
from myapp.models import Entry
class EntryResource(ModelResource):
class Meta:
queryset = Entry.objects.all()
# urls.py
# =======
from django.urls.conf import re_path, include
from tastypie.api import Api
from myapp.api import EntryResource
v1_api = Api(api_name='v1')
v1_api.register(EntryResource())
urlpatterns = [
# The normal jazz here then...
re_path(r'^api/', include(v1_api.urls)),
]
这为您提供了一个功能齐全的、支持读写操作的 Entry 模型 API,采用 RESTful 风格。已经支持 JSON/XML/YAML,并且很容易添加相关数据/认证/缓存。
您可以在以下文档中找到更多信息:https://django-tastypie.readthedocs.io/。
为什么选择 Tastypie?
市面上有其他针对 Django 的 API 框架。您需要评估可用的选项并自行决定。尽管如此,以下是一些选择 Tastypie 的常见原因。
您需要一个既符合 RESTful 又充分利用 HTTP 的 API。
您希望支持深层关系。
您不想编写自己的序列化器来生成正确的输出。
您需要一个魔法很少、非常灵活且很好地映射到问题域的 API 框架。
您需要/需要 XML 序列化,使其与 JSON(YAML 也在其中)同等对待。
参考材料
https://github.com/django-tastypie/django-tastypie/tree/master/tests/basic 展示了 tastypie 的基本用法
获取帮助
有两种主要方式可以获取帮助。
访问 StackOverflow 并使用 tastypie 标签发布一个问题。
我们有一个 IRC 频道(#tastypie on irc.freenode.net),可以获取帮助,向我们抛出一个想法,或简单地闲聊。
安全性
Tastypie 致力于提供灵活且安全的 API,并考虑了许多安全特性和选项进行设计。由于 API 的复杂性和不断发现新的攻击向量和漏洞,没有任何软件可以免疫于安全漏洞。我们依靠我们的社区来报告和帮助我们调查安全漏洞。
如果您发现一个安全漏洞,请不要在 Github 上创建问题。相反,请给我们发送一封电子邮件 到 tastypie-security@googlegroups.com
然后我们将共同努力调查和解决问题,以便我们可以宣布解决方案和漏洞。
项目详情
django-tastypie-0.14.7.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5769e997d66726babb0cbb7643ff278b994b8ca775c5a4c510dfa0f386567d50 |
|
MD5 | b85bc61beee4bb986c0000a504f3ab0e |
|
BLAKE2b-256 | d44c773a6c48a9ff4d243823a076d0df6e94f09d25897759fb6e8f9a3a71a3ca |