Swagger整合SpringBoot并使用(超级详细)

导读:本篇文章讲解 Swagger整合SpringBoot并使用(超级详细),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

CSDN话题挑战赛第2期
参赛话题:Java技术分享

目录

1.注入相关的依赖

2.相关的配置类

2.1.SwaggerConfig配置类

2.2.静态资源映射配置

2.3在权限验证这块,放开相关不需要处理的请求路径

3.Swagger常用注解

3.1.@ApiModel和@ApiModelProperty使用实例

3.2.@Api和@ApiOperation以及@ApiImplicitParams和@ApiImplicitParam实例展示


1.注入相关的依赖

    <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
            <version>3.0.3</version>
        </dependency>

2.相关的配置类

2.1.SwaggerConfig配置类

这里有个需要注意的地方如果该类只是个简单的Swagger配置类,就不能在该配置类上继承WebMvcConfigurationSupport,否则会找不到其它静态资源,所有页面都会出现404错误,因为如果继承了该类就必须实现addResourceHandlers方法,配置相关的静态资源映射。

@Configuration
@EnableSwagger2
@EnableKnife4j
public class Swagger2Config {

    @Bean
    public Docket docket() {
        //文档信息
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.example.takeout.controller"))
                .build();
    }

    /**
     * 配置基本信息
     *
     * @return
     */
    @Bean
    public ApiInfo apiInfo() {

        return new ApiInfoBuilder()
                .title("瑞吉外卖")
                .version("1.0")
                .description("瑞吉外卖接口文档")
                .build();
    }

}

2.2.静态资源映射配置

@Configuration
@Slf4j
public class WebMvcConfig extends WebMvcConfigurationSupport {

    /**
     * 设置静态资源映射
     *
     * @param registry
     */
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**")
                .addResourceLocations("classpath:/resources/")
                .addResourceLocations("classpath:/static/")
                .addResourceLocations("classpath:/public/");
        registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
        super.addResourceHandlers(registry);
    }

2.3在权限验证这块,放开相关不需要处理的请求路径

Swagger整合SpringBoot并使用(超级详细)

3.Swagger常用注解

注解 说明
@Api 用在请求的类上,例如Controller,表示对类的说明
@ApiModel 用在类上,通常是实体类,表示一个返回响应数据的信息
@ApiModelProperty 用在属性上,描述响应类的属性
@ApiOperation 用在请求方法上,说明方法的用途,作用
@ApiImplicitParams 用在请求的方法上,表示一组参数说明
@ApiImplicitParam 用在@ApiImplicitParams注解中,指定一个请求参数的各个方面

 

 

 

 

 

 

 

3.1.@ApiModel和@ApiModelProperty使用实例

@Data
@TableName("category")
@ApiModel("菜品及套餐分类")
public class Category implements Serializable {

    private static final long serialVersionUID = 1L;
    @TableId("id")
    @ApiModelProperty("主键id")
    private Long id;


    //类型 1 菜品分类 2 套餐分类
    @TableField("type")
    @ApiModelProperty("类型 1 菜品分类 2 套餐分类")
    private Integer type;


    //分类名称
    @TableField("name")
    @ApiModelProperty("分类名称")
    private String name;


    //顺序
    @TableField("sort")
    @ApiModelProperty("顺序")
    private Integer sort;


    //创建时间
    @TableField(fill = FieldFill.INSERT)
    @ApiModelProperty("主键id")
    private LocalDateTime createTime;


    //更新时间
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @ApiModelProperty("主键id")
    private LocalDateTime updateTime;


    //创建人
    @TableField(fill = FieldFill.INSERT)
    @ApiModelProperty("主键id")
    private Long createUser;


    //修改人
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @ApiModelProperty("主键id")
    private Long updateUser;


    //是否删除
    @TableField(value = "is_delete", fill = FieldFill.INSERT)
    @TableLogic
    @JsonIgnore
    @ApiModelProperty("主键id")
    private Integer isDeleted;


    //修改版本
    @TableField(fill = FieldFill.INSERT_UPDATE, update = "%s+1")
    @Version
    @JsonIgnore
    @ApiModelProperty("主键id")
    private Integer version;

}

3.2.@Api和@ApiOperation以及@ApiImplicitParams和@ApiImplicitParam实例展示

@Slf4j
@RequestMapping("/category")
@RestController
@Api(tags = "菜品及套餐分类接口")
public class CategoryController {

    @Autowired
    private CategoryService categoryService;


    @PostMapping("/save")
    @ApiOperation("菜品及套餐分类保存接口")
    public R<String> save(@RequestBody CategoryBo categoryBo) {
        log.info("categoryBo:" + categoryBo);
        return categoryService.save(categoryBo);
    }


    /**
     * 菜品分类分页查询
     *
     * @param pageSize
     * @param pageNum
     * @return
     */
    @GetMapping("/page")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "pageSize",value = "每条记录数",required = true),
            @ApiImplicitParam(name = "pageNum",value = "页码",required = true)
    })
    public R<Page> page(@RequestParam("pageSize") int pageSize, @RequestParam("pageNum") int pageNum) {
        return categoryService.page(pageSize, pageNum);
    }

    /**
     * 删除菜品
     *
     * @param id
     * @return
     */
    @DeleteMapping("/delete/{id}")
    public R<String> delete(@PathVariable("id") Long id) {
        return categoryService.delete(id);
    }

    /**
     * 菜品更新
     *
     * @param categoryBo
     * @return
     */
    @PutMapping("/update")
    public R<String> update(@RequestBody CategoryBo categoryBo) {
        return categoryService.update(categoryBo);
    }

    /**
     *
     * @param category
     * @return
     */
    @GetMapping("/list")
    public R<List<Category>> listCategory(Category category) {
        return categoryService.listCategory(category);
    }


}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/105074.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!