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

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

2018-01-16 23:00 549 查看
Swagger分为2个版本:Swagger1和Swagger2。

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

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

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

1、加入pom

<dependency>
<groupId>com.mangofactory</groupId>
<artifactId>swagger-springmvc</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.4.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.4.4</version>
</dependency>


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

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

[java] view
plain copy

package com.fastcloud.web.front;  

  

import com.mangofactory.swagger.configuration.SpringSwaggerConfig;  

import com.mangofactory.swagger.models.dto.ApiInfo;  

import com.mangofactory.swagger.plugin.EnableSwagger;  

import com.mangofactory.swagger.plugin.SwaggerSpringMvcPlugin;  

import org.springframework.beans.factory.annotation.Autowired;  

import org.springframework.context.annotation.Bean;  

import org.springframework.context.annotation.Configuration;  

import org.springframework.web.servlet.config.annotation.EnableWebMvc;  

  

@Configuration  

@EnableWebMvc  

@EnableSwagger  

public class SwaggerConfig {  

  

    private SpringSwaggerConfig springSwaggerConfig;  

  

    /** 

     * Required to autowire SwaggerConfig 

     */  

    @Autowired  

    public void setSpringSwaggerConfig(SpringSwaggerConfig springSwaggerConfig)  

    {  

        this.springSwaggerConfig = springSwaggerConfig;  

    }  

  

    /** 

     * Every SwaggerSpringMvcPlugin bean is picked up by the swagger-mvc 

     * framework - allowing for multiple swagger groups i.e. same code base 

     * multiple swagger resource listings. 

     */  

    @Bean  

    public SwaggerSpringMvcPlugin customImplementation()  

    {  

        return new SwaggerSpringMvcPlugin(this.springSwaggerConfig).apiInfo(apiInfo()).includePatterns(".*?");  

    }  

  

    private ApiInfo apiInfo()  

    {  

        ApiInfo apiInfo = new ApiInfo(  

                "TP",  

                "TP的H5接口",  

                "http://127.0.0.1:8080",  

                "My Apps API Contact Email",  

                "My Apps API Licence Type",  

                "My Apps API License URL");  

        return apiInfo;  

    }  

}  

3、复制html
https://pan.baidu.com/s/1jI9NKX4
将百度云中api.zip解压到webapp目录下。

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

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

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

[html] view
plain copy

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

<servlet-mapping>  

    <servlet-name>default</servlet-name>  

    <url-pattern>*.jpg</url-pattern>  

</servlet-mapping>  

<servlet-mapping>  

    <servlet-name>default</servlet-name>  

    <url-pattern>*.js</url-pattern>  

</servlet-mapping>  

<servlet-mapping>  

    <servlet-name>default</servlet-name>  

    <url-pattern>*.css</url-pattern>  

</servlet-mapping>  

<servlet-mapping>  

    <servlet-name>default</servlet-name>  

    <url-pattern>*.html</url-pattern>  

</servlet-mapping>   

<servlet-mapping>  

    <servlet-name>default</servlet-name>  

    <url-pattern>*.png</url-pattern>  

</servlet-mapping>   

<servlet-mapping>  

    <servlet-name>default</servlet-name>  

    <url-pattern>*.gif</url-pattern>  

</servlet-mapping>   

    <!-- spring mvc -->  

    <servlet>  

        <servlet-name>mdhy</servlet-name>  

        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  

        <load-on-startup>3</load-on-startup>  

    </servlet>  

    <servlet-mapping>  

        <servlet-name>mdhy</servlet-name>  

        <url-pattern>/</url-pattern>  

    </servlet-mapping>  

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

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

5、打开浏览器

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

我的是
http://127.0.0.1:8910/mdhy/api/index.html
看到红圈地方,这里是数组的,我做了改进,支持数组的对象显示

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