这种集成的文章真是烂透了。一方面,我写它是为了补充我的springboot系列。另一方面,确实有一些小伙伴没有使用过。最重要的是,如果您忘记了此集成的代码。可以随时咨询。前言目前的开发基本上是前后端分离的,前后端之间的交互都是通过API文档。有了API文档,大家独立开发,互不干扰。1、传统方式传统方式是在文档设计完成后,将文档分别发送给前端和后端人员。这有一个缺点。一旦接口信息发生变化,需要将文档重新发送给前后端人员。无法实时进行。所以浪费时间和精力。2、swagger方法我们的后台应用集成了swagger后,会自动暴露我们的接口,这个接口形式还是以restful风格发布的。一旦后台界面发生变化,立即显示出来,大大提高了效率。OK,基本上一句话就可以概括它的好处,就是可以把写在后端的api文档以swagger的形式实时发布出来,供前端人员查看。3.其他方面,swaggerpage说实话不太好看,还有一些其他的解决方案,不是bug多,就是收费。目前用得最多的是swagger。我目前在做这样一个开源项目,基于swagger做页面和其他方案类似,功能更强大。1、代码集成的前提是新建一个springboot项目。这一点不作论证。第1步:添加依赖项io.springfoxspringfox-swagger22.9.2io。springfoxspringfox-swagger-ui2.9.22.9.2是用的最多的版本,具体可以直接去maven去到官网搜索,找到使用最多的版本。第二步:配置新的config包,创建SwaggerConfig类@EnableSwagger2@ConfigurationpublicclassSwagger2Config{@BeanpublicDocketcreateRestApi(){returnnewDocket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()//为当前包路径,controllerclasspackage.apis(RequestHandlerSelectors.basePackage("com.fdd.controller")).paths(PathSelectors.any()).build();}//构建api文档的详细函数privateApiInfoapiInfo(){returnnewApiInfoBuilder()//pageTitle.title("XX平台API接口文档")//Creator.contact(newContact("冯冬冬","http://www.javachat.cc","3049352171@qq.com"))//versionnumber.version("1.0")//Description.description("SystemAPIdescription").build();}这里的配置也比较简单。这里有很多选项供我们配置。如果我们的项目有多个组,只需要创建多个Dockets即可。此时扫描包被替换为各组的包路径。第三步:在controller类中配置一个新的controller包,然后创建一个HelloController类@Api("Hello控件类")@RestControllerpublicclassHelloController{@GetMapping(value="/user")publicUsergetUser(){returnnewUser("愚公要tomoveMountain","123456");}@ApiOperation("可以指定参数的API")@PostMapping("/param")publicStringhello2(@ApiParam("Username")Stringname){return"hello"+name;}}这里我们可以看到类、方法、字段等都可以使用注解来解释。还有很多其他的字段,使用的时候会有相应的提示。大家可以自己试试:第4步:查看效果访问:http://127.0.0.1:8080/swagger-ui.html。这是最后的展示。OK,至此基本集成完毕。下面说说可能遇到的配置。三、其他常见问题1、SpringSecurity——配置免认证访问有时候我们的Springboot会集成SpringSecurity。这时候如果访问swagger的地址,会自动跳转到登录页面。这是因为SpringSecurity拦截了它。为此,我们只需要在我们的SpringSecurity中配置一下就可以了。现在配置它并释放它。在config包下新建SpringSecurityConfig类@Configuration@EnableWebSecuritypublicclassSpringSecurityConfigextendsWebSecurityConfigurerAdapter{@Overrideprotectedvoidconfigure(HttpSecurityhttp)throwsException{http.authorizeRequests().antMatchers("/swagger-ui.html").permitAll().ant").permitAll().antMatchers("/swagger-resources/**").permitAll().antMatchers("/v2/*").permitAll().antMatchers("/csrf").permitAll().antMatchers("/").permitAll().anyRequest().authenticated().and().formLogin();}}现在可以正常访问了2.swagger设置jwt比较简单,只需要一步,修改即可我们的swaggerConfig类。@EnableSwagger2@ConfigurationpublicclassSwagger2Config{@BeanpublicDocketapi(){returnnewDocket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).securityContexts(Arrays.asList(securityContext())).securitySchemes(Arrays.asList(apiKey())).select(.apis(RequestHandlerSelectors.any()).paths(PathSelectors.any()).build();}//构建api文档的详细信息函数privateApiInfoapiInfo(){returnnewApiInfoBuilder()//页面title.title("XX平台API接口文档")//Creator.contact(newContact("冯冬冬","http://www.javachat.cc","3049352171@qq.com"))//版本号.version("1.0")//Description.description("系统API描述").build();}privateApiKeyapiKey(){returnnewApiKey("JWT","Authorization","header");}privateSecurityContextsecurityContext(){returnSecurityContext.builder().securityReferences(defaultAuth()).build();}privateListdefaultAuth(){AuthorizationScopeauthorizationScope=newAuthorizationScope("global","accessEverything");AuthorizationScope[]authorizationScopes=newAuthorizationScope[1];authorizationScopes[0]=authorizationScope;returnArrays.asList(newSecurityReference("JWT",authorizationScopes));}}增加一些token验证码,比较简单,关于JWT3.隐藏Endpoint自己写的controller有时候,或者controller中的接口方法不想被前端人员看到,我们可以隐藏。首先:隐藏整个controller@ApiIgnore@RestControllerpublicclassMyController{//method}二:隐藏一个接口方法1@ApiIgnore@ApiOperation(value="描述信息")@GetMapping("/getAuthor")publicStringgetAuthor(){return"愚公要移山";}三:隐藏一个接口方法2@ApiOperation(value="描述信息",hidden=true)@GetMapping("/get")publicLocalDategetDate(){returnLocalDate.now();}好了,很多配置基本就到这里了,我会继续补充的稍后。本文转载自WeChat公众号《愚公移山》,可以通过以下二维码关注。转载本文请联系愚公移山公众号。