我是如何快速搭建swagger,并自定义修改逻辑代码

Swagger分为2个版本:Swagger1和Swagger2。

Swagger2需要spring4。我们接下来的项目采用是Swagger1,因为好多公司项目并不是升级到spring4的


网上一搜文档几乎全是一样的,连标点符号都一样,错误的地方都一样,我不信所有人都亲自实验过,反正我实验了都各种报错。

Swagger1的ui的版本特别多,和后端接口也不匹配,我找了很多,然后找到一个版本差不多合适的,再自己修改源码。


1、加入pom


    com.mangofactory
    swagger-springmvc
    1.0.2


    com.fasterxml.jackson.core
    jackson-annotations
    2.4.4


    com.fasterxml.jackson.core
    jackson-databind
    2.4.4


    com.fasterxml.jackson.core
    jackson-core
    2.4.4

2、swaggerconfig。配置一些自己的信息而已,会在api首页显示

根本不需要像网上说的spring.xml配置那么多内容,什么都不配置即可。放到controller类一起

[java]  view plain  copy
  1. package com.fastcloud.web.front;  
  2.   
  3. import com.mangofactory.swagger.configuration.SpringSwaggerConfig;  
  4. import com.mangofactory.swagger.models.dto.ApiInfo;  
  5. import com.mangofactory.swagger.plugin.EnableSwagger;  
  6. import com.mangofactory.swagger.plugin.SwaggerSpringMvcPlugin;  
  7. import org.springframework.beans.factory.annotation.Autowired;  
  8. import org.springframework.context.annotation.Bean;  
  9. import org.springframework.context.annotation.Configuration;  
  10. import org.springframework.web.servlet.config.annotation.EnableWebMvc;  
  11.   
  12. @Configuration  
  13. @EnableWebMvc  
  14. @EnableSwagger  
  15. public class SwaggerConfig {  
  16.   
  17.     private SpringSwaggerConfig springSwaggerConfig;  
  18.   
  19.     /** 
  20.      * Required to autowire SwaggerConfig 
  21.      */  
  22.     @Autowired  
  23.     public void setSpringSwaggerConfig(SpringSwaggerConfig springSwaggerConfig)  
  24.     {  
  25.         this.springSwaggerConfig = springSwaggerConfig;  
  26.     }  
  27.   
  28.     /** 
  29.      * Every SwaggerSpringMvcPlugin bean is picked up by the swagger-mvc 
  30.      * framework - allowing for multiple swagger groups i.e. same code base 
  31.      * multiple swagger resource listings. 
  32.      */  
  33.     @Bean  
  34.     public SwaggerSpringMvcPlugin customImplementation()  
  35.     {  
  36.         return new SwaggerSpringMvcPlugin(this.springSwaggerConfig).apiInfo(apiInfo()).includePatterns(".*?");  
  37.     }  
  38.   
  39.     private ApiInfo apiInfo()  
  40.     {  
  41.         ApiInfo apiInfo = new ApiInfo(  
  42.                 "TP",  
  43.                 "TP的H5接口",  
  44.                 "http://127.0.0.1:8080",  
  45.                 "My Apps API Contact Email",  
  46.                 "My Apps API Licence Type",  
  47.                 "My Apps API License URL");  
  48.         return apiInfo;  
  49.     }  
  50. }  

3、复制html

https://pan.baidu.com/s/1jI9NKX4

将百度云中api.zip解压到webapp目录下。

此时后端接口已经结束,复制html是为了更好显示,如果你直接看json也没关系。后端的接口名是/api-docs


(1)修改总的接口列表访问地址

打开项目的api/index.html。找到

[html]  view plain  copy
  1. url: "/mdhy/api-docs"  
将mdhy修改成自己的项目访问名, http://127.0.0.1/{项目名}/api-docs

如果无项目名的,那就删掉。

意思是 ajax的http://127.0.0.1/api-docs可以访问

(2)修改在线测试的请求路径

搜索api/lib/swagger.js里的“SwaggerOperation.prototype.urlify”,将this.resource.basePath的值配置成你的访问根目录,这里是在线测试点击try it out 时候访问的。f12监控下看看


4、修改后端路径


引入swagger的jar包含一个路径的controller。这里会生成一个根目录下的访问接口  /api-docs

如果你的项目都是*.action的,*.do的,那么访问就是/api-docs.action,/api-docs.do。

但是swagger ui访问的接口都是无后缀的,总不能把所有的js都修改了。所以如果你的项目有,比如*.do,那么修改成无后缀的。如果改成无后缀就得处理静态文件的问题。

web.xml里边设置

[html]  view plain  copy
  1. <servlet-mapping>  
  2.     <servlet-name>defaultservlet-name>  
  3.     <url-pattern>*.jpgurl-pattern>  
  4. servlet-mapping>  
  5. <servlet-mapping>  
  6.     <servlet-name>defaultservlet-name>  
  7.     <url-pattern>*.jsurl-pattern>  
  8. servlet-mapping>  
  9. <servlet-mapping>  
  10.     <servlet-name>defaultservlet-name>  
  11.     <url-pattern>*.cssurl-pattern>  
  12. servlet-mapping>  
  13. <servlet-mapping>  
  14.     <servlet-name>defaultservlet-name>  
  15.     <url-pattern>*.htmlurl-pattern>  
  16. servlet-mapping>   
  17. <servlet-mapping>  
  18.     <servlet-name>defaultservlet-name>  
  19.     <url-pattern>*.pngurl-pattern>  
  20. servlet-mapping>   
  21. <servlet-mapping>  
  22.     <servlet-name>defaultservlet-name>  
  23.     <url-pattern>*.gifurl-pattern>  
  24. servlet-mapping>   
  25.       
  26.     <servlet>  
  27.         <servlet-name>mdhyservlet-name>  
  28.         <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>  
  29.         <load-on-startup>3load-on-startup>  
  30.     servlet>  
  31.     <servlet-mapping>  
  32.         <servlet-name>mdhyservlet-name>  
  33.         <url-pattern>/url-pattern>  
  34.     servlet-mapping>  


5、随便找一个controller了,添加注释的参数

具体我就不说了,这块基本没问题


5、打开浏览器

访问即可http://127.0.0.1:8910/{项目名}/api/index.html

我的是

http://127.0.0.1:8910/mdhy/api/index.html

看到红圈地方,这里是数组的,我做了改进,支持数组的对象显示

我是如何快速搭建swagger,并自定义修改逻辑代码_第1张图片


你可能感兴趣的:(我是如何快速搭建swagger,并自定义修改逻辑代码)