
5分鐘內解釋FastAPI
構建API驅動的現代應用程序!
API類似于用戶界面,唯一的區別是用戶是機器或軟件。
讓我們來了解API優先的設計方法,以及為什么遵循它是有意義的。我們還將重點介紹JavaScript及其流行程度,最后,我們將討論構建API和微服務的熱門JavaScript框架。
我們都聽說過API優先設計這個術語。實際上,API優先設計這個術語是在業界開始提到云原生應用這個術語之后流行起來的。在開發單體應用程序后的一段時間內,程序員開始將這些應用程序分解為微服務。
所有來自Web、Android或iOS設備與這些微服務的交互都必須通過API進行。比如身份認證API、文檔處理API、溝通工具API等等。因此,對于向這些界面提供數據而言,設計這些API起著至關重要的作用。這意味著微服務僅有一種通信媒介,那就是API。
因此,這就引出了“API優先設計原則”。在我們甚至開始編寫微服務/后端服務的實現之前,就需要先考慮API的設計。
注意:API 是業務驅動因素,因此在系統開發之初就對其進行開發。
在API優先設計方法中,API被視為一等公民。綜上所述,我們可以總結出以下三個關鍵點,可作為API優先方法的原則。
有很多公司使用 API 優先的方法,例如 Twillio、NETFLIX、Stripe、Algolia、SendGrid、Etsy、Adobe、Amazon 等等。
亞馬遜是最早指導員工使用這種方法的公司之一。這種方法的重要性可以通過一個事件來理解。2002年前后,亞馬遜(Amazon)首席執行官杰夫?貝佐斯(Jeff Bezos)發布了一項名為“貝佐斯指令”(Bezos mandate)的命令,警告任何不遵守這一程序的人將被解雇。
很多,這里進行一些簡單的例舉:
現在讓我們探索一種強大的網頁語言,它能幫助我們實現上述討論的方法。
tips:JavaScript 是當今和未來最重要的語言之一。
JavaScript 是一種高級的解釋型客戶端腳本語言。它用于使網頁更具交互性。它使我們能夠實現復雜而美麗的設計。JavaScript 是一種基于對象的腳本語言,它支持封裝、多態性,在某種程度上也支持繼承。
此外,與 C、C++ 和 Java 不同,它不需要編譯。
JavaScript 可以在瀏覽器、服務器和任何具有 javascript 引擎的設備上執行。
值得一提的是,JavaScript 與 Java 無關。那么問題來了,為什么叫JavaScript呢?實際上,當JavaScript最初發布時,它被稱為Mocha,后來它被重命名為實時腳本,然后在Netscape和SUN簽訂許可協議時重命名為JavaScript。
JavaScript 用于開發幾乎所有類型的 Web 產品和應用程序,例如智能手表、游戲、網站、移動設備和 Web 應用程序。一些最受歡迎的網站,如谷歌、Facebook、Netflix、亞馬遜,都使用 JavaScript 來構建他們的產品。
JavaScript最初被設計為一種在瀏覽器中運行的客戶端編程語言。但如今,它已經取得了長足發展,其功能遠超當初。更重要的是,JavaScript不再僅僅是一種客戶端語言,基于JavaScript的框架也被用于進行服務器端編程。
Node.js便是此類框架的一個實例。
這并非JavaScript能力的終結。除了作為客戶端與服務器端使用之外,它還可以用于設計單一代碼庫的應用程序,并運行于移動設備(Android、iOS)及Web上。
這樣的框架的一個例子便是ReactJs。
JavaScript無疑是最當今最重要的語言之一。
互聯網的興起使JavaScript走向了其從未設想過的領域。當前,我們擁有超過100種編程語言,并且每年都有新的語言被引入。在這些語言中,少數幾種強大的語言能迅速引發市場的變革,而JavaScript無疑是其中之一。
它一直位列熱門編程語言之列。根據StackOverflow的數據,JavaScript是最受歡迎且最常被使用的編程語言。
你知道嗎?在2020年Stack Overflow調查中,近70%的專業開發人員使用JavaScript編碼。
現在讓我們看看一些最流行的JavaScript框架來構建API和微服務。
Hapi是一個簡單、安全、開源的javascript框架。它用于以最小的開銷構建功能強大、可擴展的應用程序。它最初是為了處理沃爾瑪的黑色星期五規模而開發的,但現在Hapi仍然是企業級后端需求的可靠選擇。
Beats Music、Vrbo、Conde Nast、AuthO、Brave等公司都在使用Hapi,并對其感到滿意。
GitHub 上始終提供免費支持。但若想獲得更快的響應,請加入 Slack 頻道——這里有許多社區成員常駐并互相幫助。
Restify 專門針對構建語義上正確的、適用于大規模生產環境的 RESTful Web 服務進行了優化。當提到“語義正確”時,意味著嚴格遵循規范,這是 Restify 項目團隊首要目標之一。
它針對內省與性能進行了優化,并被大多數大型Node.js部署所采用。Restify最酷的功能之一在于,每當您添加新路由/處理器時,它會自動為您創建DTrace探針。實際上,Restify附帶了三個獨立的客戶端:
詳細開發指南可在此處找到。http://restify.com/docs/home/
Restify被行業內一些最受尊敬的公司如Netflix、Joyent、Pinterest所采用,用以支持其最大規模的部署。
ExpressJs是OpenJS基金會的一個項目。
由于其健壯性,許多流行的框架(如Feathers, Kraken, Sails, Kites, NestJs等)都是基于Express的。它是一個最小和靈活的基于node.js的web應用程序框架,為web和移動應用程序提供了一組強大的功能。
由于它在node.js之上提供了一個層,我們可以有效地訪問JavaScript函數。它適合使用服務器呈現編寫應用程序,因為它支持許多模板引擎(例如pug和handlebars)。對于API開發,它包含中間處理程序和許多HTTP服務/實用程序方法。
SailsJS 是總部位于德克薩斯州奧斯汀的 Sails 公司旗下構建的 MVC 框架。它由 Mike McNeil 開發,旨在協助他的團隊為初創公司和企業客戶構建可擴展的Node.js項目。自 2012 年發布以來,Sails 已成為全球使用最廣泛的 Web 應用程序框架之一。
它是一款輕量級產品,位于 Express 之上。它與任何前端兼容:Angular、React、iOS、Android。Sails 聲稱通過其強大的 ORM 與任何數據庫集成,稱為 Waterline。它使用 Express 處理 HTTP 請求,并使用 Wraps socket.io 來管理 WebSocket。
Actionhero 是一個多傳輸 API 服務器,具有集成集群功能和延遲任務。Actionhero 的目標是創建一個易于使用的工具包,用于為 HTTP、WebSocket 等制作可重用和可擴展的 API。它是從頭開始構建的,包括我們期望從現代 API 框架中獲得的所有功能。
Actionhero 擅長的工作負載類型包括生成和使用 API、從數據庫存儲和檢索數據、修改文件和類似作業。
Actionhero 有 5 個關鍵概念構成每個應用程序:操作、任務、初始值設定項、聊天和服務器。
LoopBack 是一個基于 Express 的高度可擴展的開源 Node.js 和 TypeScript 框架。它允許我們快速創建由數據庫和 SOAP 或 REST 服務等后端系統組成的 API 和微服務。
它是一種新的、改進的編程模型,具有依賴注入和新概念,如組件、混合、存儲庫等,這使得它最具可擴展性。LoopBack 允許我們使用 OpenAPI 到 GraphQL 為任何 REST API 創建 GraphQL 接口。
我們只需按照入門指南中的步驟即可立即開始使用 Loopback。他們的文檔根據四個象限進行分類,它們是:
GoDaddy、Symantec、Sapient、Fundrails、ShoppinPal 和 WhiteBoard 等公司正在廣泛使用 LoopBack。
Feathers 是一套工具及架構模式,旨在簡化創建可擴展的 REST API 和實時應用程序的過程。我們能夠在幾分鐘內構建原型,并在幾天內完成生產級別的應用開發。Feathers 能夠與任何后端技術對接,支持超過十種數據庫,并且能夠與諸如 React、VueJS、Angular、React Native、Android 或 iOS 等任何前端技術協同工作。
開始創建第一個Feathers應用程序,請遵循快速入門指南。如遇困難或有任何問題,您可以通過Slack、GitHub、StackOverflow、Telegram等不同渠道尋求幫助。
Express 團隊設計了 Koa。其目標是成為 web 應用程序和 API 的一個更小、更具表現力且更為健壯的基礎。Koa 在其核心中不捆綁任何中間件,而是提供了一套優雅的方法集,使得編寫服務器既快速又令人愉悅。
通過利用 async 函數,Koa 使我們得以摒棄回調,并極大地提升了錯誤處理能力。只需三步命令即可開始使用:
$ <a >nvm install</a> 7
$ npm i koa
$ node my-koa-app.js
AdonisJs 是一個基于 Node.js 的 MVC 框架,它由一個充滿活力的社區維護和支持。它提供了一個穩定的生態系統來編寫服務器端應用程序,使您能夠專注于業務需求,而不是糾結于選擇或不選擇哪個包。它就像任何其他 npm 模塊一樣,只不過在其之上添加了一些代碼以確保與 AdonisJs 應用程序順暢協作。
使用 AdonisJs 沒有硬性先決條件,但對 JavaScript、異步編程和 Node.js 有傳統的理解是非常有幫助的。請務必通讀安裝指南。
如果有任何疑問或錯誤,可以通過以下渠道與 AdonisJs 團隊溝通。
Total.js平臺是一個用JavaScript編寫的庫、包、UI組件、實踐和完整產品的集合。該平臺的基礎是一個名為Total.js的服務器端框架和一個名為jComponent的客戶端庫。
這兩個部分都是從頭開始編寫的。
在大多數情況下,我們不需要在Total.js平臺上使用任何依賴項,因為它包含了我們開發所需的一切。
整個Total.js平臺——產品、庫、模塊、包和UI組件在MIT許可下是開源的。
molecule是一個快速、現代、強大的Node.js微服務框架。它為構建和管理微服務提供了許多特性,比如:
使用 Fastify 開始您的旅程。
Fastify 高度專注于以最小的開銷和強大的插件架構提供最佳的開發人員體驗。happy 和 express 激發了它的靈感,它是業內最快的 Web 框架之一。
npm install fastify
它提供高性能,并取決于代碼的復雜性;它每秒最多可以處理 30,000 個請求。它可以通過其鉤子、插件和裝飾器完全擴展。
注意:即使它不是強制性的,Fastify 也建議使用 JSON Schema 來驗證您的路由并序列化您的輸出,Fastify 在內部以高性能函數編譯 Schema。
構建API可能頗具挑戰性,但有了合適的框架,事情就會輕松許多。請瀏覽上述列出的適用于您下一個API及微服務的框架,并挑選最適宜的一款。一旦您的API準備就緒,切勿忘記對其進行監控。
原文鏈接:12 Popular JavaScript Frameworks to Build API and Microservices