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