跳转到主要内容

Django API层

项目描述

关于

Django-wapiti是一个通用的API层,可以将它添加到任何django项目中,以允许其他应用程序通过JSON非常容易地访问其模型和方法。

它由Ecometrica开发,并在BSD许可证下开源。

状态

Django-wapiti仍在开发中。当前的功能

  • 为特定模型启用API

  • 通过id访问对象

  • 通过任何字段搜索对象,使用任何django查询集字段匹配操作符(exactiexactcontains,…)

  • 自动完成调用允许前端代码轻松自动完成用户输入的数据;它将通过不同的字段搜索对象

  • 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”都解释为日期;它应该将后者解释为字符串

用法

  1. 安装django-wapiti。最简单的方法可能是使用

    pip install git+http://git@github.com/ecometrica/django-wapiti.git#egg=django-wapiti
  2. wapiti需要装饰器模块才能正常工作

    pip install decorator
  3. wapiti添加到您的django项目的settings.py文件中的INSTALLED_APPS

  4. 从某个地方调用wapiti.helpers.register_models,通常是在您的urls.py中,以注册您的API模型和方法

  5. 要使应用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

  6. 此时,所有类型为Foo的对象都可通过API在/api/1.0/foo/处访问。要使实例方法可通过API调用,请将其应用于wapiti.helpers.api_method装饰器。要调用ID为3的Foo对象的foo_method,您将执行GET /api/1.0/foo/3/foo_method

  7. 类似地,对于类方法,只需用相同的api_method装饰它,但还要在上面的python classmethod装饰器中应用。要通过API调用Foo的foo_cls_method,您将执行GET /api/1.0/foo/foo_cls_method

  8. 要通过API进行调用,您需要API密钥。从主django管理界面,点击添加APIKey,添加一个名称,并添加一个具有资源正则表达式.*的权限,方法为GET。所有API调用都需要一个带有有效和活动API键的k=THEAPIKEY参数。

  9. 通过JSON进行的所有调用都必须有所有参数都是正确的JSON!这意味着要将字符串参数传递给方法,它需要用双引号括起来!有关详细信息,请参阅JSON规范。

  10. 为了使用按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 (19.8 kB 查看哈希值)

上传时间: 源代码

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面