Swagger主要是用于前后端分离开发的时候,快速方便的输出API文档。
并且,为了方便进行测试后台的restful形式的接口,实现动态的更新,当我们在后台的接口修改了后,swagger可以实现自动的更新,而不需要认为的维护这个接口进行测试。
其他注解详见:
https://github.com/swagger-api/swagger-core/wiki/Annotations#apimodel
1xx(临时响应)
2xx (成功)
3xx (重定向)
4xx(请求错误)
5xx(服务器错误)
还有就是项目中自定义的返回码等
io.springfox
springfox-swagger2
2.7.0
io.springfox
springfox-swagger-ui
2.7.0
package com.martina.my_swagger;
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;
/**
* @author Martina
* @create 2018年1/23
* @version 1.0
*
* */
@Configuration
@EnableSwagger2
public class SwaggerConfig {
//swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
// 指定controller存放的目录路径
.apis(RequestHandlerSelectors.basePackage("com.martina.my_swagger.controller"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
//标题
.title("swaggerDemo")
.description("更多详情访问我的github:https://github.com/Martina001/")
.termsOfServiceUrl("https://github.com/Martina001/")
//创建人
.contact(new Contact("Martina", "http://www.baidu.com", ""))
.version("1.0")
.build();
}
}
/**\
*
* @Api,是标注一个Controller(Class)为一个swagger资源(API)。
* @ApiOperation,对一个操作或HTTP方法进行描述
*/
@Api("swagger测试")
@RestController
@RequestMapping(value="/")
public class UserController {
@Autowired
private UserService userService;
@ApiOperation(value="方法测试",notes="根据传参返回对应的值")
@RequestMapping(value="/test",method= RequestMethod.GET)
public String word( @RequestParam("word") String word){
return word;
}
/**
* 练手@RequestParam
* @param userId
* @return
*/
@ApiOperation(value="方法测试",notes="根据传参返回对应的值")
@RequestMapping(value="/getUser",method= RequestMethod.GET)
public List getUser(@RequestParam("userId") int userId){
return userService.getUserById(userId);
}
/**
* 练手@PathVariable
* @param userId
* @return
*/
@ApiOperation(value="方法测试",notes="根据传参返回对应的值")
@RequestMapping(value="/getUserById/{userId}",method= RequestMethod.GET)
public List getUserById(@PathVariable("userId") int userId){
return userService.getUserById(userId);
}
@ApiOperation(value="方法测试",notes="根据传参返回对应的值")
@RequestMapping(value="/getAllUsers",method= RequestMethod.GET)
public List getAllUsers(){
return userService.getAllUsers();
}
@ApiOperation(value="方法测试",notes="根据传参返回对应的值")
@RequestMapping(value="/addUser",method= RequestMethod.POST)
public User01 addUser(User01 user01){
return userService.addUser(user01);
}
}
首先,mysql的连接,spring.datasource.driver-class-name=com.mysql.jdbc.Driver已经过时,使用新版的:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
然后注意@Mapper,不要忘了
虽然还是会显示红色,但是运行也没有影响,奇怪。
@EnableSwagger2
@Configuration
public class SwaggerConfig extends WebMvcConfigurationSupport {
//swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
// 指定controller存放的目录路径
.apis(RequestHandlerSelectors.basePackage("com.martina.test01.controller"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
//标题
.title("swaggerDemo")
.description("更多详情访问我的github:https://github.com/Martina001/")
//
.termsOfServiceUrl("https://github.com/Martina001/")
//创建人
.contact(new Contact("Martina", "http://www.baidu.com", ""))
.version("1.0")
.build();
}
/**
* 防止@EnableMvc把默认的静态资源路径覆盖了,手动设置的方式
* @param registry
*/
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations("classpath:/META-INF/resources/").setCachePeriod(0);
}
}