当前位置:   article > 正文

基于SpringBoot2开发WebApi(三)集成Swagger2_iot项目的webapi接口开发

iot项目的webapi接口开发

1.依赖

在pom.xml添加Swagger2依赖

  1. <dependency>
  2. <groupId>io.springfox</groupId>
  3. <artifactId>springfox-swagger2</artifactId>
  4. <version>2.9.2</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>io.springfox</groupId>
  8. <artifactId>springfox-swagger-ui</artifactId>
  9. <version>2.9.2</version>
  10. </dependency>
  11. <dependency>
  12. <groupId>com.github.caspar-chen</groupId>
  13. <artifactId>swagger-ui-layer</artifactId>
  14. <version>1.1.3</version>
  15. </dependency>

2.添加Swagger2配置类

在configuration包下增加SwaggerConfig类

  1. package com.iot.simmanager.configuration;
  2. import org.springframework.context.annotation.Bean;
  3. import org.springframework.context.annotation.Configuration;
  4. import springfox.documentation.builders.ApiInfoBuilder;
  5. import springfox.documentation.builders.PathSelectors;
  6. import springfox.documentation.builders.RequestHandlerSelectors;
  7. import springfox.documentation.service.ApiInfo;
  8. import springfox.documentation.spi.DocumentationType;
  9. import springfox.documentation.spring.web.plugins.Docket;
  10. import springfox.documentation.swagger2.annotations.EnableSwagger2;
  11. /**
  12. * <p>Swagger2配置类</p>
  13. * @author lenny
  14. * @date 20210425
  15. * @version 1.0.0
  16. */
  17. @Configuration
  18. @EnableSwagger2
  19. public class SwaggerConfig {
  20. /**
  21. * 创建API应用
  22. * apiInfo() 增加API相关信息
  23. * 通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露给Swagger来展现,
  24. * 本例采用指定扫描的包路径来定义指定要建立API的目录。
  25. *
  26. * @return
  27. */
  28. @Bean
  29. public Docket createRestApi() {
  30. return new Docket(DocumentationType.SWAGGER_2)
  31. .apiInfo(apiInfo())
  32. .select()
  33. .apis(RequestHandlerSelectors.basePackage("com.iot.simmanager.controller"))
  34. .paths(PathSelectors.any())
  35. .build()
  36. .useDefaultResponseMessages(false);
  37. }
  38. /**
  39. * 创建该API的基本信息(这些基本信息会展现在文档页面中)
  40. * 访问地址:http://项目实际地址/swagger-ui.html
  41. *
  42. * @return
  43. */
  44. private ApiInfo apiInfo() {
  45. return new ApiInfoBuilder()
  46. .title("SIM Manager APIs")
  47. .description("SIM卡管理接口文档")
  48. .termsOfServiceUrl("https://blog.csdn.net/qq_17486399")
  49. .version("0.0.1")
  50. .build();
  51. }
  52. }

3.在Controller增加参数注解

  1. package com.iot.simmanager.controller;
  2. import com.iot.simmanager.model.AdminAgent;
  3. import com.iot.simmanager.service.AdminAgentService;
  4. import io.swagger.annotations.Api;
  5. import io.swagger.annotations.ApiImplicitParam;
  6. import io.swagger.annotations.ApiImplicitParams;
  7. import io.swagger.annotations.ApiOperation;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.web.bind.annotation.PostMapping;
  10. import org.springframework.web.bind.annotation.RequestMapping;
  11. import org.springframework.web.bind.annotation.RequestParam;
  12. import org.springframework.web.bind.annotation.RestController;
  13. import java.util.List;
  14. /**
  15. * @author HyoJung
  16. */
  17. @Api(tags = "公司管理")
  18. @RestController
  19. @RequestMapping("/agent")
  20. public class AdminAgentController {
  21. @Autowired
  22. private AdminAgentService adminAgentService;
  23. @ApiOperation(value = "查询公司列表", notes = "查询公司列表")
  24. @PostMapping(value = "queryAdminAgentList")
  25. public List<AdminAgent> queryAdminAgentList(){
  26. try {
  27. List<AdminAgent> adminAgentList = adminAgentService.queryAdminAgentList();
  28. return adminAgentList;
  29. } catch (Exception e) {
  30. e.printStackTrace();
  31. return null;
  32. }
  33. }
  34. @ApiOperation(value = "查询公司列表带参数", notes = "查询公司列表带参数")
  35. @ApiImplicitParams({
  36. @ApiImplicitParam(name = "key",value = "查询条件"),
  37. @ApiImplicitParam(name = "pageNum",value = "当前页",required = true),
  38. @ApiImplicitParam(name = "pageSize",value = "每页显示条数",required = true)
  39. })
  40. @PostMapping(value = "queryAdminAgentListParam")
  41. public List<AdminAgent> queryAdminAgentListParam(String key, @RequestParam int pageNum, @RequestParam int pageSize){
  42. try {
  43. List<AdminAgent> adminAgentList = adminAgentService.queryAdminAgentList();
  44. return adminAgentList;
  45. } catch (Exception e) {
  46. e.printStackTrace();
  47. return null;
  48. }
  49. }
  50. }

@Api注解:使用在类上,表明是swagger资源,@API拥有两个属性:value、tags;

生成的api文档会根据tags分类,直白的说就是这个controller中的所有接口生成的接口文档都会在tags这个list下;tags如果有多个值,会生成多个list,每个list都显示所有接口

@ApiOperation:使用于在方法上,表示一个http请求的操作,属性比较多,常用的有两个
value用于方法描述
notes用于提示内容

@ApiImplicitParams:用在请求的方法上,表示一组参数说明

@ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面

name:参数名

value:参数的汉字说明、解释

required:参数是否必须传

paramType:参数放在哪个地方

· header --> 请求参数的获取:@RequestHeader

· query --> 请求参数的获取:@RequestParam

· path(用于restful接口)--> 请求参数的获取:@PathVariable

· body(不常用)

· form(不常用)

dataType:参数类型,默认String,其它值dataType="Integer"

defaultValue:参数的默认值

除此之外还有很多其他注解,可以参考官方文档查看

4.效果

可以在Debug页面进行接口在线测试

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号