用Python構(gòu)建API的八大流行框架
譯文【51CTO.com快譯】憑借著平緩的學(xué)習(xí)曲線(xiàn)和簡(jiǎn)單直接的語(yǔ)法,Python在全球范圍內(nèi)的受歡迎程度,正在呈指數(shù)級(jí)增長(zhǎng)。該編碼語(yǔ)言往往可以被用于Web開(kāi)發(fā)、軟件開(kāi)發(fā)、數(shù)學(xué)計(jì)算、系統(tǒng)腳本、以及幾乎所有其他的領(lǐng)域。作為開(kāi)發(fā)人員的首選語(yǔ)言,人們除了得益于它的跨平臺(tái)兼容性和代碼的壓縮能力,還可以通過(guò)Python框架,創(chuàng)建出強(qiáng)大的應(yīng)用程序編程接口(API)。
什么是API?
API可謂互聯(lián)網(wǎng)上所有其他平臺(tái)背后的引擎。它們可以協(xié)助不同的應(yīng)用程序,在后臺(tái)相互通信,并保持彼此的聯(lián)系。您可以想象自己在一家餐廳里,手里拿著一份后廚可以烹制的所有菜肴的菜單。那么,接單系統(tǒng)在接受到您的訂單后,會(huì)將其傳遞給后端進(jìn)行處理。后臺(tái)完成后,系統(tǒng)會(huì)從后端獲取“烹飪好的食物”并發(fā)送給用戶(hù)。這便是API的基本作用:幫助用戶(hù)和系統(tǒng)進(jìn)行溝通。
下面,讓我們來(lái)看看八種可用于構(gòu)建API的優(yōu)秀Python框架:
1. Django REST
Django REST為開(kāi)發(fā)人員提供了豐富的功能與選擇。其中,Representational State Transfer(REST)是一種基于Web的架構(gòu)系統(tǒng),可用于數(shù)據(jù)通信。REST的功能包括:一組可瀏覽的Web API、多個(gè)簡(jiǎn)化了的API開(kāi)發(fā)過(guò)程、以及內(nèi)置的身份驗(yàn)證策略。我們可以使用單個(gè)PIP命令,來(lái)輕松地安裝Django REST。當(dāng)然,在安裝Django REST之前,請(qǐng)確保在您的系統(tǒng)上已安裝了Python 3.5或更高的版本。
Django REST不但可以提供便捷的ORM和非ORM源的序列化功能,而且該框架受到了 Red Hat、Mozilla和Heroku等流行組織的信任,以及各大活躍社區(qū)開(kāi)發(fā)人員的持續(xù)支持。
2. Flask Restful
顧名思義,F(xiàn)lask Restful是為了簡(jiǎn)化和加速API開(kāi)發(fā)過(guò)程,而量身定制的。作為輕量級(jí)的Python框架,它只需要幾個(gè)命令,就可以完成API的構(gòu)建??梢哉f(shuō),作為公認(rèn)的API工具,F(xiàn)lask能提供直接易用的API開(kāi)發(fā)體驗(yàn)。此外,F(xiàn)lask相對(duì)于格式化的字段模塊、以及marshal_with()裝飾器(decorator)等數(shù)據(jù)字段,也非常方便。
作為一個(gè)帶有各種常見(jiàn)API特性的全棧式Python框架工具,F(xiàn)lask通過(guò)使用representation()裝飾器,提供了諸如:XML、CSV和HTML多種數(shù)據(jù)的表示。
當(dāng)然,你若想流暢地運(yùn)行Flask,則需要在自己的機(jī)器上,事先安裝好PyPy 2.7、或 Python 3.5及其更高的版本。
3. Falcon
作為開(kāi)發(fā)人員的首選工具,F(xiàn)alcon可以被用來(lái)創(chuàng)建快速且高性能的API。它符合WSGI(Web服務(wù)器網(wǎng)關(guān)接口,Python Web Server Gateway Interface),能夠與多個(gè)服務(wù)器和平臺(tái)相兼容,而且可以通過(guò)其面向?qū)ο?、和基于?lèi)的界面,給用戶(hù)帶來(lái)無(wú)縫的轉(zhuǎn)換體驗(yàn)。
Falcon使用HTTP和REST架構(gòu),來(lái)協(xié)助創(chuàng)建用戶(hù)友好的設(shè)計(jì)。其REST框架通過(guò)提供開(kāi)發(fā)調(diào)試器,來(lái)全面地簡(jiǎn)化了開(kāi)發(fā)過(guò)程。而且,此類(lèi)調(diào)試器能夠與其內(nèi)置的服務(wù)器實(shí)現(xiàn)良好的配合與協(xié)同。
此外,與其他框架不同的是,F(xiàn)alcon的安裝過(guò)程不但非常簡(jiǎn)單、直接,并且?guī)缀醪恍枰脩?hù)的人工干預(yù)。
4. Connexion
Connexion能夠自動(dòng)處理HTTPS,并使用OpenAPI的各項(xiàng)規(guī)范。也就是說(shuō),您既可以基于Python代碼生成API規(guī)范,又可以遵從OpenAPI規(guī)范,采取不同的路線(xiàn)。當(dāng)然,您必須以YAML格式編寫(xiě)OpenAPI規(guī)范,然后映射到Python功能函數(shù)的各個(gè)端點(diǎn)上,以實(shí)現(xiàn)對(duì)請(qǐng)求及其端點(diǎn)的自動(dòng)驗(yàn)證。
Connexion能夠使用OAuth 2的授權(quán)類(lèi)型,來(lái)處理基于令牌的身份驗(yàn)證。它既自帶有Web Swagger Console UI,又允許用戶(hù)調(diào)用某個(gè)API的端點(diǎn)。此外,Connexion框架還包含有:API版本控制、有效負(fù)載的自動(dòng)序列化等其他方便的功能。
5. FastAPI
顧名思義,F(xiàn)astAPI是用于構(gòu)建API的最快Python框架之一。根據(jù)用戶(hù)的反饋,它可以將開(kāi)發(fā)的速度提高200-300%。目前,F(xiàn)astAPI被廣泛地用于構(gòu)建異步類(lèi)型的Web應(yīng)用,并得到了200多名社區(qū)貢獻(xiàn)者的支持。
該Web框架不但能夠使得開(kāi)發(fā)過(guò)程變得快速且簡(jiǎn)單,還可以提供諸如:交互式API文檔和重復(fù)性代碼消除等,大量成熟的功能。由于是基于Python,因此該框架能將錯(cuò)誤率減少約40%。
在FastAPI中,您也可以使用VSCode和PyCharm之類(lèi),常見(jiàn)編輯器的自動(dòng)完成功能。此外,F(xiàn)astAPI框架還具有不限插件支持、以及集成化的安全協(xié)議等不錯(cuò)的特性。
6.Hug
秉承著“一次編寫(xiě),隨處使用”理念的Hug,能夠方便用戶(hù)創(chuàng)建高效的API、本地包和CLI,并將其使用到代碼中的任何地方。Hug的高速性能,源于它采用Cython進(jìn)行編譯,以及僅在必要時(shí)使用資源。
目前,Hug能夠支持Python 3,您可以使用單個(gè)PIP命令去安裝它。同時(shí),Hug擁有業(yè)內(nèi)最好的API文檔。您可以使用內(nèi)置的hug.test模塊,去測(cè)試API的完整Python棧。
7. Eve
Eve的靈感來(lái)自Flask和Cerberus,并吸取了兩者的精華。該工具專(zhuān)為那些需要讓API的開(kāi)發(fā)過(guò)程變得簡(jiǎn)單、快速和高效的用戶(hù),而量身定制。因此,該框架不但非常適合高效地創(chuàng)建中型的Web服務(wù),而且提供了可定制的端點(diǎn)、分頁(yè)、排序、以及過(guò)濾等功能。
總的說(shuō)來(lái),您在獲得其開(kāi)箱即用的數(shù)據(jù)驗(yàn)證支持的同時(shí),還能調(diào)用Eve的身份驗(yàn)證、緩存、速率限制等高級(jí)功能。同時(shí),該工具也增加了對(duì)于全方位的CRUD操作、以及跨源資源共享(CORS)功能的廣泛支持。此外,您還可以輕松地將Eve與SQL數(shù)據(jù)庫(kù)、MongoDB、Elasticsearch、以及Neo4js相集成。
8. Cornice
作為基于REST的Pyramid框架,Cornice為構(gòu)建和記錄基于REST的Web服務(wù),提供了各種幫助。當(dāng)然,它也可以為各種服務(wù)添加跨域資源共享(CORS)的支持。由于Cornice能夠自動(dòng)使用HTTP規(guī)范,因此Pyramid可以根據(jù)應(yīng)用程序的需要,自行進(jìn)行擴(kuò)展。例如,它可以使用Pyramid的ACL進(jìn)行認(rèn)證授權(quán),并在驗(yàn)證過(guò)程中發(fā)現(xiàn)無(wú)效的數(shù)據(jù),進(jìn)而觸發(fā)400類(lèi)型的錯(cuò)誤。
此外,該框架還允許您使用命令行Python工具—Tox,進(jìn)行各種自動(dòng)化測(cè)試。
小結(jié)
可以說(shuō),API在我們使用的各種互聯(lián)網(wǎng)服務(wù)中持續(xù)發(fā)揮著重要的作用。上文我們討論了八種Python框架,都能夠?qū)PI的開(kāi)發(fā)過(guò)程變得簡(jiǎn)單且快捷。其中,Hug和Eve等框架更適合于小型項(xiàng)目,而Django、Flask和Falcon則適合于大型的應(yīng)用程序。
原文標(biāo)題:How to Build APIs in Python: 8 Popular Frameworks,作者:Wini Bhalla
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】