为了方便调用接口,实现接口的可视化。使用swagger2。本文采用springboot项目集成 swagger2
第一步: 加入maven依赖
<!-- swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.8.0</version>
</dependency>
第二步:application.yml 文件加入
swagger:
enabled: true
第三步: 引入工具类:
package com.dj.lam.config;
import org.springframework.beans.factory.annotation.Value;
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;
/**
* @program: boot_demo
* @description
* @author: xk
* @create: 20220915
**/
@Configuration
@EnableSwagger2
public class Swagger2Config {
//是否开启swagger,正式环境一般是需要关闭的,从配置文件中读取
@Value(value = "${swagger.enabled}")
Boolean swaggerEnabled;
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
// 是否开启
.enable(swaggerEnabled).select()
// 扫描的路径包
.apis(RequestHandlerSelectors.basePackage("com.dj.lam.controller"))
// 指定路径处理PathSelectors.any()代表所有的路径
.paths(PathSelectors.any()).build().pathMapping("/");
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Swaggerdemo")
.description("demo")
// 作者信息
.contact(new Contact("xk", "https://mp.csdn.net/?spm=1001.2101.3001.8539", "qqq@163.com"))
.version("1.0.0")
.build();
}
}
第四步 控制层加入注解和注释,可以备注接口注释
事例代码:
package com.dj.lam.controller;
import com.dj.lam.pojo.User;
import com.dj.lam.service.UserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.*;
import java.util.stream.Collectors;
/**
* @program: cloud_demo
* @description
* @author: WYF
* @create: 2019-11-06 16:35
**/
@RestController
@RequestMapping("/user/")
@Api(tags = "lambda测试")
public class UserController {
@Autowired
private UserService userService;
/**
* 正序
*/
@GetMapping("rank")
@ApiOperation("正序")
public void rank(){
List<User> userList = userService.list();
userList.sort(Comparator.comparing(User::getAge));
// Stream<User> sorted = userList.stream().sorted(Comparator.comparing(User::getAge));
userList.forEach(user -> {
System.out.println(user.toString());
});
}
/**
* 多字段正序
*/
@GetMapping("moreRank")
@ApiOperation("多字段正序")
public void moreRank(){
List<User> userList = userService.list();
userList.sort(Comparator.comparing(User::getAge).thenComparing(User::getPwd));
userList.forEach(user -> {
System.out.println(user.toString());
});
}
/**
* 倒序
*/
@GetMapping("inverted")
@ApiOperation("倒序")
public void rqanks(){
List<User> userList = userService.list();
//第一种
/*Comparator<User> comparator = ((u1, u2) -> u1.getId().compareTo(u2.getId()));
userList.sort(comparator.reversed());*/
//第二种 需要遍历 sorted
// Stream<User> sorted = userList.stream().sorted(Comparator.comparing(User::getAge).reversed());
//第三种
userList.sort(Comparator.comparing(User::getId).reversed());
userList.forEach(user -> {
System.out.println("倒序====" + user.toString());
});
}
/**
* 最大、最小
*/
@GetMapping("minAndmax")
@ApiOperation("最大、最小")
public void minAndmax(){
List<User> userList = userService.list();
Comparator<User> comparator = Comparator.comparing(User::getAge);
User minUser = userList.stream().min(comparator).get();
System.out.println("最小===" + minUser.toString());
User maxUser = userList.stream().max(comparator).get();
System.out.println("最大===" + maxUser.toString());
}
/**
* 过滤
*/
@GetMapping
@ApiOperation("过滤")
public void filtration(){
List<User> userList = userService.list();
List<User> list = userList.stream().filter(user -> user.getAge().equals(3)).collect(Collectors.toList());
list.forEach(user -> {
System.out.println("年龄3岁的===" + user.toString());
});
}
/**
* 转map
* @return
*/
@GetMapping("turnMap")
@ApiOperation("转换map")
public Map<String, Integer> turnMap(){
List<User> userList = userService.list();
Map<String, Integer> map = userList.stream().collect(Collectors.toMap(User::getName, User::getAge));
System.out.println(map);
return map;
}
/**
* 求对象属性和
*/
@GetMapping("ageSum")
@ApiOperation("求对象属性和")
public void ageSum(){
List<User> userList = userService.list();
Integer sum = userList.stream().collect(Collectors.summingInt(User::getAge));
System.out.println("年龄之和 : " + sum);
}
/**
* 分组
* @return
*/
@GetMapping("grouping")
@ApiOperation("分组")
public Map<Integer, List<User>> grouping(){
List<User> userList = userService.list();
Map<Integer, List<User>> map = userList.stream().collect(Collectors.groupingBy(User::getAge));
for(Map.Entry<Integer, List<User>> entry : map.entrySet()){
List<User> value = entry.getValue();
}
return map;
}
/**
* 去重
*/
@GetMapping("distinct")
@ApiOperation("去重")
public void distinct(){
List<User> userList = userService.list();
List<User> sLists = userList.stream().collect(
Collectors.collectingAndThen(Collectors.toCollection(
() -> new TreeSet<>(Comparator.comparing(c -> c.getAge()))), ArrayList::new));
sLists.forEach(user -> {
System.out.println(user.toString());
});
}
}
访问地址: http://localhost:8080/swagger-ui.html
成功截图: