• RESTful API的重磅好伙伴Swagger2


    本文将介绍RESTful API的重磅好伙伴Swagger2,它可以轻松的整合到Spring Boot中,并与Spring MVC程序配合组织出强大RESTful API文档。

    它既可以减少我们创建文档的工作量,同时说明内容又整合入实现代码中,让维护文档和修改代码整合为一体,可以让我们在修改代码逻辑的同时方便的修改文档说明。

    另外Swagger2也提供了强大的页面测试功能来调试每个RESTful API。

    添加Swagger2依赖

    在pom.xml中添加Swagger2的依赖

    复制代码
      <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.2.2</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.2.2</version></dependency>
    复制代码

    创建Swagger2的配置类

    在com.qhong包下创建Swagger2类

    复制代码
    @Configuration
    @EnableSwagger2
    public class Swagger2 {
    
        @Bean
        public Docket createRestApi() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .select()
                    .apis(RequestHandlerSelectors.basePackage("com.qhong.web"))
                    .paths(PathSelectors.any())
                    .build();
        }
    
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder()
                    .title("Spring Boot中使用Swagger2构建Restful Api")
                    .description("更多Spring Boot相关文章请关注:http://www.baidu.com/")
                    .termsOfServiceUrl("http://www.baidu.com/")
                    .contact("qhong")
                    .version("1.0")
                    .build();
        }
    }
    复制代码

    添加Controller接口

    创建com.qhong.domain包,在里面创建User类

    复制代码
    public class User {
        private Long id;
        private String name;
        private Integer age;
    
        public Long getId() {
            return id;
        }
    
        public void setId(Long id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    }
    复制代码

    在com.qhong.web下创建UserController类

    复制代码
    @RestController
    @RequestMapping(value="/users")
    
    public class UserController {
    
        static Map<Long, User> users = Collections.synchronizedMap(new HashMap<Long, User>());
    
        @ApiOperation(value="获取用户列表", notes="")
        @RequestMapping(value={""}, method= RequestMethod.GET)
        public List<User> getUserList() {
            List<User> r = new ArrayList<User>(users.values());
            return r;
        }
    
        @ApiOperation(value="创建用户", notes="根据User对象创建用户")
        @ApiImplicitParam(name = "user", value = "用户详细实体user", required = true, dataType = "User")
        @RequestMapping(value="", method=RequestMethod.POST)
        public String postUser(@RequestBody User user) {
            users.put(user.getId(), user);
            return "success";
        }
    
        @ApiOperation(value="获取用户详细信息", notes="根据url的id来获取用户详细信息")
        @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long")
        @RequestMapping(value="/{id}", method=RequestMethod.GET)
        public User getUser(@PathVariable Long id) {
            return users.get(id);
        }
    
        @ApiOperation(value="更新用户详细信息", notes="根据url的id来指定更新对象,并根据传过来的user信息来更新用户详细信息")
        @ApiImplicitParams({
                @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long"),
                @ApiImplicitParam(name = "user", value = "用户详细实体user", required = true, dataType = "User")
        })
        @RequestMapping(value="/{id}", method=RequestMethod.PUT)
        public String putUser(@PathVariable Long id, @RequestBody User user) {
            User u = users.get(id);
            u.setName(user.getName());
            u.setAge(user.getAge());
            users.put(id, u);
            return "success";
        }
    
        @ApiOperation(value="删除用户", notes="根据url的id来指定删除对象")
        @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long")
        @RequestMapping(value="/{id}", method=RequestMethod.DELETE)
        public String deleteUser(@PathVariable Long id) {
            users.remove(id);
            return "success";
        }
    }
    复制代码

    @ApiOperation

    @ApiImplicitParam

    @ApiImplicitParams

    用于描述创建的api

    编译运行:

    在HelloController中

    复制代码
    @RestController
    public class HelloController {
    
        //@ApiIgnore
        @RequestMapping(value="/hello",method= RequestMethod.GET)
        public String Index(){
            return "hello world!";
        }
    }
    复制代码

    如果添加@ApiIgnore,该Controller就会被忽略。

     

    参考:http://blog.didispace.com/springbootswagger2/


    来源:http://www.cnblogs.com/hongdada/p/5892927.html





  • 相关阅读:
    开源C# WPF控件库推荐
    免费文件存储分享网站合集
    开源C# WPF控件库《AduSkin – UI》
    Takeown、Cacls、Icacls文件、文件夹夺权用法
    教你win7系统手动导入注册表获取管理员权限
    开源Winform控件库:花木兰控件库
    解决Win10账户没有了管理员权限
    WIN7下命令行修改注册表提示拒绝访问的解决
    PEiD查壳软件
    Proxifer+BurpSuite 抓取PC客户端HTTP(s)数据包
  • 原文地址:https://www.cnblogs.com/jeffen/p/6178000.html
Copyright © 2020-2023  润新知