五個(gè)優(yōu)秀的Java REST API 框架

Java 編程語(yǔ)言是一種高級(jí)的、面向?qū)ο蟮恼Z(yǔ)言,它使開(kāi)發(fā)人員能夠創(chuàng)建健壯的、可重用的代碼。Java 以其可移植性和平臺(tái)獨(dú)立性而著稱(chēng),這意味著 Java 代碼可以在任何支持 Java 運(yùn)行時(shí)環(huán)境 (JRE) 的系統(tǒng)上運(yùn)行。
James Gosling 最初于 1995 年在 Sun Microsystems 開(kāi)發(fā) Java。此后,該語(yǔ)言經(jīng)歷了數(shù)次變化,并成為世界上使用最廣泛的編程語(yǔ)言之一。據(jù)估計(jì),全球有超過(guò) 900 萬(wàn)開(kāi)發(fā)人員出于各種目的使用 Java。
Java 是一種多功能且功能強(qiáng)大的編程語(yǔ)言,如 Node js。它廣泛應(yīng)用于各種應(yīng)用領(lǐng)域,包括移動(dòng)應(yīng)用程序、企業(yè)軟件開(kāi)發(fā)、Web 應(yīng)用程序開(kāi)發(fā)等。近年來(lái),Java 的流行度顯著增長(zhǎng),使其成為用于開(kāi)發(fā)服務(wù)器端應(yīng)用程序的最流行的編程語(yǔ)言之一。
Java 在開(kāi)發(fā)人員中如此受歡迎的原因有很多。一些最顯著的原因包括:
- Java 易于學(xué)習(xí)和使用。
- Java 用途廣泛,可用于各種任務(wù)。
- Java 代碼是可移植的,可以在任何支持 JRE 的平臺(tái)上運(yùn)行。
- Java 非常適合開(kāi)發(fā)企業(yè)級(jí)應(yīng)用程序,并且符合 Spring 安全標(biāo)準(zhǔn)。
什么是 Java 中的 RESTful Web 服務(wù)?
在 Java 中定義 RESTful Web 服務(wù)有許多不同的方法。在其最基本的形式中,RESTful Web 服務(wù)只是一種使用具象狀態(tài)傳輸 (REST) 架構(gòu)風(fēng)格的 Web 服務(wù)。這意味著可以通過(guò) HTTP 請(qǐng)求協(xié)議訪問(wèn) Web 服務(wù),并支持 CRUD(創(chuàng)建、讀取、更新、刪除)操作。Java 中 RESTful Web 服務(wù)的更具體定義是這樣的 Web 服務(wù):
- 它建立在 JAX-RS API(用于 XML Web 服務(wù)的 Java API)之上。
- 使用@Path 注釋將 URL 映射到資源。
- 通過(guò)@GET、@POST、@PUT 和@DELETE 注釋支持 CRUD 操作。
- 它被部署到符合 Java EE 標(biāo)準(zhǔn)的應(yīng)用程序服務(wù)器,例如 WildFly 或 Tomcat。
如何選擇 API 框架
有許多不同的 Java API 框架可供選擇。那么,您如何知道哪一個(gè)適合您的項(xiàng)目?作為開(kāi)發(fā)人員,在選擇 API 框架時(shí)需要牢記以下幾點(diǎn):
- 確??蚣芘c Java 版本和您的 Java 應(yīng)用程序所需的其他軟件兼容,例如您正在使用的數(shù)據(jù)結(jié)構(gòu)。
- 考慮 Web 應(yīng)用程序的大小和復(fù)雜性。一些框架更適合小型項(xiàng)目,而另一些則更健壯,可以處理大型、復(fù)雜的 Java 應(yīng)用程序。
- 考慮您需要?jiǎng)?chuàng)建的 API 類(lèi)型。例如,一些框架專(zhuān)注于 REST API,而另一些則支持 SOAP 或其他 API 類(lèi)型。
- 查看 API 文檔、測(cè)試框架和框架可用的資源,看看它們是否滿(mǎn)足您的需求。例如,該框架是否有良好的文檔?是否有大量可用的在線資源(如教程、文章等)?
- 詢(xún)問(wèn)其他 Java 程序員他們推薦什么框架,并且可以就其他主題(例如 Java 虛擬機(jī))提出建議。
考慮到上述情況,讓我們看看一些最流行的用于創(chuàng)建 RESTful API 的 Java 框架。
框架
彈簧框架(彈簧 MVC)
Spring MVC是 REST Frameworks 的害群之馬,因?yàn)樗鼪](méi)有實(shí)現(xiàn) JAX-RS 規(guī)范。然而,從根本上說(shuō),Spring 一直是一個(gè)支持 REST API 的框架;如果您熟悉 Spring 的企業(yè) Java 應(yīng)用程序開(kāi)發(fā),那么您就會(huì)知道用另一個(gè)兼容的框架替換 REST API 是多么容易。在 Spring 中,您使用 REST 注釋來(lái)指定與 REST 服務(wù)交互的不同方法。例如,您將 @RestController 注釋放在一個(gè)類(lèi)上,這樣您就可以將它映射到任何資源和命令。
優(yōu)點(diǎn):
- 對(duì)緩存、驗(yàn)證、事務(wù)和格式化的聲明式支持。
- 依賴(lài)注入是測(cè)試框架的絕佳方式。Spring 不需要在無(wú)服務(wù)器環(huán)境中使用,而 EJB 和 Struts 應(yīng)用程序需要服務(wù)器。
- 可以在不知道它們來(lái)自哪里的情況下注入依賴(lài)組件,從而使系統(tǒng)易于靈活和可擴(kuò)展。
缺點(diǎn):
- 要開(kāi)發(fā) Spring 應(yīng)用程序,您需要大量的 XML。
- 開(kāi)發(fā)人員必須花費(fèi)大量時(shí)間來(lái)弄清楚哪些功能可以使用,哪些不可以使用。
- 開(kāi)發(fā)人員認(rèn)為 XSS 和跨站點(diǎn)腳本的重要性是理所當(dāng)然的。考慮到這一點(diǎn),我們需要弄清楚如何阻止黑客獨(dú)立滲透您的應(yīng)用程序。
要了解有關(guān)Spring MVC框架的更多信息,您可以查看文檔。
播放框架
Play Framework 是一種令人耳目一新的非傳統(tǒng)且獨(dú)特的框架類(lèi)型,默認(rèn)使用 RESTful 架構(gòu)。它遵循配置方法的約定,這意味著 Play 很容易根據(jù)您的需要進(jìn)行定制。Play 建立在 MVC 模式之上,并不局限于 Java 和 Scala。它類(lèi)似于 Django、Ruby on Rails 或 ASP.NET MVC 等其他框架,因?yàn)樗蛔裱?J2EE Web 標(biāo)準(zhǔn)。它是一個(gè)高性能的 Java 框架,因此在您使用靜態(tài)類(lèi)型和反應(yīng)式處理原則投入生產(chǎn)之前就可以發(fā)現(xiàn)錯(cuò)誤。使用 Play2,您可以輕松地與 Maven 項(xiàng)目集成并生成簡(jiǎn)單的 JAR 文件。
優(yōu)點(diǎn):
- 直觀的 Java 服務(wù)器界面
- API 測(cè)試和單元測(cè)試應(yīng)用程序很容易。
- 快速發(fā)展
缺點(diǎn):
- 不穩(wěn)定的插件
- 不提供向后兼容性。
- 建筑很難理解。
要了解有關(guān)Play框架的更多信息,您可以查看文檔。
刀
Blade是一個(gè)優(yōu)雅的輕量級(jí) MVC 框架,它允許 Java 程序員構(gòu)建快速的 Web 應(yīng)用程序。Blade 沿用了 RESTful 風(fēng)格的路由接口,讓用戶(hù)可以在一天之內(nèi)了解整個(gè)框架。它占地面積小,總代碼不到 500kb,可以使用 Java 8 訪問(wèn)。Blade 還包含內(nèi)置安全功能,例如 CSRF(跨站點(diǎn)請(qǐng)求偽造)和 XSS 跨站點(diǎn)腳本)。
優(yōu)點(diǎn):
- 訪問(wèn) RESTful 路由接口并部署您的應(yīng)用程序。
- 框架靈活,支持插件擴(kuò)展。
- 高性能和輕量級(jí)。
缺點(diǎn):
- 缺乏文件
- 需要優(yōu)化代碼。
- 社交應(yīng)用是通用的,缺乏個(gè)性。
要了解有關(guān)Blade框架的更多信息,您可以查看文檔。
圣杯
Grails是一個(gè)用 Groovy 編程語(yǔ)言編寫(xiě)的 Web 框架,在 Java 上運(yùn)行。Grails 基于模型-視圖-控制器設(shè)計(jì)模式并與 Java 語(yǔ)法兼容,盡管它具有一些 Java 中沒(méi)有的附加功能。如果您了解 Java 或其他面向?qū)ο蟮恼Z(yǔ)言,Grails 旨在易于學(xué)習(xí)。與 JSP 一樣,GSP(Groovy Server Pages)用于在 Grails 中呈現(xiàn)數(shù)據(jù),并且很容易為視圖創(chuàng)建標(biāo)簽。Grails 還提供對(duì) RESTful API 的內(nèi)置支持,使創(chuàng)建此類(lèi)服務(wù)變得容易,并且您可以使用 Hibernate 而不是 GORM 作為 ORM 實(shí)現(xiàn)。
優(yōu)點(diǎn):
- 動(dòng)態(tài)配置功能允許您在不重新啟動(dòng)服務(wù)器的情況下配置更改。當(dāng)您必須經(jīng)常進(jìn)行調(diào)整時(shí),這尤其有用。
- 因?yàn)?CSS 框架插件較少,配置 CSS 更容易。
- 廣泛的文檔
缺點(diǎn):
- 如果您涉及多線程應(yīng)用程序,GORM 可能不適合您。
- Java Developer 主要使用“def”聲明變量,相當(dāng)于“object”。不幸的是,這可能很難維護(hù)并可能導(dǎo)致錯(cuò)誤。
- 一些解釋性語(yǔ)言給 java 代碼增加了很多重量并直接影響運(yùn)行時(shí)。
要了解有關(guān)Grails框架的更多信息,您可以查看文檔。
下拉精靈
Dropwizard 是一種輕量級(jí)框架,可實(shí)現(xiàn)非??斓拈_(kāi)發(fā)時(shí)間。Dropwizard 與高級(jí)配置、日志記錄和應(yīng)用程序指標(biāo)的開(kāi)箱即用集成使程序員可以輕松完成耗時(shí)的任務(wù),因此他們可以專(zhuān)注于業(yè)務(wù)邏輯的代碼。此外,該框架是開(kāi)源的,并捆綁了一些庫(kù),使配置 Web RESTful 應(yīng)用程序變得輕而易舉。還有與安全和性能相關(guān)庫(kù)的集成,因此所有開(kāi)發(fā)人員需要擔(dān)心的是編寫(xiě)他們的邏輯例程。
優(yōu)點(diǎn):
- 指標(biāo)提供洞察力驅(qū)動(dòng)的監(jiān)控體驗(yàn)
- 支持配置、應(yīng)用程序指標(biāo)、日志記錄、操作工具和模板管理
- 輕的
缺點(diǎn):?
- 開(kāi)發(fā)人員傾向于使用外部庫(kù)進(jìn)行數(shù)據(jù)庫(kù)訪問(wèn)。不幸的是,這意味著您必須包含額外的代碼,這會(huì)使您的項(xiàng)目更加復(fù)雜。
- 陡峭的學(xué)習(xí)曲線
- 沒(méi)有內(nèi)置的 ORM 支持
要了解有關(guān)Dropwizard框架的更多信息,您可以查看文檔。
添加 API 分析和貨幣化
構(gòu)建 API 只是一個(gè)開(kāi)始。構(gòu)建 API 端點(diǎn)后,除了 API 測(cè)試工具之外,您還需要確保監(jiān)控和分析傳入流量。這樣做可以讓您識(shí)別潛在的問(wèn)題和安全漏洞,并確定您的 API 設(shè)計(jì)的使用方式。這些都是發(fā)展和支持 API 的關(guān)鍵方面。隨著 API 平臺(tái)的發(fā)展,您可能會(huì)專(zhuān)注于 API 產(chǎn)品。這正在從簡(jiǎn)單地構(gòu)建 API 轉(zhuǎn)變?yōu)閷?API 用作業(yè)務(wù)工具的領(lǐng)域。與更正式的產(chǎn)品非常相似,API 產(chǎn)品需要進(jìn)行管理并且很可能會(huì)被貨幣化。從您的 API 中增加收入是擴(kuò)大您的業(yè)務(wù)底線的好方法。
總結(jié)
本文涵蓋了使用 Java 編程語(yǔ)言開(kāi)發(fā) RESTful API 的五個(gè)最佳 Java 框架。我們查看了每個(gè)方面的高級(jí)概述,并列出了一些供考慮的要點(diǎn)。我們還討論了一些關(guān)于如何決定使用哪個(gè) Java REST API 框架的關(guān)鍵因素。但不要忘記;在您的 API 中實(shí)施強(qiáng)大的可觀察性和分析以獲得全面的可見(jiàn)性。然后,憑借知識(shí),您可以準(zhǔn)確判斷您選擇的框架是否最適合您的用例。
































