摘要:本文將會(huì)告訴你如何借助中插件,在開發(fā)微服務(wù)項(xiàng)目時(shí)項(xiàng)目和其它項(xiàng)目方法類似快速的在代碼中使用注釋來創(chuàng)建文檔。本文將會(huì)持續(xù)修正和更新,最新內(nèi)容請(qǐng)參考我的上的程序猿成長計(jì)劃項(xiàng)目,歡迎,更多精彩內(nèi)容請(qǐng)??蚣芘渲梦覀兪褂卯?dāng)前最新的來演示。
作為一名phper,在使用Lumen框架開發(fā)微服務(wù)的時(shí)候,API文檔的書寫總是少不了的,比較流行的方式是使用swagger來寫API文檔,但是與Java語言原生支持 annotation 不同,php只能多帶帶維護(hù)一份swagger文檔,或者在注釋中添加annotations來實(shí)現(xiàn)類似的功能,但是注釋中書寫Swagger注解是非常痛苦的,沒有代碼提示,沒有格式化。
本文將會(huì)告訴你如何借助phpstorm中annotations插件,在開發(fā)Lumen微服務(wù)項(xiàng)目時(shí)(Laravel項(xiàng)目和其它php項(xiàng)目方法類似)快速的在代碼中使用注釋來創(chuàng)建swagger文檔。
本文將會(huì)持續(xù)修正和更新,最新內(nèi)容請(qǐng)參考我的 GITHUB 上的 程序猿成長計(jì)劃 項(xiàng)目,歡迎 Star,更多精彩內(nèi)容請(qǐng) follow me。
框架配置我們使用當(dāng)前最新的 Lumen 5.7 來演示。演示代碼放到了github,感興趣的可以參考一下
https://github.com/mylxsw/lumen-swagger-demo安裝依賴
在Lumen項(xiàng)目中,首先需要使用 composer 安裝SwaggerLume項(xiàng)目依賴
composer require darkaonline/swagger-lume項(xiàng)目配置
在bootstrap/app.php文件中,去掉下面配置的注釋(大約在26行),啟用Facades支持。
$app->withFacades();
啟用SwaggerLume 項(xiàng)目的配置文件,在 Register Container Bindings部 分前面,添加
$app->configure("swagger-lume");
然后,在 Register Service Providers 部分,注冊(cè) SwaggerLume 的ServiceProvider
$app->register(SwaggerLumeServiceProvider::class);
在項(xiàng)目的根目錄,執(zhí)行命令 php artisan swagger-lume:publish 發(fā)布swagger相關(guān)的配置
執(zhí)行該命令后,主要體現(xiàn)以下幾處變更
在 config/ 目錄中,添加了項(xiàng)目的配置文件 swagger-lume.php
在 resources/views/vendor 目錄中,生成了 swagger-lume/index.blade.php 視圖文件,用于預(yù)覽生成的API文檔
從配置文件中我們可以獲取以下關(guān)鍵信息
api.title 生成的API文檔顯示標(biāo)題
routes.api 用于訪問生成的API文檔UI的路由地址默認(rèn)為 /api/documentation
routes.docs 用于訪問生成的API文檔原文,json格式,默認(rèn)路由地址為 /docs
paths.docs 和 paths.docs_json 組合生成 api-docs.json 文件的地址,默認(rèn)為 storage/api-docs/api-docs.json,執(zhí)行php artisan swagger-lume:generate命令時(shí),將會(huì)生成該文件
語法自動(dòng)提示純手寫swagger注釋肯定是要不得的,太容易出錯(cuò),還需要不停的去翻看文檔參考語法,因此我們很有必要安裝一款能夠自動(dòng)提示注釋中的注解語法的插件,我們常用的IDE是 phpstorm,在 phpstorm 中,需要安裝 PHP annotation 插件
安裝插件之后,我們?cè)趯慡wagger文檔時(shí),就有代碼自動(dòng)提示功能了
書寫文檔Swagger文檔中包含了很多與具體API無關(guān)的信息,我們?cè)?app/Http/Controllers 中創(chuàng)建一個(gè) SwaggerController,該控制器中我們不實(shí)現(xiàn)業(yè)務(wù)邏輯,只用來放置通用的文檔信息
接下來,在業(yè)務(wù)邏輯控制器中,我們就可以寫API了
name = $request->input("name"); $resp->id = 123; $resp->age = $request->input("age"); $resp->gender = $request->input("gender"); $prop1 = new DemoAdditionalProperty(); $prop1->key = "foo"; $prop1->value = "bar"; $prop2 = new DemoAdditionalProperty(); $prop2->key = "foo2"; $prop2->value = "bar2"; $resp->properties = [$prop1, $prop2]; return $resp; } }這里,我們?cè)陧憫?yīng)結(jié)果中,引用了在SwaggerController中定義的 ApiResponse,還引用了一個(gè)沒有定義的ExampleResp對(duì)象,我們可以 appHttpResponses 目錄(自己創(chuàng)建該目錄)中實(shí)現(xiàn)該ExampleResp對(duì)象,我們將響應(yīng)對(duì)象都放在這個(gè)目錄中
返回對(duì)象引用其它對(duì)象
生成文檔執(zhí)行下面的命令,就可以生成文檔了,生成的文檔在storage/api-docs/api-docs.json。
php artisan swagger-lume:generate預(yù)覽文檔打開瀏覽器訪問 http://訪問地址/docs,可以看到如下內(nèi)容
訪問 http://訪問地址/api/documentation,我們看到
接口詳細(xì)信息展開
更多本文簡述了如何在Lumen項(xiàng)目中使用代碼注釋自動(dòng)生成Swagger文檔,并配合phpstorm的代碼提示功能,然而,學(xué)會(huì)了這些還遠(yuǎn)遠(yuǎn)不夠,你還需要去了解Swagger文檔的語法結(jié)構(gòu),在 swagger-php 項(xiàng)目的 Examples 目錄中包含很多使用范例,你可以參考一下。
團(tuán)隊(duì)項(xiàng)目中使用了swagger文檔,但是總得有個(gè)地方管理文檔吧,這里推薦一下 Wizard 項(xiàng)目,該項(xiàng)目是一款用于團(tuán)隊(duì)協(xié)作的文檔管理工具,支持Markdown文檔和Swagger文檔,感興趣的不妨嘗試一下。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/29884.html
摘要:納尼隔壁少林派表示自家金剛技?jí)喝盒墼谧魑欢际恰?。。納尼你覺得寫太繁瑣了你不喜歡我們還有或者等等一大堆工具呢。納尼沒有你還是覺得無法接受好吧那么筆者推薦類似這類更友好的工具你可以導(dǎo)入導(dǎo)出其他格式也可以使用其來撰寫。 說起微服務(wù), 想必現(xiàn)在的技術(shù)圈內(nèi)人士個(gè)個(gè)都能談笑風(fēng)云, 娓娓道來。的確, 技術(shù)變革日新月異, 各種工具框架雨后春筍般涌現(xiàn), 現(xiàn)在我們可以輕巧便捷地根據(jù)自己的業(yè)務(wù)需求, 構(gòu)建...
摘要:作為微服務(wù)的基礎(chǔ)設(shè)施之一,背靠強(qiáng)大的生態(tài)社區(qū),支撐技術(shù)體系。微服務(wù)實(shí)踐為系列講座,專題直播節(jié),時(shí)長高達(dá)小時(shí),包括目前最流行技術(shù),深入源碼分析,授人以漁的方式,幫助初學(xué)者深入淺出地掌握,為高階從業(yè)人員拋磚引玉。 簡介 目前業(yè)界最流行的微服務(wù)架構(gòu)正在或者已被各種規(guī)模的互聯(lián)網(wǎng)公司廣泛接受和認(rèn)可,業(yè)已成為互聯(lián)網(wǎng)開發(fā)人員必備技術(shù)。無論是互聯(lián)網(wǎng)、云計(jì)算還是大數(shù)據(jù),Java平臺(tái)已成為全棧的生態(tài)體系,...
摘要:微服務(wù)集成服務(wù)間通信微服務(wù)架構(gòu)下,應(yīng)用的服務(wù)直接相互獨(dú)立。微服務(wù)架構(gòu)傾向于降低中心消息總線類似于的依賴,將業(yè)務(wù)邏輯分布在每個(gè)具體的服務(wù)終端。 引言:微服務(wù)是當(dāng)前軟件架構(gòu)領(lǐng)域非常熱門的詞匯,能找到很多關(guān)于微服務(wù)的定義、準(zhǔn)則,以及如何從微服務(wù)中獲益的文章,在企業(yè)的實(shí)踐中去應(yīng)用微服務(wù)的資源卻很少。本篇文章中,會(huì)介紹微服務(wù)架構(gòu)(Microservices Architecture)的基礎(chǔ)概念,...
摘要:微服務(wù)集成服務(wù)間通信微服務(wù)架構(gòu)下,應(yīng)用的服務(wù)直接相互獨(dú)立。微服務(wù)架構(gòu)傾向于降低中心消息總線類似于的依賴,將業(yè)務(wù)邏輯分布在每個(gè)具體的服務(wù)終端。 引言:微服務(wù)是當(dāng)前軟件架構(gòu)領(lǐng)域非常熱門的詞匯,能找到很多關(guān)于微服務(wù)的定義、準(zhǔn)則,以及如何從微服務(wù)中獲益的文章,在企業(yè)的實(shí)踐中去應(yīng)用微服務(wù)的資源卻很少。本篇文章中,會(huì)介紹微服務(wù)架構(gòu)(Microservices Architecture)的基礎(chǔ)概念,...
閱讀 4047·2021-11-22 15:31
閱讀 2606·2021-11-18 13:20
閱讀 3188·2021-11-15 11:37
閱讀 7331·2021-09-22 15:59
閱讀 821·2021-09-13 10:27
閱讀 3847·2021-09-09 09:33
閱讀 1510·2019-08-30 15:53
閱讀 2633·2019-08-29 15:37