官方介绍:Swagger是一个规范且完整的框架,提供描述、生产、消费和可视化RESTful Web Service。
专业角度:Swagger是由庞大工具集合支撑的形式化规范。这个集合涵盖了从终端用户接口、底层代码库到商业API管理的方方面面。html
<!-- 设置使用注解的类所在的jar包,只加载controller类 --> 前端
packagecom.jay.plat.config.util; importorg.springframework.context.annotation.Bean; importorg.springframework.context.annotation.ComponentScan; importorg.springframework.context.annotation.Configuration; importorg.springframework.web.servlet.config.annotation.EnableWebMvc; importorg.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; importspringfox.documentation.builders.ApiInfoBuilder; importspringfox.documentation.builders.PathSelectors; importspringfox.documentation.builders.RequestHandlerSelectors; importspringfox.documentation.service.ApiInfo; importspringfox.documentation.spi.DocumentationType; importspringfox.documentation.spring.web.plugins.Docket; importspringfox.documentation.swagger2.annotations.EnableSwagger2; /* *RestfulAPI访问路径: *http://IP:port/{context-path}/swagger-ui.html *eg:http://localhost:8080/jd-config-web/swagger-ui.html */ @EnableWebMvc @EnableSwagger2 @ComponentScan(basePackages = {"com.<spanstyle="font - family:Arial, Helvetica, sans-serif;">jay.</span>plat.config.controller"}) @Configuration publicclassRestApiConfigextendsWebMvcConfigurationSupport{ @Bean publicDocketcreateRestApi(){ returnnewDocket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.jay.plat.config.controller")) .paths(PathSelectors.any()) .build(); } privateApiInfoapiInfo(){ returnnewApiInfoBuilder() .title("Spring中使用Swagger2构建RESTfulAPIs") .termsOfServiceUrl("http://blog.csdn.net/he90227") .contact("逍遥飞鹤") .version("1.1") .build(); } }
配置说明:java
packagecom.jay.spring.boot.demo10.swagger2.controller; importjava.util.ArrayList; importjava.util.Collections; importjava.util.HashMap; importjava.util.List; importjava.util.Map; importorg.springframework.web.bind.annotation.PathVariable; importorg.springframework.web.bind.annotation.RequestBody; importorg.springframework.web.bind.annotation.RequestMapping; importorg.springframework.web.bind.annotation.RequestMethod; importorg.springframework.web.bind.annotation.RestController; importcom.jay.spring.boot.demo10.swagger2.bean.User; importio.swagger.annotations.ApiImplicitParam; importio.swagger.annotations.ApiImplicitParams; importio.swagger.annotations.ApiOperation; @RestController @RequestMapping(value = "/users")//经过这里配置使下面的映射都在/users下,可去除 publicclassUserController{ staticMap<Long, User>users=Collections.synchronizedMap(newHashMap<Long, User>()); @ApiOperation(value = "获取用户列表", notes = "") @RequestMapping(value = {""}, method = RequestMethod.GET) publicList<User>getUserList(){ List<User>r=newArrayList<User>(users.values()); returnr; } @ApiOperation(value = "建立用户", notes = "根据User对象建立用户") @ApiImplicitParam(name = "user", value = "用户详细实体user", required = true, dataType = "User") @RequestMapping(value = "", method = RequestMethod.POST) publicStringpostUser(@RequestBodyUseruser){ 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) publicUsergetUser(@PathVariableLongid){ returnusers.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) publicStringputUser(@PathVariableLongid,@RequestBodyUseruser){ Useru=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) publicStringdeleteUser(@PathVariableLongid){ users.remove(id); return"success"; } }
4.效果展现程序员
参考http://blog.csdn.net/jia20003/article/details/50700736web