Django API层
项目描述
关于
Django-wapiti是一个通用的API层,可以将它添加到任何django项目中,以允许其他应用程序通过JSON非常容易地访问其模型和方法。
它由Ecometrica开发,并在BSD许可证下开源。
状态
Django-wapiti仍在开发中。当前的功能
为特定模型启用API
通过id访问对象
通过任何字段搜索对象,使用任何django查询集字段匹配操作符(exact,iexact,contains,…)
自动完成调用允许前端代码轻松自动完成用户输入的数据;它将通过不同的字段搜索对象
ModelApi类,类似于django管理中的ModelAdmin类,是您定义通过API对象应具有的行为的方式
支持实例方法:简单地装饰方法以使其可用
以相同的方式也支持类方法
API密钥
限制每个-{ip,session,user,apikey}每-{小时,天,月,年,永久}每-{HTTP方法,对象,类型,方法}的请求数
结果切片 - 在您的请求中添加slice_left和slice_right参数以切片结果 * 默认最大切片大小为100,可以通过settings.WAPITI_MAX_SLICE_SIZE进行覆盖
短期计划
由于我们需要以下功能,它可能会很快被整合
更好的方法来定义给定API键的权限
用户身份验证(OAuth或其他)和行级权限
调用日志(用于配额和节流强制执行)
API自检:/api/VER/应该返回当前注册的模型和调用的JSON(或XML)表示
已知问题
JSON解码器将2010-12-31和“2010-12-31”都解释为日期;它应该将后者解释为字符串
用法
安装django-wapiti。最简单的方法可能是使用
pip install git+http://git@github.com/ecometrica/django-wapiti.git#egg=django-wapiti
wapiti需要装饰器模块才能正常工作
pip install decorator
将wapiti添加到您的django项目的settings.py文件中的INSTALLED_APPS
从某个地方调用wapiti.helpers.register_models,通常是在您的urls.py中,以注册您的API模型和方法
要使应用fooapp中的模型类Foo可通过API访问,创建一个包含以下内容的文件fooapp/api.py
from wapiti.helpers import register from wapiti.modelapi import ModelApi from fooapp.models import Foo class FooApi(ModelApi): auto_complete_fields = ('name', 'description') auto_complete_order_by = 'name' model = Foo register('foo', FooApi)
我们使auto_complete方法通过自动搜索字段name和description(因此必须在Foo模型定义中存在)上的不区分大小写的搜索来工作
有关给定模型中ModelApi类所有选项的列表,请参阅文件wapiti/modelapi.py
此时,所有类型为Foo的对象都可通过API在/api/1.0/foo/处访问。要使实例方法可通过API调用,请将其应用于wapiti.helpers.api_method装饰器。要调用ID为3的Foo对象的foo_method,您将执行GET /api/1.0/foo/3/foo_method
类似地,对于类方法,只需用相同的api_method装饰它,但还要在上面的python classmethod装饰器中应用。要通过API调用Foo的foo_cls_method,您将执行GET /api/1.0/foo/foo_cls_method
要通过API进行调用,您需要API密钥。从主django管理界面,点击添加APIKey,添加一个名称,并添加一个具有资源正则表达式.*的权限,方法为GET。所有API调用都需要一个带有有效和活动API键的k=THEAPIKEY参数。
通过JSON进行的所有调用都必须有所有参数都是正确的JSON!这意味着要将字符串参数传递给方法,它需要用双引号括起来!有关详细信息,请参阅JSON规范。
为了使用按IP限制,我们需要REMOTE_ADDR变量。如果您使用nginx,这需要在正确的location部分中
fastcgi_param REMOTE_ADDR $remote_addr;
发布说明
v0.0.1
初始版本
v0.0.2
结果切片
与Django 1.4至1.6兼容
v0.0.3
post-South迁移
与Django 1.7至1.9兼容
v1.0.0
与Django 1.8和1.9兼容(不再与Django < 1.7兼容)
v1.0.1
文件处理程序现在仅接受字段以更好地支持非FileSystemStorage文件。旧方法仍然支持,但已弃用。
v1.0.2
前一个版本忘记了处理没有提供文件处理程序的情况。此版本修复了该问题。
v1.0.3
允许序列化1900年之前的日期。
项目详细信息
django-wapiti-1.0.3.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5de26aee3ea4adf96c03b8170c9b78ad5ccd84cc43407bef882ff0db7b37093f |
|
MD5 | c14a0e7fc29191e263eea40c40b1837e |
|
BLAKE2b-256 | bdd50f74589cdad35e505ba9ab9913355ee2942f95bf410892b0941c42b53948 |