Swagger2
* 简单的来说就是 后端的接口是实时更新的,能够动态请求的接口文档,这样前端对接口的时候就方便了很多*
第一步 添加pom依赖
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
</dependency>
再写一个配置类
@Configuration
@EnableSwagger2
public class Swagger2 {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
// 下面写的是controller所在的包
//去扫描这个这个包(并不仅限于当前工程下的包)下所有标记了@restcontroller的类,去扫描里面的每一个方法
.apis(RequestHandlerSelectors.basePackage("com.cuit"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
Contact contact =new Contact("name","http://dlf.com","dailinfeng66@163.com");
return new ApiInfoBuilder()
.title("在线商城接口文档")
.description("用于学习springboot实战项目")
.termsOfServiceUrl("http://blog.csdn.net/saytime")
.version("1.0")
.contact(contact)
.build();
}
}
第三步
@EnableSwagger2
在springboot的启动类上加上这个注解
第四步 在自己的controller上面加上这些注解
//描述controller的作用
@Api(tags = "shop-学习-day 1to2")
@RestController
public class UserController {
/**
* @Api 用在请求的类上 表示对类的说明
* tags="说明该类的作用,可以在ui界面上看到的注解"
* value="该参数没有什么意义,在ui界面上也看不到,所以不需要配置"
* @ApiOperation: 用在请求的方法上, 说明方法的用途, 作用
* value:说明方法的用途,作用
* notes:方法的备注说明
* @ApiImplicitParams:用在请求的方法上表示一组参数说明
* @ApiImplicitParam:用在@ApiImplicctParams注解中指定一个请求参数的各个方面 name:参数名
* value:参数的汉字说明,解释
* required:参数是否 必须传
* paramType:参数放在哪个地方
* header->请求参数的获取:@RequestHeader
* query->请求参数的获取:@RequestParam
* path(用于restful风格接口)->请求参数的获取@PathVariable
* body 不常用
* form 不常用
* dataType:参数类型,默认String,其他值dataType="intenger"
* defaultValue:默认的参数值
* EG:
* @ApiImplicitParams({@ApiImplicitParam(name="pageNum",defaultValue = "1",required = true,dataType = "int",paramType = "path")
* ,@ApiImplicitParam(name="pageSize",defaultValue = "10",required = true,dataType = "int",paramType = "path")})
* @ApiReponses:用于在请求的方法上表示一组响应
* @ApiReponse:用在@ApiReponses中,一般用于表达一个错误的响应信息 code:数字 -> 500
* message:信息
* reponse:抛出异常的类
* @ApiModel:用于响应类上,表示一个返回响应数据信息 ->这种一般用在post创建的时候使用@RequestBody的时候请求参数无法使用@ApiImplicitParam注解进行描述的时候
* @ApiModelProperty:用在属性上描述响应类的属性
*/
@Autowired
UserService userService;
@ApiOperation(value = "hello", notes = "hello测试")
@GetMapping("hello")
public String indexasd() {
return "hello world";
}
/**
* 得到所有user
*
* @return
*/
@GetMapping("getAllUsers")
public List getAllUser() {
return userService.getAllUsers();
}
/**
* 根据memberid查询收货地址
*
* @param memberId
* @return
*/
@ApiOperation("根据memberid查询用户地址")
@ApiImplicitParam(name = "memberId", value = "String")
@GetMapping("ReceiveAddress/{memberId}")
public List getReceiveAddressByMemberId(@PathVariable("memberId") String memberId) {
return userService.getReceiveAddressByMemberId(memberId);
}
}