本篇文章是介绍最新的springboot和swagger2.7集成开发和2.0稍微有一些出入:html
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员再也不须要定义样板化的配置。经过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。 —— [ INFO深刻学习]java
开发Spring Boot应用,例如:web
@RestController class App { @RequestMapping("/") String home() { "hello" } }
引入SpringBoot的JAR文件.spring
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.2.7.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency>
编制Main.java
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @EnableAutoConfiguration public class Example { @RequestMapping("/") String index() { return "Hello World!"; } @RequestMapping("/index/{sayHello}") String index(@PathVariable String sayHello) { return "Hello "+sayHello+"!!!"; } }
编写application.properties
application.hellowmsg=Hello World server.port=8081 #端口 logging.level.=INFO
编制Application.javaapache
@EnableScheduling @EnableTransactionManagement @SpringBootApplication public class App extends WebMvcConfigurerAdapter { public static void main(String[] args) throws Exception { SpringApplication app = new SpringApplication(App.class); app.setWebEnvironment(true); app.setShowBanner(false); Set<Object> set = new HashSet<Object>(); // set.add("classpath:applicationContext.xml"); app.setSources(set); app.run(args); }
运行Application.java
看到json
2017-11-15 16:14:08.391 INFO 12524 --- [ main] s.d.s.w.s.ApiListingReferenceScanner : Scanning for api listing references
2017-11-15 16:14:08.607 INFO 12524 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8081 (http)
并无出错,表示成功,直接访问http://localhost:8081/,输出Hello World!api
加入maven的仓库文件浏览器
<!--swagger2 integration --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.7.0</version> </dependency>
建立SwaggerConfig的配置文件springboot
import static com.google.common.collect.Lists.newArrayList; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.fasterxml.classmate.TypeResolver; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.ApiKey; import springfox.documentation.service.AuthorizationScope; import springfox.documentation.service.SecurityReference; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spi.service.contexts.SecurityContext; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; @Configuration @EnableSwagger2 @ConfigurationProperties public class SwaggerConfig { @Value("${swagger.version}") private String version; @Autowired private TypeResolver typeResolver; @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.basePackage("com.hp.ctrl")) .paths(PathSelectors.any()).build().apiInfo(apiInfo()); } private ApiInfo apiInfo() { return new ApiInfoBuilder().title("构建RESTful APIs").description("更多请关注:http://my.csdn.net/elvishehai") .license("The Apache License, Version 2.0") .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html").termsOfServiceUrl("http://my.csdn.net/elvishehai") .version(version).build(); } }
下一步写REST的COTR数据结构
@Api(value = "API - SMSController") @RestController public class SmsController { @ApiOperation(value = "测试服务", notes = "测试服务") @ApiImplicitParam(name = "smsRequestBean", value = "用户详细实体SmsRequestBean", required = true, dataType = "SmsRequestBean") @RequestMapping(value = "/post", method = RequestMethod.POST) public String post(@RequestBody SmsRequestBean smsRequestBean) { return "服务测试成功,你输入的参数为:" + smsRequestBean.getApplicationId(); } @ApiOperation(value = "测试服务", notes = "测试服务", consumes = "application/json", produces = "application/json") @RequestMapping(value = "/test/{input}", method = RequestMethod.GET) @ResponseBody public String getUser(@PathVariable("input") String input) { return "服务测试成功,你输入的参数为:" + input; } }
运行application.java
在浏览器上输入http://localhost:8081/swagger-ui.html
能够看到上面,测试就成功。
在上图请求的页面中,咱们看到user的Value是个输入框?是的,Swagger除了查看接口功能外,还提供了调试测试功能,咱们能够点击上图中右侧的Model Schema(黄色区域:它指明了User的数据结构),此时Value中就有了user对象的模板,咱们只须要稍适修改,点击下方“Try it out!”按钮,便可完成了一次请求调用!
此时,你也能够经过几个GET请求来验证以前的POST请求是否正确。
相比为这些接口编写文档的工做,咱们增长的配置内容是很是少并且精简的,对于原有代码的侵入也在忍受范围以内。所以,在构建RESTful API的同时,加入swagger来对API文档进行管理,是个不错的选择。
+参考信息
http://swagger.io/ Swagger官方网站