您的位置:首页 > 编程语言 > Java开发

SpringBoot 基于swagger实现RESTfulApi风格

2017-10-24 15:02 176 查看

SpringBoot 基于swagger实现RESTfulApi风格

1、swagger概述

  Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。

  Swagger能够实现接口API和文档保持一致性。

2、添加maven依赖

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<swagger.version>2.2.2</swagger.version>
</properties>
<dependencies>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.version}</version>
</dependency>
</dependencies>


3、Swagger配置

/**
* Swagger配置
* @author 陈梓平
* @date 2017/10/24.
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket demoApi(){
return new Docket(DocumentationType.SWAGGER_2)
.groupName("demo")//组名
.genericModelSubstitutes(DeferredResult.class)//通用的模板替代
.useDefaultResponseMessages(false)//是否使用默认响应信息
.forCodeGeneration(true)//通用编码
.pathMapping("/")// base,最终调用接口后会和paths拼接在一起
.select()
.paths(or(regex("/api/.*")))//过滤的接口
.build()
.apiInfo(apiInfo());

}
@Bean
public Docket createRestApi() {
Predicate<RequestHandler> predicate = new Predicate<RequestHandler>() {

@Override
public boolean apply(RequestHandler requestHandler) {
Class<?> declaringClass  = requestHandler.getClass();
if (declaringClass == BasicErrorController.class)// 排除
return false;
if(declaringClass.isAnnotationPresent(RestController.class)) // 被注解的类
return true;
if(declaringClass.isAssignableFrom(ResponseBody.class)) // 被注解的方法
return true;
return false;
}
};
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.useDefaultResponseMessages(false)
.select()
.apis(predicate)
.build();
}
private ApiInfo apiInfo() {
Contact contact = new  Contact();
contact.setName("陈梓平");
contact.setUrl("http://blog.csdn.net/dushiwodecuo");
contact.setEmail("catalpaflat@outlook.com");
return new ApiInfoBuilder()
.title("Electronic Health Record(EHR) Platform API")//大标题
.description("EHR Platform's REST API, all the applications could access the Object model data via JSON.")//详细描述
.version("1.0")//版本
.termsOfServiceUrl("NO terms of service")
.contact("陈梓平")//作者
.license("The Apache License, Version 2.0")
.licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html")
.build();
}
}


4、测试

4.1.配置Controller

/**
* Controller
* @author 陈梓平
* @date 2017/10/24.
*/
@Controller
@RequestMapping(value = "/api")
public class DemoController {
private Logger logger = LoggerFactory.getLogger(DemoController.class);
/**
* 可以直接使用@ResponseBody响应JSON
* @return
*/
@RequestMapping(value = "/getcount", method = RequestMethod.POST)
@ApiOperation(value="测试-getCount", notes="getCount更多说明")
@ResponseBody
public ModelMap getCount() {
logger.info(">>>>>>>> begin getCount >>>>>>>>");
ModelMap map = new ModelMap();
map.addAttribute("count", 158);
// 后台获取的国际化信息
map.addAttribute("xstest", "测试");
return map;
}
}


4.2 测试

浏览器访问:http://localhost:8080/swagger-ui.html



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐