日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Swagger自定义模板

發布時間:2023/12/31 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Swagger自定义模板 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

Swagger自定義模板

下載Swagger codegen

<dependency><groupId>io.swagger</groupId><artifactId>swagger-codegen-cli</artifactId><version>2.2.1</version> </dependency>

或者訪問其github項目位置。

生成自定義模板項目

我們將用meta命令來生成自定義模板項目。可以先運行一下下面的命令,看看具體的參數。

java -jar swagger-codegen-cli.jar help meta

簡單說明一下參數

-n <name>, --name <name> 自定義模板的名字,之后會用做swagger codegen支持的新語言名,在-l 命令中使用-o <output directory>, --output <output directory>輸出目錄,默認當前目錄-p <package>, --package <package>輸出包名,默認是 io.swagger.codegen

生成項目概述

生成的是一個maven項目,可以用mvn package生成jar文件。 項目里面只有一個java文件,為了說明方便,叫它XGenerator,是一個繼承io.swagger.codegen.DefaultCodegen的生成器,里面的注釋需要好好閱讀以下。

簡單來說,swagger生成代碼的流程,是把用設計器生成的ymal或者json代碼,輸出到mustach模板中。那么由于json代碼內容比較多,它把內容大概分為2個部分,一個是model,一個是operation。

XGenerator 繼承而來的 modelTemplateFiles,是model模板,可以訪問model的數據; apiTemplateFiles就是api和controller的模板集合了,可以訪問operation的數據。 此外,還有supportingFiles,可以訪問所有數據。

模板可以使用的變量

也就是如何查看model和operation的內容? 運行生成命令時,加上-DdebugModels或者-DdebugOperations就可以,比如查看生成c#代碼時的model和operation數據

java -DdebugModels -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate \-i http://petstore.swagger.io/v2/swagger.json \-l csharp \ java -DdebugOperations -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate \-i http://petstore.swagger.io/v2/swagger.json \-l csharp \

在調試項目時,輸出還是非常有用的。

修改代碼

由于我們需要改一下spring-mvc的模板,所以先要獲得原來的模板內容。這些內容都在swagger-codegen項目里面。

check swagger-codegen源碼

git clone https://github.com/swagger-api/swagger-codegen.git

然后用目前最新的2.2.1版本。

git checkout v2.2.1

打開swagger-codegen項目,我們感興趣的是spring-mvc相關的部分,找到io.swagger.codegen.languages.SpringCodegen。其他相關語言的生成,都在io.swagger.codegen.languages包下面。順便看看SpringCodegen的父類io.swagger.codegen.languages.AbstractJavaCodegen。

然后我們去找相關的模板文件,swagger-codegen\modules\swagger-codegen\src\main\resources\JavaSpring\ 目錄下面的mustach文件,都是相關的模板文件。

至于mustach模板的語法,請參見文檔。

復制相關模板

復制相關模板到自定義模板項目的resource目錄下面,進行你需要的更改。

修改XGenerator代碼

下面我們需要改XGenerator里面的內容。

在構造方法里面,找到

apiTemplateFiles.put

這個地方,把需要的模板加入進去。

把io.swagger.codegen.languages.SpringCodegen#postProcessOperations這個方法復制到XGenerator里面。用io.swagger.codegen.languages.AbstractJavaCodegen#getTypeDeclaration的內容覆蓋XGenerator里面的同名方法。 這2個處理完全是因為默認傳過來的數據格式和java的集合模板符號不一致,所做的處理。詳細可以看其注釋,也可以用之前說的-DdebugModels或者-DdebugOperations查看原始數據。

調試

在pom.xml里面加入下面依賴項。

<dependency><groupId>io.swagger</groupId><artifactId>swagger-codegen-cli</artifactId><version>${swagger-codegen-version}</version><scope>provided</scope> </dependency>

配置main class為io.swagger.codegen.SwaggerCodegen 參數和之前命令行一致,注意改-l 參數為自己的項目名(XGenerator#getName中返回的字符串)。

運行

修改和調試完畢之后,運行maven命令打包。

mvn package

在target目錄下找到生成的jar包,假設名為x-swagger-codegen.jar。為了方便,將其復制到swagger-codegen-cli.jar 同一目錄。然后執行命令來運行。

java -cp x-swagger-codegen.jar;swagger-codegen-cli.jar io.swagger.codegen.SwaggerCodegen

轉載于:https://my.oschina.net/u/2006445/blog/843915

總結

以上是生活随笔為你收集整理的Swagger自定义模板的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。