SpringBoot结合swagger自动生成API文档

        Web开发常采用前后端分离的方式。前后端通过API进行交互,在Swagger UI中,前后端人员能够直观预览并且测试API,方便前后端人员同步开发。

        在SpringBoot中集成swagger,步骤如下:

        1.将下面的依赖添加到Maven项目的pom.xml文件中。springfox-swagger2组件帮助我们自动生成描述API的json文件,而springfox-swagger-ui组件就是将这个json文件解析出来,用一种更友好的方式呈现出来。

        <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>

        2.添加Swaager的配置类

package com.example.demo.config;

import io.swagger.annotations.ApiOperation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@EnableSwagger2
@Configuration
public class SwaggerConfig {
    @Bean
    public Docket swaggerSpringMvcPlugin() {
        return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)).build();
    }

}

      3.在需要暴露的API上添加需要在Swagger UI页面上显示的应用相关的介绍信息。举个例子吧~

在Controller类上添加@API注解,说明该类的作用;该类下包含增删改查五个方法,给大家一个全面的示范,至于service、dao层的实现,留给大家自己发挥吧~主要是在方法上添加@ApiOperation,@ApiImplicitParam注解,作用是对方法以及参数的说明。

package com.example.demo.controller;

import com.example.demo.service.AreaService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.example.demo.entity.Area;
import java.util.*;

@Api(description = "AreaController相关的api")
@RestController
@RequestMapping("/superadmin")
public class AreaController {
    @Autowired
    private AreaService areaService;
    @ApiOperation(value="查询区域信息" ,notes = "查询数据库中所有区域信息")
    @RequestMapping(value="/listarea" , method = RequestMethod.GET)
    private Map<String,Object> listArea(){
        Map<String,Object> modelMap = new HashMap<String, Object>() ;
        List<Area> list = areaService.getAreaList();
        modelMap.put("areaList" , list);
        return modelMap;
    }

        @ApiOperation(value="根据id查询区域信息" ,notes = "查询数据库中某个区域信息")
        @ApiImplicitParam(name="areaId",value="区域ID",paramType="query",required = true,dataType = "int")
        @RequestMapping(value="/getareabyid" ,method = RequestMethod.GET)
        private Map<String,Object> getAreaById(@RequestParam("areaId") Integer areaId){
            Map<String,Object> modelMap = new HashMap<String, Object>() ;
            Area area = areaService.getAreaById(areaId);
        modelMap.put("areaList" , area);
        return modelMap;
    }
    @ApiOperation(value="添加区域信息",notes="根据Area对象添加区域信息")
    @ApiImplicitParam(name="area",value="区域信息",required=true,dataType="Area")
    @RequestMapping(value="/addarea" ,method = RequestMethod.POST)
    private Map<String,Object> addArea(@RequestBody Area area){
        Map<String,Object> modelMap = new HashMap<String, Object>() ;
        modelMap.put("success" ,areaService.addArea(area));
        return modelMap;
    }
    @ApiOperation(value="修改区域信息",notes="根据Area对象修改区域信息")
    @ApiImplicitParam(name="area",value="区域信息",required=true,dataType="Area")
    @RequestMapping(value="/modifyarea" ,method = RequestMethod.POST)
    private Map<String,Object> modifyArea(@RequestBody Area area){
        Map<String,Object> modelMap = new HashMap<String, Object>() ;
        modelMap.put("success" ,areaService.modifyArea(area));
        return modelMap;
    }
    @ApiOperation(value="删除区域信息",notes="根据区域ID删除区域信息")
    @ApiImplicitParam(name="areaId",value="区域ID",required=true,dataType="int")
    @RequestMapping(value="/removearea" ,method = RequestMethod.GET)
    private Map<String,Object> removeArea(@RequestParam("areaId") Integer areaId){
        Map<String,Object> modelMap = new HashMap<String, Object>() ;
        modelMap.put("success",areaService.deleteArea(areaId));
        return modelMap;
    }
}

        4.启动SpringBoot项目,访问http://localhost:8080/demo/swagger-ui.html页面,注意了,我这里是因为在application.properties配置了项目路径server.servlet.context-path=/demo,所以才在上面的url加上/demo,一般若无特殊的配置,直接访问http://localhost:8080/swagger-ui.html即可。

        Swagger UI界面绝对有颜有值!画面小清新,而且API非常直观。点击页面上的url,可查看API文档api-docs,不仅如此,咱们是可以测试接口的哟~简单测个 根据id查询区域信息 的接口吧,点击将其展开。

        点击 Try it out ,咱们得输个int类型的区域ID做参数,输入完后点击execute后就可以看到结果啦!

 

        迟到两年的swagger,算是正式认识了。

日ji

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值