欢迎访问昆山宝鼎软件有限公司网站! 设为首页 | 网站地图 | XML | RSS订阅 | 宝鼎邮箱 | 后台管理


新闻资讯

MENU

软件开发知识

example=oKong) @NotBlank(message = 名称不能为空) String name;} Swa

点击: 次  来源:劳务派遣管理系统 时间:2018-08-20

原文出处: oKong

媒介

前一章节先容了mybatisPlus的集成和简朴利用,本章节开始接着上一章节的用户表,举办Swagger2的集成。此刻都履行前后端疏散开拓和微处事大行其道,分微处事及前后端疏散后,前后端开拓的相同本钱就增加了。所以一款强大的RESTful API文档就至关重要了。而今朝在后端规模,根基上是Swagger的天下了。

Swagger2先容

Swagger是一款RESTful接口的文档在线自动生成、成果测试成果框架。一个类型和完整的框架,用于生成、描写、挪用和可视化RESTful气势气魄的Web处事,加上swagger-ui,可以有很好的泛起。

example=oKong) @NotBlank(message = 名称不能为空) String name;} Swagge CAD加密 r会见与利用 api首页路径:http://127.0.0.1:8080/swagger-ui.html 调试:点击需要会见的api列表

SpringBoot集成

这里选用的swagger版本为:2.8.0

0.pom依赖

<!--swagger -->
<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>

1.编写设置文件(Swagger2Config.java)

主要是添加注解@EnableSwagger2和界说Docket的bean类。

@EnableSwagger2
@Configuration
public class SwaggerConfig {

    //是否开启swagger,正式情况一般是需要封锁的,可按照springboot的多情况设置举办配置
    @Value(value = "${swagger.enabled}")
    Boolean swaggerEnabled;

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
                // 是否开启
                .enable(swaggerEnabled).select()
                // 扫描的路径包
                .apis(RequestHandlerSelectors.basePackage("cn.lqdev.learning.springboot.chapter10"))
                // 指定路径处理惩罚PathSelectors.any()代表所有的路径
                .paths(PathSelectors.any()).build().pathMapping("/");
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("SpringBoot-Swagger2集成和利用-demo示例")
                .description("oKong | 趔趄的猿")
                // 作者信息
                .contact(new Contact("oKong", "https://blog.lqdev.cn/", "499452441@qq.com"))
                .version("1.0.0")
                .build();
    }
}

3.添加文档内容(一般上是在Controller,请求参数长举办注解,这里以上章节的UserController举办设置)

UserController

/**
 * 用户节制层 简朴演示增删改查及分页
 * 新增了swagger文档内容 2018-07-21
 * @author oKong
 *
 */
@RestController
@RequestMapping("/user")
@Api(tags="用户API")
public class UserController {

    @Autowired
    IUserService userService;

    @PostMapping("add")
    @ApiOperation(value="用户新增")
    //正常业务时, 需要在user类内里举办事务节制,节制层一般不举办业务节制的。
    //@Transactional(rollbackFor = Exception.class)
    public Map<String,String> addUser(@Valid @RequestBody UserReq userReq){

        User user = new User();
        user.setCode(userReq.getCode());
        user.setName(userReq.getName());
        //由于配置了主键计策 id可不消赋值 会自动生成
        //user.setId(0L);
        userService.insert(user);
        Map<String,String> result = new HashMap<String,String>();
        result.put("respCode", "01");
        result.put("respMsg", "新增乐成");
        //事务测试
        //System.out.println(1/0);
        return result;
    }

    @PostMapping("update")
    @ApiOperation(value="用户修改")    
    public Map<String,String> updateUser(@Valid @RequestBody UserReq userReq){

        if(userReq.getId() == null || "".equals(userReq.getId())) {
            throw new CommonException("0000", "更新时ID不能为空");
        }
        User user = new User();
        user.setCode(userReq.getCode());
        user.setName(userReq.getName());
        user.setId(Long.parseLong(userReq.getId()));        
        userService.updateById(user);
        Map<String,String> result = new HashMap<String,String>();
        result.put("respCode", "01");
        result.put("respMsg", "更新乐成");
        return result;
    }

    @GetMapping("/get/{id}")
    @ApiOperation(value="用户查询(ID)")    
    @ApiImplicitParam(name="id",value="查询ID",required=true)
    public Map<String,Object> getUser(@PathVariable("id") String id){
        //查询
        User user = userService.selectById(id);
        if(user == null) {
            throw new CommonException("0001", "用户ID:" + id + ",未找到");
        }
        UserResp resp = UserResp.builder()
                .id(user.getId().toString())
                .code(user.getCode())
                .name(user.getName())
                .status(user.getStatus())
                .build();
        Map<String,Object> result = new HashMap<String,Object>();
        result.put("respCode", "01");
        result.put("respMsg", "乐成");
        result.put("data", resp);
        return result;
    }

    @GetMapping("/page")
    @ApiOperation(value="用户查询(分页)")        
    public Map<String,Object> pageUser(int current, int size){
        //分页
        Page<User> page = new Page<>(current, size);
        Map<String,Object> result = new HashMap<String,Object>();
        result.put("respCode", "01");
        result.put("respMsg", "乐成");
        result.put("data", userService.selectPage(page));
        return result;
    }

}