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.

相關文章
相關標籤/搜索