Swagger:REST APIs文檔生成工具。Swagger 是一個(gè)規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化 RESTful 風(fēng)格的 Web 服務(wù)。
是一種API設(shè)計(jì)工具,能更好地實(shí)現(xiàn)前后端分離:Swagger - 前后端分離后的契約 。
一些環(huán)境部署與搭建:
讓接口測(cè)試成為合格的橋梁——本地搭建 Swagger-UI 環(huán)境搭建
主要使用swagger-ui 和 swagger-editor。swagger-ui展示swagger-editor生成的api文檔,api文檔格式可以是yaml或json。(感覺(jué)是swagger-ui可以在線測(cè)試使用,交互;swagger-editor只是生成文檔)
有關(guān)Swagger的一些個(gè)人理解:
Swagger是REST APIs文檔生成工具。
主要的工作量應(yīng)該在于Swagger文檔的編寫,而文檔的編寫需要遵循一定的規(guī)范,即Swagger API Spec。Swagger API Spec是Swagger用來(lái)描述REST API的語(yǔ)言,可以用YAML和JSON表示。
Swagger文檔的編寫可以采用以下方式:
(1)手動(dòng)編寫Swagger文檔。要對(duì)SwaggerSpec很熟悉。可以利用在線編輯器Swagger editor(http://editor.swagger.io/#/)驗(yàn)證YAML格式的內(nèi)容是否違反Swagger spec,Swagger editor會(huì)標(biāo)出錯(cuò)誤并且給予格式提醒。所以說(shuō)手動(dòng)編寫要對(duì)YAML或者JSON語(yǔ)法非常熟悉。但是這種方法相對(duì)好上手。
(2)Swagger文檔應(yīng)該可以從代碼注釋中自動(dòng)生成。目前在參考這個(gè)教程:http://michal.karzynski.pl/blog/2016/06/19/building-beautiful-restful-apis-using-flask-swagger-ui-flask-restplus/?utm_source=tuicool&utm_medium=referral。因?yàn)閷?duì)API和FLASK等相關(guān)內(nèi)容不太熟悉,還在學(xué)習(xí)中。
Swagger-UI是一套HTML/CSS/JS框架用于解析遵守Swagger spec的JSON或YML文件,展示swagger-editor生成的API文檔,還可以在其中調(diào)試API。這是官方demo的地址:http://petstore.swagger.io/。
Swagger-UI界面也可以進(jìn)行修改,包括進(jìn)行中文配置等。
下面是一個(gè)比較好的Swagger-UI說(shuō)明:Swagger-UI用戶手冊(cè) 。
FLASK
使用python的Flask實(shí)現(xiàn)一個(gè)RESTful API服務(wù)器端
近些年來(lái),REST成為web services和APIs的標(biāo)準(zhǔn)架構(gòu)。
python的Flask框架可以輕松實(shí)現(xiàn)一個(gè)RESTful服務(wù)。
Flask python web框架。
Flask很簡(jiǎn)單,micro-framework,所有有很多extensions配合使用,可以實(shí)現(xiàn)更多的功能。
Flask-RESTPlus:更方便地搭建REST APIs。核心功能是,可以結(jié)合Swagger UI自動(dòng)生成交互性的API文檔。
API的組織方式: API namespaces, RESTful resources 和 HTTP methods。
Namespaces:允許API定義劃分為多個(gè)文件,每一個(gè)是API的一部分,用于不同的 URL prefix(前綴)。
RESTful resources:組織API成不同的endpoints(與不同的數(shù)據(jù)類型有關(guān))
另外需要搞懂的一些點(diǎn):
1. RESTful API
先理解API接口?。?!
想問(wèn)一下什么是API接口,具體是什么意思? -- 知乎
API(Application Programming Interface,應(yīng)用程序編程接口)是一些預(yù)先定義的函數(shù),目的是提供應(yīng)用程序與開(kāi)發(fā)人員基于某軟件或硬件得以訪問(wèn)一組例程的能力,而又無(wú)需訪問(wèn)源碼,或理解內(nèi)部工作機(jī)制的細(xì)節(jié)。
簡(jiǎn)單的說(shuō),就是通過(guò)某一預(yù)先定義的渠道讀/寫數(shù)據(jù)的方式。
下面這篇算是解決了我的困惑==
利用「接口」做產(chǎn)品時(shí)我們?cè)撊绾嗡伎迹?/a>
一般接口包含以下幾個(gè)內(nèi)容:
接口地址:顧名思義就是接口的地址,以網(wǎng)址的形式展現(xiàn),你通過(guò)發(fā)送請(qǐng)求給這個(gè)網(wǎng)址來(lái)對(duì)接口進(jìn)行交互操作。
請(qǐng)求方法:
請(qǐng)求參數(shù):即傳輸參數(shù)的時(shí)候要帶的一些參數(shù),一般文檔中會(huì)用表格的形式清晰的說(shuō)明。當(dāng)我向接口發(fā)送攜帶請(qǐng)求參數(shù)的請(qǐng)求時(shí),都要攜帶什么字段,規(guī)則是什么。
返回內(nèi)容:返回內(nèi)容一般會(huì)以json或是XML的形式返回。
錯(cuò)誤代碼:
REST -- REpresentational State Transfer 直接翻譯:表現(xiàn)層狀態(tài)轉(zhuǎn)移。
怎樣用通俗的語(yǔ)言解釋REST,以及RESTful?--知乎
REST描述的是在網(wǎng)絡(luò)中client和server的一種交互形式;REST本身不實(shí)用,實(shí)用的是如何設(shè)計(jì) RESTful API(REST風(fēng)格的網(wǎng)絡(luò)接口);【其實(shí)是要設(shè)計(jì)一種合適的API,RESTful的】
總結(jié)一下什么是RESTful架構(gòu):
(1)每一個(gè)URI代表一種資源;
(2)客戶端和服務(wù)器之間,傳遞這種資源的某種表現(xiàn)層;
(3)客戶端通過(guò)四個(gè)HTTP動(dòng)詞,對(duì)服務(wù)器端資源進(jìn)行操作,實(shí)現(xiàn)"表現(xiàn)層狀態(tài)轉(zhuǎn)化"。