【转载】REST之Tastypie

转自:http://blog.csdn.net/yima1006/article/details/9000588

Tastpie官网:http://tastypieapi.org/ 

Tastypie简介

    1.1   什么是tastypie?

        Tastypie是Django框架的一个webservice接口。它提供了一个方便、强大而且高定制化的REST风格接口。

        Tastypie非常容易显示您的模型,但也能完全让你控制你所期望得到的信息。只要你需要,能让你远离抽象的数据库。Tastypie也能让你非常容易的集成非ORM的数据源。

       Tastypie is BSD licensed & plays nicely with third-party apps without needing to modify their sources.

    1.2   特点:

  •     支持GET/POST/PUT/DELETE/PATCH方式调用
  •  合理的预设值
  • 设计起来方便扩展
  • 支持多种序列化的格式(JSON/XML/YMAL/bplist)
  • HATEOAS by default
  •  方便测试、文档完整

    1.3  怎样开始

        1)  PIP安装: pip  install django-tasypie

        2)  添加到APP: INSTALLED_APPS += ['tastypie’]

        3)  同步数据库:manage.py  syncdb

        4)  创建你自己的资源

        5) 配置到urlconf中

 

2 快速开始

    2.1  添加tastypie到INSTALLED_APPS

    2.2  创建一个含有空__init__.py的api目录在你的APP中

    2.3  创建一个<my_app>/api/resources.py文件,并将下面一段代码放置其中

  

[python] view plaincopyprint?
 
  1. from tastypie.resources import ModelResource  
  2.   
  3. from my_app.models import MyModel  
  4.   
  5.    
  6.   
  7. class MyModelResource(ModelResource):  
  8.   
  9.     class Meta:  
  10.   
  11.         queryset = MyModel.objects.all()  
  12.   
  13.         allowed_methods = ['get']  


 

   2.4   在的根URLconf,添加如下代码(在admin代码附近):

[python] view plaincopyprint?
 
  1. from tastypie.api import Api  
  2.   
  3. from my_app.api.resources import MyModelResource  
  4.   
  5.    
  6.   
  7. v1_api = Api(api_name='v1')  
  8.   
  9. v1_api.register(MyModelResource())  
  10.   
  11.    
  12.   
  13. urlpatterns = patterns('',  
  14.   
  15.   # ...more URLconf bits here...  
  16.   
  17.   # Then add:  
  18.   
  19.   (r'^api/', include(v1_api.urls)),  
  20.   
  21. )  


 

    2.5  在浏览器中访问:http://localhost:8000/api/v1/?format=json

3相关包依赖

    Tastypie需要如下一些模块。通过PIP就可以很轻松的安装。

    3.1  必须安装包

        1)   Python2.6+

        2)  Django1.3+

        3)  Mimeparse0.1.3+ (http://code.google.com/p/mimeparse/)【备注:老的版本也了可以工作,但是对JSON/JSONP的支持不够友好】

        4)   Dateutil(http://labix.org/python-dateutil ) >= 1.5, < 2.0

    3.2 可选包

        1)  Python_digest (https://bitbucket.org/akoha/python-digest/)

        2)  Lxml(http://lxml.de/ ) 用于xml解析

        3)  Pymaml (http://pyyaml.org/ ) 用于YAML解析

        4)  Biplist (http://explorapp.com/biplist/ ) 用于binary plist解析

    3.3  Tastypie特点

        1)  RESTful风格的API和HTTP支持

        2)  支持深层次的关系

        3)  在输入结果时不需要自己实现序列化操作

        4) 神奇的API框架,非常灵活的解决问题

        5) 对XML的序列化跟JSON一样方便

    3.4  运行与测试

        1)   最方便的方法获得Tastypie的测试如下:

[python] view plaincopyprint?
 
  1. $ git clone https://github.com/toastdriven/django-tastypie.git  
  2.   
  3. $ cd django-tastypie  
  4.   
  5. $ virtualenv env  
  6.   
  7. $ . env/bin/activate  
  8.   
  9. $ ./env/bin/pip install -U -r requirements.txt  


 

        2) 运行测试举例如下:

  

[python] view plaincopyprint?
 
  1. # From the same directory as above:  
  2.   
  3. $ ./env/bin/pip install -U -r tests/requirements.txt  
  4.   
  5. $ cd tests  
  6.   
  7. $ ./run_all_test.sh  

 

posted @ 2014-08-07 17:42  Runbbit  阅读(229)  评论(0编辑  收藏  举报