Swagger 在 Java 项目中的集成应用

文章 未结 精帖 0 528
无法显示用户头像
admin 5 钻石
2018-03-30 10:19:42
什么是 Swagger?一句话通俗的概述: [pre] Swagger 是一款 RESTFUL 接口的文档在线自动生成 + 接口功能测试功能软件。 [/pre] 另外,它号称“世界最流行的API框架”,官网: a(http://swagger.io)[http://swagger.io]  它解决了什么问题:在前后台分离的开发模式中,减小接口定义沟通成本,方便开发过程中测试,自动生成接口文档给前端。 Swagger 的两种使用方式 1)、定义 yml 文件,然后可以生成各种语言的代码框架,对于后台程序员来说,较少人会愿意写出一堆 yml 格式。 2)、Swagger 有各种语言的插件,可以通过配置及少量代码,生成接口文档及测试界面。 我们多做的东西有:一次性的配置及少量注解代码。 我们不用再做的东西有:到Wiki中更新接口文档、Postman形式的测试、Curl形式的测试。 Swagger 在 springMVC 项目中的集成 1)、pom 文件添加如下依赖: [pre] <!-- Swagger -->   <dependency>       <groupId>io.swagger</groupId>       <artifactId>swagger-core</artifactId>       <version>1.5.8</version>   </dependency>   <dependency>       <groupId>io.springfox</groupId>       <artifactId>springfox-swagger2</artifactId>       <version>2.4.0</version>   </dependency>   <dependency>       <groupId>io.springfox</groupId>       <artifactId>springfox-swagger-ui</artifactId>       <version>2.4.0</version>   </dependency>  [/pre] 2)、SwaggerConfiguration.java 配置类 [pre] @Configuration   @EnableSwagger2   public class SwaggerConfiguration {       @Bean       public Docket api() {           return new Docket(DocumentationType.SWAGGER_2)                   .select()                   .apis(RequestHandlerSelectors.any())                   .paths(PathSelectors.any())                   .build();       }   }   [/pre] 3)、SwaggerWebMvcConfigurerAdapter.java 配置类 [pre] @Configuration   @EnableWebMvc   @ComponentScan(basePackages = "com.xx.travel.csc.stat.controller")   public class SwaggerWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter {       @Bean       public ViewResolver viewResolver() {           InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();           viewResolver.setViewClass(JstlView.class);           viewResolver.setPrefix("/WEB-INF/views/");           viewResolver.setSuffix(".jsp");           return viewResolver;       }       @Bean       public MessageSource messageSource() {           ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();           messageSource.setBasename("messages");           return messageSource;       }       @Override       public void addResourceHandlers(ResourceHandlerRegistry registry) {           super.addResourceHandlers(registry);           registry.addResourceHandler("swagger-ui.html")                   .addResourceLocations("classpath:/META-INF/resources/");           registry.addResourceHandler("/webjars/**")                   .addResourceLocations("classpath:/META-INF/resources/webjars/");       }       @Override       public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {           configurer.enable();       }   }   [/pre] 4)、Controller实例 只要在我们的 Controller 里面增加注解 ApiOperation 和 ApiParam 即可: [pre] @Controller   @RequestMapping(value = "/stat")   public class SwaggerController {       @ResponseBody       @RequestMapping(value = "/helloworld", method = RequestMethod.GET)       @ApiOperation(nickname = "swagger-helloworld", value = "Swagger的世界", notes = "测试HelloWorld")       public String helloWorld(@ApiParam(value = "昵称") @RequestParam String nickname) {           return "Hello world, " + nickname;       }       @ResponseBody       @RequestMapping(value = "/objectio", method = RequestMethod.POST)       @ApiOperation(nickname = "swagger-objectio", value = "Swagger的ObjectIO", notes = "测试对象输入输出")       public SwaggerOutput objectIo(@ApiParam(value = "输入") @RequestBody SwaggerInput input) {           SwaggerOutput output = new SwaggerOutput();           output.setId(input.getId());           output.setName("Swagger");           return output;       }   }   [/pre] 5)、web 操作界面 完成以上集成配置后,启动项目,输入http://${path}/swagger-ui.html,就可以给前端展示相关的 API 文档,并像使用 Postman 以及 Curl 命令一样,通过 web 界面进行接口测试: img[http://newecode1024.oss-cn-hongkong.aliyuncs.com/100354b0-1f7a-4589-893b-f94fb6b4f744.jpg] 

上一篇: 熬夜并不值得程序员炫耀

下一篇: Java 的接口数据如何加密?

声明:本文所有观点仅代表创作者本人,ECode1024系信息收集发布平台,ECode1024仅提供信息存储以及展示服务。若有侵权,请联系我们删除。
回复
  • 暂无任何回复,抢个沙发吧~~