Jersey VS Django-Rest

   在对Restful服务框架作对比前,主要先说说Restful设计的三大主要元素:以资源为核心的资源方法、资源状态、关系连接超媒体表述。 辅助的有内容协商、安全、版本化设计等。java

   Jersey做为Java界比较主流的RestfulWeb服务框架,Django作了Python界比较主流Web开发框架,选择在其基础上构建的Django Rest framework,对这二者作一简单的技术选型对比调研(花了两个下午的时间把二者的官方文档读了一遍)。python

Jersey主要特性:编程

一、基于Restful Resource设计的注入式开发模型
二、多部署方式
三、客户端API支持
四、响应式编程支持
五、表述状态支持与响应
六、数据实体的序列化与反序列化设计
七、对于JSON、XML、Multipart三种基本媒体类型的支持
八、过滤器(面向请求与响应)与拦截器(面向数据输入输出流)
九、服务器端和客户端的异步支持
十、对URI安全生成的支持
十一、声明式超媒体支持
十二、编程式动态生成资源
1三、Server-Sent Event支持
1四、安全支持特性
1五、WADL支持
1六、声明式Bean数据验证
1七、面向数据视图的实体数据过滤
1八、MVC模板
1九、应用监视与故障诊断
20、定制注入器与应用生命周期管理
2一、Jersey容器自身CDI支持
2二、对Spring DI的集成支持安全

2三、Jersey单元测试框架服务器

 

Django Rest framework的主要特性:框架

一、Django-Rest的Serializer除了串行和反串行以外还有数据验证的功能,至关于结合了以前的表单数据解析(Json.loads)、Json.dumps.、form.is_valid,并且文档里说它的功能做用主要相似于Djang中的Form.异步

二、Request和Response作了面向Rest的改造,API View的Response组件内涵内容协商特性来自动肯定返回数据的媒体格式等特征。测试

三、ViewSet和Router的特性将大幅度减小大多数常规API的代码,ViewSet相似于Resource,Router相似于Application Controller。编码

四、Django-Rest有大量的第三方支持包。.net

Django Rest framework的特性细节内容展开:

一、面向Restful定制设计的Request

二、面向Restful定制设计的Reponse

三、面向Restful API定制设计的API View

四、内建通用型API View

五、定义式的ViewSet,极大简化面向Model资源的编程

六、Router:集中管理ViewSet,快读生成Restful可用API

七、Parsers:各类媒体格式的解析器

八、Renderers:各类媒体格式生成器

九、Serializers:在python数据类型和媒体格式之间的序列化中介

十、Serializer fields:Serializer的字段定义

十一、Serializer relations:model关系的序列化

十二、Validators:序列化数据验证器

1三、Authentication:用户登陆验证

1四、Permissions:访问权限验证

1五、Throttling:基于多重访问数据维度的访问控制

1六、Filtering:基于定义配置的数据集动态过滤

1七、Pagination:各类各类分页机制支持

1八、Versioning:内建的各类版本化机制支持

1九、Content negotiation:内建内容协商机制支持

20、Metadata:API元数据表述

2一、Format suffixes:URL媒体格式后缀支持

2二、Returning URLs:URL反向得到机制

2三、Exceptions:各类异常处理支持机制

2四、Status codes:资源HTTP状态支持

2五、Testing:内建自动化测试机制支持

整体来讲:

一、Django-Rest更向上层业务建模靠拢,而Jersey更可能是从底层实现封装作起。从设计上讲:前者更偏向业务实现,后者更偏向技术封装。

二、虽然Jersey已经大量使用Java注解等方式简化资源式编码方式,但Django-Rest的开发方式更接近定义式编程方式。因此Django-Rest的编码确定要比Jersey的少的多。

三、从实现业务服务API的角度讲:Django-Rest的使用方便快捷简易程度应该优于Jersey.

相关文章
相关标签/搜索