SpringBoot集成Swagger2实现Restful(类型转换错误解决办法)

来源:互联网 发布:统计学毕业论文数据 编辑:程序博客网 时间:2024/05/16 16:08

pom.xml增加依赖包

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

编写swapper2配置类

package com.zyank;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.spi.DocumentationType;import springfox.documentation.spring.web.plugins.Docket;import springfox.documentation.swagger2.annotations.EnableSwagger2;@Configuration@EnableSwagger2public class Swagger2 {    @Bean    public Docket createRestApi() {        return new Docket(DocumentationType.SWAGGER_2)                .apiInfo(apiInfo())                .select()                .apis(RequestHandlerSelectors.basePackage("com.zyank.web"))                .paths(PathSelectors.any())                .build();    }    private ApiInfo apiInfo(){        return new ApiInfoBuilder()                .title("Spring Boot中试用Swagger2构建的RESTful APIs")                .description("更多Spring Boot相关文章请关注:http://blog.didispace.com/")                .termsOfServiceUrl("http://blog.didispace.com/")                .contact("leo")                .version("1.0")                .build();    }}

Controller内使用

package com.zyank.web;import java.util.ArrayList;import java.util.Collections;import java.util.HashMap;import java.util.List;import java.util.Map;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;import com.zyank.domain.User;import io.swagger.annotations.ApiImplicitParam;import io.swagger.annotations.ApiImplicitParams;import io.swagger.annotations.ApiOperation;@RestController@RequestMapping(value="/users")public class UserContrller {    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, paramType="path", 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, paramType="path", 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";        }}

如果上诉代码没有写paramType = “path” 会提示类型转换String convert to Long错误。

文章参考:http://blog.csdn.net/hpym365/article/details/56675686

阅读全文
1 0