一、导入swagger2依赖
<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>
二、配置文件config
package com.offcn.springrestfuldemo001.config;
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;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2 //开启在线文档
public class SwaggerConfig {
//1.声明api 文档的属性 构建器
private ApiInfo apiInfo(){
return new ApiInfoBuilder().title("springboot中使用在线文档构建RestFul风格 Apis")
.description("小demo").termsOfServiceUrl("http://baidu.com/")
.contact("java")
.version("1.0").build();
}
//2.配置核心配置信息
public Docket createRestApi(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select().apis(RequestHandlerSelectors.basePackage("com.offcn.springrestfuldemo001.controller"))
.paths(PathSelectors.any()).build();
}
}
三、编写controller
通过@ApiOperation注释来给API增加说明
使用在Api类的接口方法上,主要属性有value(接口名称)、notes(注释)、hidden(是否隐藏)、httpMethod、ignoreJsonView、response、responseHeaders等等,某些属性注解可自动识别,无需配置。
通过@ApiImplicitParams、@ApiImplicitParam注释来给参数增加说明
使用在Api类的接口方法上,对接口参数进行说明,@ApiImplicitParams只有一个属性value,@ApiImplicitParam主要属性有name(参数名称)、value(参数说明)、required(是否必需)、dataType(数据类型)、paramType(参数类型)、readOnly(只读)等。
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@RestController
@RequestMapping("/users-test")
public class UserController {
private List<User> listUser= Collections.synchronizedList(new ArrayList<User>());
/**
* 更新指定id用户信息
* @param id
* @param user
* @return
*/
@PutMapping("/{id}")
@ApiOperation(value = "更新指定id用户信息",notes = "根据id更新用户信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id",value = "用户id",required = true,dataType = "Long"),
@ApiImplicitParam(name = "user",value = "用户实体user",required = true,dataType = "User")
})
public String updateUser(@PathVariable("id") Long id,User user) {
for (User user2 : listUser) {
if(user2.getId()==id) {
user2.setName(user.getName());
user2.setAge(user.getAge());
}
}
return "success";
}
/***
* 删除指定id用户
* @param id
* @return
*/
@DeleteMapping("/{id}")
@ApiOperation(value = "删除指定id的用户信息",notes = "根据id删除用户信息")
@ApiImplicitParam(name = "id",value = "用户id",required = true,dataType = "Long")
public String deleteUser(@PathVariable("id") Long id) {
listUser.remove(getUser(id));
return "success";
}
}
四、主启动类
启动应用,然后访问地址:http://localhost:8080/swagger-ui.html
package com.offcn.springrestfuldemo001;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringRestfulDemo001Application {
public static void main(String[] args) {
SpringApplication.run(SpringRestfulDemo001Application.class, args);
}
}