zoukankan      html  css  js  c++  java
  • Jersey VS Django-Rest

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

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

    Jersey主要特性:

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

    23、Jersey单元测试框架

    Django Rest framework的主要特性:

    1、Django-Rest的Serializer除了串行和反串行之外还有数据验证的功能,相当于结合了之前的表单数据解析(Json.loads)、Json.dumps.、form.is_valid,而且文档里说它的功能作用主要类似于Djang中的Form.

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

    3、ViewSet和Router的特性将大幅度减少大多数常规API的代码,ViewSet类似于Resource,Router类似于Application Controller。

    4、Django-Rest有大量的第三方支持包。

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

    1、面向Restful定制设计的Request

    2、面向Restful定制设计的Reponse

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

    4、内建通用型API View

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

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

    7、Parsers:各种媒体格式的解析器

    8、Renderers:各种媒体格式生成器

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

    10、Serializer fields:Serializer的字段定义

    11、Serializer relations:model关系的序列化

    12、Validators:序列化数据验证器

    13、Authentication:用户登录验证

    14、Permissions:访问权限验证

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

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

    17、Pagination:各种各种分页机制支持

    18、Versioning:内建的各种版本化机制支持

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

    20、Metadata:API元数据表述

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

    22、Returning URLs:URL反向获得机制

    23、Exceptions:各种异常处理支持机制

    24、Status codes:资源HTTP状态支持

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

    总体来说:

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

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

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

  • 相关阅读:
    std thread
    windows更新包发布地址
    How to set up logging level for Spark application in IntelliJ IDEA?
    spark 错误 How to set heap size in spark within the Eclipse environment?
    hadoop 常用命令
    windows 安装hadoop 3.2.1
    windows JAVA_HOME 路径有空格,执行软连接
    day01MyBatisPlus条件构造器(04)
    day01MyBatisPlus的CRUD 接口(03)
    day01MyBatisPlus入门(02)
  • 原文地址:https://www.cnblogs.com/dhcn/p/7120828.html
Copyright © 2011-2022 走看看