导入依赖
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
SwaggerConfig
package com.qfedu.config;
import org.springframework.context.annotation.Bean;
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.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* @ClassName SwaggerConfig
* @Description TODO
* @Author huocarry
* @Date 2022/12/29 11:24
* @Version 1.0
**/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
/**
* 创建API应用
* apiInfo() 增加API相关信息
* 通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露给Swagger来展现,
* 本例采用指定扫描的包路径来定义指定要建立API的目录。
*
* @return
*/
@Bean
public Docket restApi(){
return new Docket(DocumentationType.SWAGGER_2)
.groupName("标准接口")
.apiInfo(apiInfo("hcy的swagger测试接口", "1.0"))
.useDefaultResponseMessages(true)
.forCodeGeneration(false)
.select()
.apis(RequestHandlerSelectors.basePackage("com.qfedu.controller"))
.paths(PathSelectors.any())
.build();
}
/**
* 创建该API的基本信息(这些基本信息会展现在文档页面中)
* 访问地址:http://ip:port/swagger-ui.html
*
* @return
*/
private ApiInfo apiInfo(String title, String version) {
return new ApiInfoBuilder()
.title(title)
.description("swagger测试接口-study")
.termsOfServiceUrl("https://blog.csdn.net/xqnode")
.contact(new Contact("hcy", "https://mp.csdn.net/mp_blog/creation/editor?spm=1001.2014.3001.5352", "1143187786@qq.com"))
.version(version)
.build();
}
}
接口
package com.qfedu.controller;
import com.qfedu.entity.Payment;
import com.qfedu.result.CommonResult;
import com.qfedu.service.PaymentService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* @ClassName PaymentController
* @Description TODO
* @Author huocarry
* @Date 2022/12/28 19:56
* @Version 1.0
**/
@RestController
@RequestMapping("/payment")
@Slf4j
@Api(tags = "接口演示")
public class PaymentController {
@Autowired
private PaymentService paymentService;
@ApiOperation(value = "增加payment", notes = "测试json参数是否接受成功")
@ApiImplicitParams({
@ApiImplicitParam(paramType = "query", name = "id", value = "编号", dataType = "long"),
@ApiImplicitParam(paramType = "query", name = "serial", value = "序列号", dataType = "String")
})
@PostMapping("/create")
public CommonResult create(Payment payment){
int result = paymentService.create(payment);
log.info("*******插入结果:"+result);
if (result>0){
return new CommonResult(200,"插入数据库成功",result);
}else {
return new CommonResult(444,"插入数据库失败",null);
}
}
@GetMapping("get/{id}")
public CommonResult getPaymentById(@PathVariable("id") Long id){
Payment payment = paymentService.getPaymentById(id);
log.info("*******查询结果:"+payment);
if (payment!=null){
return new CommonResult(200,"查询成功",payment);
}else {
return new CommonResult(444,"没有查询结果,对应ID:"+id,null);
}
}
}
1、@Api:用在请求的类上,说明该类的作用
tags="说明该类的作用"
value="该参数没什么意义,所以不需要配置"
2、@ApiOperation:用在请求的方法上,说明方法的作用
@ApiOperation:"用在请求的方法上,说明方法的作用"
value="说明方法的作用"
notes="方法的备注说明"
3、@ApiImplicitParams:用在请求的方法上,包含一组参数说明
@ApiImplicitParams:用在请求的方法上,包含一组参数说明
@ApiImplicitParam:用在 @ApiImplicitParams 注解中,指定一个请求参数的配置信息
name:参数名
value:参数的汉字说明、解释
required:参数是否必须传
paramType:参数放在哪个地方
· header --> 请求参数的获取:@RequestHeader
· query --> 请求参数的获取:@RequestParam
· path(用于restful接口)--> 请求参数的获取:@PathVariable
· body(不常用)
· form(不常用)
dataType:参数类型,默认String,其它值dataType="Integer"
defaultValue:参数的默认值
接口测试
body和query的选择
Body代表请求体中的数据。
Get请求只能传Query参数,POST可以传Query和Body(常用)两种形式的参数。
Query的值只能是一个字符串,不能传递对象类型的参数,如果参数中涉及到了传递对象,就要选择Body传参,一般json等都是Body传参。