2鍩轰簬swagger2閰嶇疆鍚庣鎺ュ彛2.1浠€涔堟槸knife4j馃槾Knife4j鐨勫墠韬槸swagger-bootstrap-ui锛屽畠鐨勫墠韬玸wagger-bootstrap-ui鏄函swagger-ui鐨剈i鐨偆椤圭洰鏈潵鎵撶畻鍐檚wagger鐨勫墠绔痷i澧炲己鐗堬紝浣嗘槸闅忕潃椤圭洰鐨勫彂灞曪紝闈㈠瓒婃潵瓒婁釜鎬у寲鐨勯渶姹傦紝涓嶅緱涓嶅啓鍚庣Java浠g爜鏉ユ弧瓒虫柊鐨勯渶姹俽equirements瑕佹眰锛屽湪swagger-bootstrap-ui鐨?.8.5鍜?.9.6鐗堟湰涔嬮棿锛屽悗绔疛ava浠g爜鍜孶i娣峰悎鍦ㄤ竴涓狫ar鍖呬腑锛屼緵寮€鍙戣€呬娇鐢ㄣ€傝繖绉嶆柟寮忚櫧鐒跺浜庨泦鎴恠wagger闈炲父鏂逛究锛屽彧闇€瑕佸紩鍏ar鍖呭嵆鍙紝浣嗘槸鍦ㄥ井鏈嶅姟鏋舵瀯涓嬫樉寰楁湁浜涜噧鑲裤€傚洜姝わ紝椤圭洰姝e紡鏇村悕涓簁nife4j銆俴nife4j杩欎釜鍚嶅瓧鏄笇鏈涘ス鑳藉儚鍖曢涓€鏍峰皬宸ц交渚匡紝濞佸姏寮哄ぇ銆傛敼鍚嶄篃鏄笇鏈涜濂规垚涓篠wagger鐣岄潰鏂囨。鐨勯€氱敤瑙e喅鏂规锛岃€屼笉浠呬粎鏄笓娉ㄤ簬鍓嶇Ui鍓嶇銆俿wagger-bootstrap-ui鐨勬墍鏈夌壒鎬ч兘灏嗛泦涓湪knife4j-spring-ui鍖呬腑锛屾湭鏉ュ皢婊¤冻寮€鍙戣€呮洿澶氱殑涓€у寲闇€姹傘€備富瑕佸彉鍖栨槸椤圭洰鐨勭浉鍏崇被鍖呰矾寰勬浛鎹负com.github.xiaoymin.knife4j鍓嶇紑銆傚紑鍙戣€呭湪浣跨敤澧炲己娉ㄨВ鏃讹紝闇€瑕佹浛鎹㈠寘璺緞銆傚悗绔疛ava浠g爜鍜寀i鍖呭垎绂绘垚澶氫釜妯″潡鐨刯ar鍖咃紝鏇存柟渚跨幇鍦ㄧ殑寰湇鍔℃灦鏋勩€備娇鐢ㄥ寮烘枃妗f敞瑙o紙浣跨敤SpringCloud寰湇鍔¢」鐩紝鍙渶瑕佸湪缃戝叧灞傞泦鎴怳I鐨刯ar鍖咃紝杩欐牱鍓嶅悗绔垎绂伙級knife4j娌跨敤swagger-bootstrap-ui鐨勭増鏈彿锛岀涓€涓増鏈粠1.9.6寮€濮嬶紝浣跨敤鏂规硶璇峰弬鑰冩枃妗c€?.2knife4j鐨勪娇鐢ㄦ柟娉曫煈夌涓€姝ワ細鍦╩aven椤圭洰鐨刾om.xml涓紩鍏nife4j鐨勪緷璧栧寘锛屼唬鐮佸涓嬶細馃憞com.github.xiaoyminknife4j-spring-boot-starter2.0.7馃憠绗簩姝ワ細鍒涘缓Swagger閰嶇疆渚濊禆锛屼唬鐮佸涓嬶細馃憞packagecom.maple.demo.config;瀵煎叆org.springframework.context銆傛敞閲?Bean锛涘鍏rg.springframework.context.annotation.Configuration锛涘鍏pringfox.documentation.builders.ApiInfoBuilder锛涘鍏pringfox.documentation.builders.PathSelectors锛涘鍏pringservice.documentation.builders.RequestHandlerSelectors锛涘鍏pringfox.documentation锛涘鍏pringfox銆俤ocumentation.spi.DocumentationType;importspringfox.documentation.spring.web.plugins.Docket;importspringfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;/***@authorXiaoXiaofeng*@date2022/6/28*/@Configuration@EnableSwagger2WebMvcpublic绫籏nife4jConfiguration{@Bean(value="example")publicDocketexample(){returnnewDocket(DocumentationType.SWAGGER_2).apiInfo(newApiInfoBuilder().title("灏忓皬椋庣ず渚嬫紨绀虹晫闈?).description("灏忓皬椋庣ず渚嬫紨绀虹晫闈?).termsOfServiceUrl("http://127.0.0.1:6666").contact(newContact("灏忓皬宄?,"https://www.xiaoxiaofeng.site","zfzjava@163.com")).version("1.0").build())//缁勫悕.groupName("Demo瀹炰緥鎺ュ彛").select()//杩欓噷鎸囧畾Controller鎵弿鍖呰矾寰?apis(RequestHandlerSelectors.basePackage("com.maple.demo.controller")).paths(PathSelectors.any()).build();}}馃憠Step3:鍒涘缓涓€涓狢ontroller馃憞packagecom.maple.demo.controller;importio.swagger.annotations.Api;importio.swagger.annotations.ApiModelProperty锛涘鍏o.swagger.annotations.ApiOperation锛涘鍏ombok.Data锛涘鍏rg.springframework.web.bind.annotation.GetMapping锛涘鍏rg.springframework.web.bind.annotation.RequestMapping锛涘鍏rg.springframework.web.bind.annotation.RestController;/***@authorzhangfuzeng*@date2022/6/30*/@Api(tags="ExampleDemo-Knife4jInterfaceDocumentation")@RestController@RequestMapping("/example")publicclassTestKnife4jController{@ApiOperation(value="Knife4j鎺ュ彛鏂囨。婕旂ず")@GetMapping("/testKnife4j")publicTesttestKnife4j(Testparam){Testtest=newTest();test.setName("灏忓皬椋?);娴嬭瘯.setAge(18);test.setRemark("澶у濂斤紝鎴戞槸灏忓皬椋庯紝鍠滄鎴戝氨缁欐垜鐐逛釜璧炲惂銆傛杩庤闂垜鐨勪釜浜哄崥瀹細http://www.xiaoxiaofeng.site");杩斿洖娴嬭瘯锛泒@DatastaticclassTest{@ApiModelProperty(value="Name")绉佹湁瀛楃涓插悕绉帮紱@ApiModelProperty(value="骞撮緞")p绉佹湁鏁存暟骞撮緞锛汙ApiModelProperty(value="Description")privateString澶囨敞锛泒}2.3鐪嬮〉闈㈡晥鏋滒煈岄」鐩惎鍔ㄥ悗锛屽湪娴忚鍣ㄤ腑杈撳叆http://127.0.0.1:6666/doc.html璁块棶鐣岄潰璋冭瘯锛?.4澧炲己妯″紡馃槮Knife4j鍓ョ浜哢i涓殑涓€浜涗釜鎬у寲閰嶇疆鑷増鏈?.0.6浠ユ潵鐨勭晫闈€傚紑鍙戣€呭彲浠ュ湪鍚庡彴瀵瑰叾杩涜閰嶇疆锛屾彁渚涚殑knife4j-spring-boot-strater缁勪欢浼氳嚜鍔ㄥ姞杞絪pring.factories閰嶇疆濡備笅锛歴pring.configuration.Knife4jAutoConfiguration鍦⊿pringBoot閰嶇疆鏂囦欢涓紝瀹屾暣鐨勯厤缃涓嬶細knife4j:enable:truedocuments:-group:2.X鐗堟湰鍚?鎺ュ彛绛惧悕locations:classpath:sign/*setting:language:zh-CNenableSwaggerModels:trueenableDocumentManage:trueswaggerModelName:瀹炰綋绫诲垪琛╡nableVersion:falseenableReloadCacheParameter:falseenableAfterScript:trueenableFilterMultipartApiMethodType:POSTenableFilterMultipartApis:falseenableRequestCache:trueenableHost:falseenableHostText:192.168.0.193:8000enableHomeCustomruehomeCustomLocation:classpath:markdown/home.mdenableSearch:falseenableFooter:falseenableFooterCustom:truefooterCustomContent:Copyright2022-[绗戝皬椋嶿(https://www.xiaoxiaofeng.site)enableDynamicParameter:falseenableDebug:trueenableOpenApiable:f:truecors:falseproduction:falsebasic:enable:falseusername:testpassword:123123鍦ㄤ箣鍓嶇殑鐗堟湰涓紝寮€鍙戣€呴渶瑕佸湪閰嶇疆鏂囦欢涓墜鍔ㄤ娇鐢ˊEnableKnife4j鎵嶈兘浣跨敤澧炲己銆備粠2.0.6鐗堟湰寮€濮嬶紝鍙渶瑕佸湪閰嶇疆鏂囦欢涓瑿onfigureknife4j.enable=true鍗冲彲鍋滄浣跨敤娉ㄨВ娉ㄦ剰锛氳浣跨敤Knife4j鎻愪緵鐨勫寮哄姛鑳斤紝蹇呴』鍚敤knife4j.enable=true銆?corsfalse鏄惁鍚敤榛樿璺ㄥ煙閰嶇疆锛岃鍔熻兘閰嶅悎鑷畾涔塇ost浣跨敤knife4j.productionfalse鏄惁鍚敤鐢熶骇鐜淇濇姢绛栫暐锛岃瑙佹枃妗nife4j.basic涓鸿祫婧愭彁渚汢asicHttp楠岃瘉鐢盞nife4j鎻愪緵锛屼繚鎶ゆ枃浠秌nife4j.basic銆俥nablefalse鍏抽棴BasicHttp鍑芥暟knife4j.basic.usernamebasicusernameknife4j.basic.passwordbasicpasswordknife4j.documents鑷畾涔夋枃妗i泦鍚堬紝杩欎釜灞炴€ф槸涓€涓暟缁刱nife4j.documents.group鎵€灞炵粍knife4j.documents.name绫讳技浜巘ag鍦ㄧ晫闈腑锛岀敤浜庡垎缁刱nife4j.documents.locations鑷畾涔夋枃妗g殑markdown鏂囦欢璺緞锛屽彲浠ユ槸鏂囦欢澶癸紙classpath:markdowns/*锛夛紝涔熷彲浠ユ槸鍗曚釜鏂囦欢锛坈lasspath:md/sign.md锛夊惎鐢╧nife4j.setting.languagezh-CNUi榛樿鏄剧ず璇█锛岀洰鍓嶄富瑕佹湁涓ょ锛氫腑鏂囷紙zh-CN),English(en-US)knife4j.setting.enableSwaggerModelstrue鏄惁鍦ㄧ晫闈腑鏄剧ずSwaggerModel鍔熻兘knife4j.setting.swaggerModelNameSwaggerModels閲嶅懡鍚峉waggerModel鍚嶇О锛岄粯璁nife4j.setting.enableDocumentManagetrue鏄惁鍦ㄧ晫闈腑鏄剧ず鈥滄枃妗g鐞嗏€濆姛鑳絠nterfaceknife4j.setting.enableReloadCacheParameterfalse鏄惁鍦ㄦ瘡娆ebug璋冭瘯鏍忓悗鏄剧ず鍒锋柊鍙橀噺鎸夐挳锛岄粯璁や笉鏄剧ずknife4j.setting.enableVersionfalse鏄惁鍦╥nterface鎺ュ彛鐗堟湰鎺у埗涓紑鍚煇涓帴鍙o紝濡傛灉寮€鍚紝浼氭湁鍚庣鏇存敼鍚嶶i鐣岄潰涓婄殑灏忚摑鐐广€俴nife4j.setting.enableRequestCachetrue鏄惁寮€鍚姹傚弬鏁扮紦瀛樺鏋滀笉杩囨护锛岄粯璁ゆ樉绀?绉嶆帴鍙e湴鍧€鍙傛暟銆傚鏋滃惎鐢ㄦ閰嶇疆锛屽垯榛樿鏄剧ずPost绫诲瀷鐨勬帴鍙e湴鍧€銆俴nife4j.setting.enableFilterMultipartApiMethodTypePOST鍏蜂綋鎺ュ彛鐨勮繃婊ょ被鍨嬫槸鍚﹀惎鐢ㄨ嚜瀹氫箟棣栭〉鍐呭knife4j.setting.homeCustomLocation棣栭〉鍐呭Markdown鏂囦欢璺緞knife4j.setting.enableSearchfalse鏄惁绂佺敤Ui鐣岄潰鎼滅储妗唊nife4j.setting.enableFootertrue鏄惁鏄剧ずFooterknife4j.setting.enableFooterCustomfalse鍚敤鑷畾涔塅ooterknife4j.setting.footerCustomContentfalse鑷畾涔塅ooter鍐呭knife4j.setting.enableDynamicParameterfalse鍚敤鍔ㄦ€佸弬鏁拌皟璇曞姛鑳絢nife4j.setting.enableDebugtrue鍚敤璋冭瘯knife4j.setting.enableOpenApitrue鏄剧ずOpenAPI瑙勮寖knife4j.setting.enableGrouptrue鏄剧ず鏈嶅姟鍒嗙粍涓€у寲鏂囦欢锛坘nife4j.documents锛夊拰涓€у寲璁剧疆锛坘nife4j.setting锛夋湁涓€浜涚粏寰樊鍒紝寮€鍙戣€呴厤鍚堥厤缃枃浠跺悗锛岃繕闇€瑕佸湪鍒涘缓Docket瀵硅薄鏃惰皟鐢↘nife4j鎻愪緵鐨勬墿灞旹xtesions杩涜璧嬪€笺€傜ず渚嬩唬鐮佸涓嬶細packagecom.maple.demo.config;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importspringfox.documentation.builders.ApiInfoBuilder;importspringfox銆俤ocumentation.builders.PathSelectors锛涘鍏pringfox.documentation.builders.RequestHandlerSelectors锛涘鍏pringfox.documentation.service.Contact锛涘鍏pringfox.documentation.documentation.spi.documentation.spring.web.plugins.Docket锛涘鍏pringfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;/***@author鑲栨檽宄?@date2022/6/28*/@Configuration@EnableSwagger2WebMvcpublicclassKnife4jConfiguration{/*寮曞叆Knife4j鎻愪緵鐨勬墿灞曠被*/privatefinalOpenApiExtensionResolveropenApiExtensionResolver;@AutowiredpSwaggerConfiguration(OpenApiExtensionResolveropenApiExtensionResolver){this.openApiExtensionResolver=openApiExtensionResolver;}@Bean(value="example")publicDocketexample(){StringgroupName="Demo瀹炰緥鎺ュ彛";returnnewDocket(DocumentationType.SWAGGER_2).apiInfo(newApi().title("灏忓皬椋庡疄渚嬫紨绀虹晫闈?).description("灏忓皬椋庡疄渚嬫紨绀虹晫闈?).termsOfServiceUrl("http://127.0.0.1:6666").contact(newContact("灏忓皬鏋灚","http://www.xiaoxiaofeng.site","zfzjava@163.com")).version("1.0").build())//缁勫悕.groupName(groupName).select()//杩欓噷鎸囧畾Controller鎵弿鍖呰矾寰?apis(RequestHandlerSelectors.basePackage("com.maple.demo.controller")).paths(PathSelectors.any()).build()//缁欐彃浠剁郴缁?extensions(openApiExtensionResolver.buildExtensions(groupName));}}buildExtensions鏂规硶闇€瑕佷紶鍏ヤ竴涓粍鍚嶏紝涓昏鏄负浜嗗尯鍒嗗紑鍙戣€呭湪鏋勫缓鑷畾涔夋枃妗f椂锛屽湪涓嶅悓鐨凞ocket閫昏緫鍒嗙粍涓嬪尯鍒嗐€侽penApiExtensionResolver杈呭姪绫婚渶瑕佺敤knife4j閰嶇疆銆傚涓嬪浘锛氭洿澶氬姛鑳借鍙傝€冨畼鏂规枃妗o細https://doc.xiaominfo.com/knife4j/