程序员社区

sprongboot整合swagger

springboot整合swagger步骤如下

#引入基础jar包
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.8.0</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.8.0</version>
    </dependency>

添加swagger配置文件,并在项目中启用swagger

//java项目 www.fhadmin.org
@Configuration
@EnableSwagger2
@Profile("dev")
public class Swagger2Config {
   @Bean
   public Docket createRestApi() {
       return new Docket(DocumentationType.SWAGGER_2)
               .apiInfo(apiInfo())
               .select()
               .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
               .paths(PathSelectors.any())
               .build()
               .enable(!Util.runEvn.equals(AppServer.Type.prod.name()));
   }
   private ApiInfo apiInfo() {
       return new ApiInfoBuilder()
               .title("xxxxx项目 RESTful APIs")
               .description("xxxxx项目后台api接口文档")
               .version("1.0")
               .build();
   }
}

配置js,css等前端文件路径问题,如果项目中使用权限拦截,一并对swagger放行

//java项目 www.fhadmin.org
@Configuration
public class AppMvcConfigurer extends WebMvcConfigurerAdapter {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/js/**").addResourceLocations("classpath:/js/");
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
        registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
    // 增加拦截器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        super.addInterceptors(registry);
        registry.addInterceptor(new RequestHandlerInterceptor()).addPathPatterns("/**");
        registry.addInterceptor(tokenAndPermissionAndDrInterceptor).addPathPatterns("/**/*")
                .excludePathPatterns("/swagger-ui.html", "/swagger-resources/**", "/v2/**", "/error/**" //);添加swagger exclude;
        registry.addInterceptor(headerInterceptor).addPathPatterns("/**");
    }
}

注意在controller类中添加swagger相关注解,如果扫描不到一样无法正常使用的。例如

//java项目 www.fhadmin.org
​​​​​​​@Api(value = "TestController", description = "用户登录登出接口")
@RestController
@Slf4j
@RequestMapping(value = "/api/test")
public class TestController {
    @Resource
    private UserLoginService userLoginService;
    @ApiOperation(value="用户登录", notes="用户登录接口")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "email", value = "邮箱", required = true ,dataType = "string"),
            @ApiImplicitParam(name = "password", value = "密码", required = true ,dataType = "string")
    })
    @RequestMapping (value = "/login",method = RequestMethod.GET)
    @ResponseBody
    public JsonData userLogin(@RequestParam String email,@RequestParam String password){
        UserParam user = new UserParam();
        user.setEmail(email);
        user.setPassword(password);
        log.info("login parameter:{}", JsonUtil.toJson(user));
        JsonData jsonData = null;
        try {
            BeanValidatorUtil.validateParam(user);
            jsonData =  userLoginService.login(user);
        } catch (ParamException e) {
            return JsonData.error(e.getMessage());
        } catch (Exception e) {
            log.error("login failure,error:", e);
            return JsonData.error("登录异常,请联系管理员查看。");
        }
        log.info("login ret:{}", JsonUtil.toJson(jsonData));
        return jsonData;
    }

赞(0) 打赏
未经允许不得转载:IDEA激活码 » sprongboot整合swagger

相关推荐

  • 暂无文章

一个分享Java & Python知识的社区