当前位置: 代码迷 >> 综合 >> Swagger?拿来把你
  详细解决方案

Swagger?拿来把你

热度:15   发布时间:2023-12-08 08:14:18.0

Swagger

1、添加依赖

<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.9.2</version></dependency><!--引入ui包--><dependency><groupId>com.github.xiaoymin</groupId><artifactId>swagger-bootstrap-ui</artifactId><version>1.9.3</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-bean-validators</artifactId><version>2.9.2</version></dependency>

2、在主类上添加注解

package com.john;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import springfox.documentation.swagger2.annotations.EnableSwagger2;@SpringBootApplication
@EnableSwagger2
public class Shoppingtrolley0826Application {
    public static void main(String[] args) {
    SpringApplication.run(Shoppingtrolley0826Application.class, args);}}

3、添加配置类

package com.john.config;import io.swagger.annotations.ApiOperation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;/*** @description Swagger配置类* @author -还怕大雨吗* @date 2021/8/26 20:29* @version 1.0*/
@Configuration
@ComponentScan("com.john.controller")
public class SwaggerConfig {
    @Beanpublic Docket createRestApi() {
    return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()// api扫包.apis(RequestHandlerSelectors.basePackage("com.john.controller")).apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)).paths(PathSelectors.any()).build();}private ApiInfo apiInfo() {
    return new ApiInfoBuilder().title("阿牛测试").description("demo").termsOfServiceUrl("localhost:8080")// .contact(contact).version("1.0").build();}}

4、启动项目,访问SwaggerUI

#普通的ui访问 
http://localhost:${port}/swagger-ui.html #重点推荐swagger-bootstrap-ui的访问方式:http://localhost:${port}/doc.html 

5、类控制器代码编写

package com.john.controller;import com.john.service.ShopService;
import com.john.utils.ResultResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;/*** @description 类控制器* @author -还怕大雨吗* @date 2021/8/26 20:04* @version 1.0*/
@RestController
@RequestMapping("/shops")
public class ShopController {
    @Resourceprivate ShopService shopService;@ApiOperation("查询全部")@PostMapping("/findAll")public ResultResponse findAll(){
    return shopService.findAll();}@ApiOperation("新增商品")@ApiImplicitParams({
    @ApiImplicitParam(name = "sname",value = "商品名称",dataType = "String", example = "200"),@ApiImplicitParam(name = "price",value = "商品价格",dataType = "Double", example = "200")})@PostMapping("/saveShops")public ResultResponse saveShops(String sname,Double price){
    return shopService.saveShops(sname,price);}}

6、使用Swagger测试接口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-STWlE3CL-1629982784939)(Swagger2.assets/1629982534991.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-90cU3Wqp-1629982784942)(Swagger2.assets/1629982552592.png)]

7、Swagger接口常用注解

@Api:用在请求的类上,表示对类的说明tags="说明该类的作用,可以在UI界面上看到的注解"value="该参数没什么意义,在UI界面上也看到,所以不需要配置"@ApiOperation:用在请求的方法上,说明方法的用途、作用value="说明方法的用途、作用"notes="方法的备注说明"@ApiImplicitParams:用在请求的方法上,表示一组参数说明@ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面name:参数名value:参数的汉字说明、解释required:参数是否必须传paramType:参数放在哪个地方· header --> 请求参数的获取:@RequestHeader· query --> 请求参数的获取:@RequestParam· path(用于restful接口)--> 请求参数的获取:@PathVariable· body(不常用)· form(不常用)    dataType:参数类型,默认String,其它值dataType="Integer"       defaultValue:参数的默认值@ApiResponses:用在请求的方法上,表示一组响应@ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息code:数字,例如400message:信息,例如"请求参数没填好"response:抛出异常的类@ApiModel:用于响应类上,表示一个返回响应数据的信息(这种一般用在post创建的时候,使用@RequestBody这样的场景,请求参数无法使用@ApiImplicitParam注解进行描述的时候)@ApiModelProperty:用在属性上,描述响应类的属性 @ApiParam是一个描述方法参数的注解  注解内的常用属性有  name:参数名(与请求参数参数名一致)  value:参数说明  required:是否必须  @ApiParam@ApiImplicitParam类似,都是对方法参数进行标注,但是注解添加的位置不同,@ApiParam添加在方法参数前,@ApiImplicitParam添加在方法前,@ApiImplicitParam拥有dataType和paramType

注解内的常用属性有  name:参数名(与请求参数参数名一致)  value:参数说明  required:是否必须  @ApiParam和@ApiImplicitParam类似,都是对方法参数进行标注,但是注解添加的位置不同,@ApiParam添加在方法参数前,@ApiImplicitParam添加在方法前,@ApiImplicitParam拥有dataType和paramType

@ApiParam:单个参数描述
@ApiModel:用对象来接收参数
@ApiProperty:用对象接收参数时,描述对象的一个字段
@ApiResponse:HTTP响应其中1个描述
@ApiResponses:HTTP响应整体描述
@ApiIgnore:使用该注解忽略这个API
@ApiError :发生错误返回的信息
@ApiImplicitParam:描述一个请求参数,可以配置参数的中文含义,还可以给参数设置默认值
@ApiImplicitParams:描述由多个 @ApiImplicitParam 注解的参数组成的请求参数列表
  相关解决方案