zoukankan      html  css  js  c++  java
  • SpringMVC+Swagger详细整合

    一、新建maven工程导入正确的pom文件

    还是那句话,包导入正确就成功了80%。剩下的20%慢慢攻克吧。

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.apidoc.demotest</groupId>
      <artifactId>apidoc</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>war</packaging>
      <properties>
    		<spring.version>4.1.7.RELEASE</spring.version>
    		<version.jackson>2.4.4</version.jackson>
    		<swagger.version>2.2.2</swagger.version>
    	</properties>
    
    	<dependencies>
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-webmvc</artifactId>
    			<version>${spring.version}</version>
    		</dependency>
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-core</artifactId>
    			<version>${spring.version}</version>
    		</dependency>
    		<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>${version.jackson}</version>
    		</dependency>
    		<dependency>
    			<groupId>com.fasterxml.jackson.core</groupId>
    			<artifactId>jackson-databind</artifactId>
    			<version>${version.jackson}</version>
    		</dependency>
    		<dependency>
    			<groupId>com.fasterxml.jackson.core</groupId>
    			<artifactId>jackson-core</artifactId>
    			<version>${version.jackson}</version>
    		</dependency>
    		<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>2.5.0</version>
    		</dependency>
    		<dependency>
    			<groupId>javax.servlet</groupId>
    			<artifactId>javax.servlet-api</artifactId>
    			<scope>provided</scope>
    			<version>3.1.0</version>
    		</dependency>
    		<!--petstore是官方的一个demo,加入此依赖是为了稍后参考接口描述的编写 -->
    		<dependency>
    			<groupId>io.springfox</groupId>
    			<artifactId>springfox-petstore</artifactId>
    			<version>${swagger.version}</version>
    		</dependency>
    
    		<!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-web</artifactId>
    			<version>4.1.9.RELEASE</version>
    		</dependency>
    
    
    		<dependency>
    			<groupId>log4j</groupId>
    			<artifactId>log4j</artifactId>
    			<version>1.2.17</version>
    		</dependency>
    		<dependency>
    			<groupId>ch.qos.logback</groupId>
    			<artifactId>logback-classic</artifactId>
    			<version>1.1.2</version>
    		</dependency>
    		<dependency>
    			<groupId>ch.qos.logback</groupId>
    			<artifactId>logback-core</artifactId>
    			<version>1.1.2</version>
    		</dependency>
    		<dependency>
    			<groupId>org.logback-extensions</groupId>
    			<artifactId>logback-ext-spring</artifactId>
    			<version>0.1.1</version>
    		</dependency>
    
    		<dependency>
    			<groupId>net.sf.json-lib</groupId>
    			<artifactId>json-lib</artifactId>
    			<version>2.4</version>
    			<classifier>jdk15</classifier>
    		</dependency>
    
    	</dependencies>
    
    
    	<build>
    		<plugins>
    
    
    			<plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-compiler-plugin</artifactId>
    				<version>2.0.2</version>
    				<configuration>
    					<source>1.8</source>
    					<target>1.8</target>
    				</configuration>
    			</plugin>
    
    
    
    
    		</plugins>
    
    
    
    
    	</build>
    	
    </project>
    

     二、建包并创建对应java文件

    (1)

    package com.apidoc.config;
    
    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;
    
    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;
    
    @Configuration
    @EnableSwagger
    @EnableWebMvc
    public class SwaggerConfig {
    
        private SpringSwaggerConfig springSwaggerConfig;
    
        /**
         * Required to autowire SpringSwaggerConfig
         */
        @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(".*pet.*");*/
            return new SwaggerSpringMvcPlugin(this.springSwaggerConfig).apiInfo(apiInfo());
        }
    
        private ApiInfo apiInfo() {
            ApiInfo apiInfo = new ApiInfo(
                      "My Apps API Title",
                      "My Apps API Description",
                      "My Apps API terms of service",
                      "My Apps API Contact Email",
                      "My Apps API Licence Type",
                      "My Apps API License URL"
                );
            return apiInfo;
        }
    }
    

     (2)

    package com.apidoc.model;
    
    
    public class User{
        
        private String Id;
        private String Name;
        private Integer Age;
        public String getId() {
            return Id;
        }
        public void setId(String id) {
            Id = id;
        }
        public String getName() {
            return Name;
        }
        public void setName(String name) {
            Name = name;
        }
        public Integer getAge() {
            return Age;
        }
        public void setAge(Integer age) {
            Age = age;
        }
        
        
        
    }

    (3)

    package com.apidoc.webservice;
    
    import javax.servlet.http.HttpServletRequest;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import com.apidoc.model.User;
    import com.wordnik.swagger.annotations.ApiOperation;
    import com.wordnik.swagger.annotations.ApiParam;
    
    import net.sf.json.JSONObject;
    
    /**
     * @moudle: WebServiceForCSS
     * @version:v1.0
     * @Description: TODO
     * @author: xukai
     * @date: 2016年12月1日 下午5:37:30
     *
     */
    @Controller
    public class WebServiceForCSS {
    
        @ResponseBody
        @RequestMapping(value = "getUserById", method = RequestMethod.GET, produces = {"application/json; charset=utf-8","application/xml"})
        @ApiOperation(value = "通过ID查询USER信息", httpMethod = "POST", notes = "暂无")
        public String getUserById(
                @ApiParam(required = true, name = "id", value = "ID") 
                @RequestParam(value = "id") String id,HttpServletRequest request) {
            User user = new User();
            user.setId(id);
            user.setName("测试人员");
            user.setAge(25);
            JSONObject object = JSONObject.fromObject(user);
            return object.toString();
        }
    }

    三、根据web.xml建立spring文件夹以及springmvc和spring相关的xml文件

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns="http://java.sun.com/xml/ns/javaee"
             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
             id="WebApp_ID" version="2.5">
    
        <display-name>SwaggerDemo</display-name>
    
       <!--
            - Location of the XML file that defines the root application context.
            - Applied by ContextLoaderListener.
        -->
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring/application-config.xml</param-value>
        </context-param>
    
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
    
    
        <!--
            - Servlet that dispatches request to registered handlers (Controller implementations).
        -->
        <servlet>
            <servlet-name>dispatcherServlet</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>/WEB-INF/mvc-config.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>dispatcherServlet</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
        
            <servlet-mapping>
            <servlet-name>default</servlet-name>
            <url-pattern>*.jpg</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>
        <servlet-mapping>
            <servlet-name>default</servlet-name>
            <url-pattern>*.ico</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>*.xls</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>default</servlet-name>
            <url-pattern>*.doc</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>default</servlet-name>
            <url-pattern>*.json</url-pattern>
        </servlet-mapping>
        <!-- 字体相关  开始 -->
        <servlet-mapping>
            <servlet-name>default</servlet-name>
            <url-pattern>*.eot</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>default</servlet-name>
            <url-pattern>*.svg</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>default</servlet-name>
            <url-pattern>*.ttf</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>default</servlet-name>
            <url-pattern>*.woff</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>default</servlet-name>
            <url-pattern>*.woff2</url-pattern>
        </servlet-mapping>
        <!-- 字体相关  结束 -->
        <welcome-file-list>
            <welcome-file>index.html</welcome-file>
            <welcome-file>index.htm</welcome-file>
            <welcome-file>index.jsp</welcome-file>
            <welcome-file>default.html</welcome-file>
            <welcome-file>default.htm</welcome-file>
            <welcome-file>default.jsp</welcome-file>
        </welcome-file-list>
    
    </web-app>
    

    在上述的基础上开始建立xml配置文件

    (1)

    <?xml version="1.0" encoding="UTF-8"?>
    
    <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    
    
    
    
    
    
            <mvc:annotation-driven /> <!-- mvc-config.xml中的可以去掉 -->
            <context:component-scan base-package="com.apidoc"/>
            <bean class="com.apidoc.config.SwaggerConfig"/>
    
    
    
    
    
    
    </beans>
    

    (2)

    <?xml version="1.0" encoding="UTF-8"?>
    
    <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    
        <!-- Uncomment and your base-package here:
             <context:component-scan
                base-package="org.springframework.samples.web"/>  -->
    
    
    
    
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                <!-- Example: a logical view name of 'showMessage' is mapped to '/WEB-INF/jsp/showMessage.jsp' -->
                <property name="prefix" value="/WEB-INF/view/"/>
                <property name="suffix" value=".jsp"/>
        </bean>
    
    </beans>

    四、进入swagger相关的github网站下载的swagger版本

    网址如下:

    https://github.com/swagger-api/swagger-ui

    下载成功后,将dist目录拷贝到webapp目录下

    拷贝成功后,将拷贝的dist目录下的index.html文件中的url修改为自己项目文档路径

    <!-- HTML for static distribution bundle build -->
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Swagger UI</title>
      <link href="https://fonts.googleapis.com/css?family=Open+Sans:400,700|Source+Code+Pro:300,600|Titillium+Web:400,600,700" rel="stylesheet">
      <link rel="stylesheet" type="text/css" href="./swagger-ui.css" >
      <link rel="icon" type="image/png" href="./favicon-32x32.png" sizes="32x32" />
      <link rel="icon" type="image/png" href="./favicon-16x16.png" sizes="16x16" />
      <style>
        html
        {
            box-sizing: border-box;
            overflow: -moz-scrollbars-vertical;
            overflow-y: scroll;
        }
        *,
        *:before,
        *:after
        {
            box-sizing: inherit;
        }

        body {
          margin:0;
          background: #fafafa;
        }
      </style>
    </head>

    <body>

    <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="position:absolute;0;height:0">
      <defs>
        <symbol viewBox="0 0 20 20" id="unlocked">
              <path d="M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V6h2v-.801C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8z"></path>
        </symbol>

        <symbol viewBox="0 0 20 20" id="locked">
          <path d="M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8zM12 8H8V5.199C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8z"/>
        </symbol>

        <symbol viewBox="0 0 20 20" id="close">
          <path d="M14.348 14.849c-.469.469-1.229.469-1.697 0L10 11.819l-2.651 3.029c-.469.469-1.229.469-1.697 0-.469-.469-.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-.469-.469-.469-1.228 0-1.697.469-.469 1.228-.469 1.697 0L10 8.183l2.651-3.031c.469-.469 1.228-.469 1.697 0 .469.469.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c.469.469.469 1.229 0 1.698z"/>
        </symbol>

        <symbol viewBox="0 0 20 20" id="large-arrow">
          <path d="M13.25 10L6.109 2.58c-.268-.27-.268-.707 0-.979.268-.27.701-.27.969 0l7.83 7.908c.268.271.268.709 0 .979l-7.83 7.908c-.268.271-.701.27-.969 0-.268-.269-.268-.707 0-.979L13.25 10z"/>
        </symbol>

        <symbol viewBox="0 0 20 20" id="large-arrow-down">
          <path d="M17.418 6.109c.272-.268.709-.268.979 0s.271.701 0 .969l-7.908 7.83c-.27.268-.707.268-.979 0l-7.908-7.83c-.27-.268-.27-.701 0-.969.271-.268.709-.268.979 0L10 13.25l7.418-7.141z"/>
        </symbol>


        <symbol viewBox="0 0 24 24" id="jump-to">
          <path d="M19 7v4H5.83l3.58-3.59L8 6l-6 6 6 6 1.41-1.41L5.83 13H21V7z"/>
        </symbol>

        <symbol viewBox="0 0 24 24" id="expand">
          <path d="M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"/>
        </symbol>

      </defs>
    </svg>

    <div id="swagger-ui"></div>

    <script src="./swagger-ui-bundle.js"> </script>
    <script src="./swagger-ui-standalone-preset.js"> </script>
    <script>
    window.onload = function() {
     
      // Build a system
      const ui = SwaggerUIBundle({
        //url: "http://petstore.swagger.io/v2/swagger.json",
        url: "http://localhost:8080/apidoc/swagger.json",
        dom_id: '#swagger-ui',
        deepLinking: true,
        presets: [
          SwaggerUIBundle.presets.apis,
          SwaggerUIStandalonePreset
        ],
        plugins: [
          SwaggerUIBundle.plugins.DownloadUrl
        ],
        layout: "StandaloneLayout"
      })

      window.ui = ui
    }
    </script>
    </body>

    </html>












    <symbol viewBox="0 0 24 24" id="jump-to"> <path d="M19 7v4H5.83l3.58-3.59L8 6l-6 6 6 6 1.41-1.41L5.83 13H21V7z"/> </symbol> <symbol viewBox="0 0 24 24" id="expand"> <path d="M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"/> </symbol> </defs> </svg> <div id="swagger-ui"></div> <script src="./swagger-ui-bundle.js"> </script> <script src="./swagger-ui-standalone-preset.js"> </script> <script> window.onload = function() { // Build a system const ui = SwaggerUIBundle({ //url: "http://petstore.swagger.io/v2/swagger.json", //这里是默认的官方地址,将其改为自己项目的地址 url: "http://localhost:8080/apidoc/swagger.json", dom_id: '#swagger-ui', deepLinking: true, presets: [ SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset ], plugins: [ SwaggerUIBundle.plugins.DownloadUrl ], layout: "StandaloneLayout" }) window.ui = ui } </script> </body> </html>

     五、新建一个json文件,配置如下

    {
        "swagger": "2.0",
        "info": {
            "description": "swagger-ui的汉化版本",
            "version": "1.0.0",
            "title": "汉化版Swagger-UI",
            "termsOfService": "http://swagger.io/terms/",
            "contact": {
                "email": "helei5200@126.com"
            },
            "license": {
                "name": "Apache 2.0",
                "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
            }
        },
        "host": "petstore.swagger.io",
        "basePath": "/v2",
        "tags": [
            {
                "name": "pet",
                "description": "有关你宠物的所有事情!",
                "externalDocs": {
                    "description": "Find out more",
                    "url": "http://swagger.io"
                }
            },
            {
                "name": "store",
                "description": "访问宠物商店订单!"
            },
            {
                "name": "user",
                "description": "操作用户相关!",
                "externalDocs": {
                    "description": "Find out more about our store",
                    "url": "http://swagger.io"
                }
            }
        ],
        "schemes": [
            "http"
        ],
        "paths": {
            "/pet": {
                "post": {
                    "tags": [
                        "pet"
                    ],
                    "summary": "添加一个新宠物到商店!",
                    "description": "",
                    "author": "helei 更新于 2015/06/17 19:56",
                    "operationId": "addUser",
                    "consumes": [
                        "application/json",
                        "application/xml"
                    ],
                    "produces": [
                        "application/xml",
                        "application/json"
                    ],
                    "parameters": [
                        {
                            "in": "body",
                            "name": "body",
                            "description": "Pet object that needs to be added to the store",
                            "required": true,
                            "schema": {
                                "$ref": "#/definitions/Pet"
                            }
                        }
                    ],
                    "responses": {
                        "405": {
                            "description": "Invalid input"
                        }
                    },
                    "security": [
                        {
                            "petstore_auth": [
                                "write:pets",
                                "read:pets"
                            ]
                        }
                    ]
                },
                "put": {
                    "tags": [
                        "pet"
                    ],
                    "summary": "更新存在的宠物信息",
                    "description": "",
                    "author": "helei 更新于 2015/06/17 19:56",
                    "operationId": "updatePet",
                    "consumes": [
                        "application/json",
                        "application/xml"
                    ],
                    "produces": [
                        "application/xml",
                        "application/json"
                    ],
                    "parameters": [
                        {
                            "in": "body",
                            "name": "body",
                            "description": "Pet object that needs to be added to the store",
                            "required": true,
                            "schema": {
                                "$ref": "#/definitions/Pet"
                            }
                        }
                    ],
                    "responses": {
                        "400": {
                            "description": "Invalid ID supplied"
                        },
                        "404": {
                            "description": "Pet not found"
                        },
                        "405": {
                            "description": "Validation exception"
                        }
                    },
                    "security": [
                        {
                            "petstore_auth": [
                                "write:pets",
                                "read:pets"
                            ]
                        }
                    ]
                }
            },
            "/pet/findByStatus": {
                "get": {
                    "tags": [
                        "pet"
                    ],
                    "summary": "根据状态查找宠物",
                    "description": "Multiple status values can be provided with comma seperated strings",
                    "author": "helei 更新于 2015/06/17 19:56",
                    "operationId": "findPetsByStatus",
                    "produces": [
                        "application/xml",
                        "application/json"
                    ],
                    "parameters": [
                        {
                            "name": "status",
                            "in": "query",
                            "description": "Status values that need to be considered for filter",
                            "required": true,
                            "type": "array",
                            "items": {
                                "type": "string",
                                "enum": [
                                    "available",
                                    "pending",
                                    "sold"
                                ],
                                "default": "available"
                            },
                            "collectionFormat": "csv"
                        }
                    ],
                    "responses": {
                        "200": {
                            "description": "successful operation",
                            "schema": {
                                "type": "array",
                                "items": {
                                    "$ref": "#/definitions/Pet"
                                }
                            }
                        },
                        "400": {
                            "description": "Invalid status value"
                        }
                    },
                    "security": [
                        {
                            "petstore_auth": [
                                "write:pets",
                                "read:pets"
                            ]
                        }
                    ]
                }
            },
            "/pet/findByTags": {
                "get": {
                    "tags": [
                        "pet"
                    ],
                    "summary": "根据tags查找宠物",
                    "description": "Muliple tags can be provided with comma seperated strings. Use tag1, tag2, tag3 for testing.",
                    "author": "helei 更新于 2015/06/17 19:56",
                    "operationId": "findPetsByTags",
                    "produces": [
                        "application/xml",
                        "application/json"
                    ],
                    "parameters": [
                        {
                            "name": "tags",
                            "in": "query",
                            "description": "Tags to filter by",
                            "required": true,
                            "type": "array",
                            "items": {
                                "type": "string"
                            },
                            "collectionFormat": "csv"
                        }
                    ],
                    "responses": {
                        "200": {
                            "description": "successful operation",
                            "schema": {
                                "type": "array",
                                "items": {
                                    "$ref": "#/definitions/Pet"
                                }
                            }
                        },
                        "400": {
                            "description": "Invalid tag value"
                        }
                    },
                    "security": [
                        {
                            "petstore_auth": [
                                "write:pets",
                                "read:pets"
                            ]
                        }
                    ]
                }
            },
            "/pet/{petId}": {
                "get": {
                    "tags": [
                        "pet"
                    ],
                    "summary": "根据id查找宠物",
                    "description": "Returns a single pet",
                    "author": "helei 更新于 2015/06/17 19:56",
                    "operationId": "getPetById",
                    "produces": [
                        "application/xml",
                        "application/json"
                    ],
                    "parameters": [
                        {
                            "name": "petId",
                            "in": "path",
                            "description": "ID of pet to return",
                            "required": true,
                            "type": "integer",
                            "format": "int64"
                        }
                    ],
                    "responses": {
                        "200": {
                            "description": "successful operation",
                            "schema": {
                                "$ref": "#/definitions/Pet"
                            }
                        },
                        "400": {
                            "description": "Invalid ID supplied"
                        },
                        "404": {
                            "description": "Pet not found"
                        }
                    },
                    "security": [
                        {
                            "api_key": []
                        }
                    ]
                },
                "post": {
                    "tags": [
                        "pet"
                    ],
                    "summary": "根据表单数据,更新宠物数据",
                    "description": "",
                    "author": "helei 更新于 2015/06/17 19:56",
                    "operationId": "updatePetWithForm",
                    "consumes": [
                        "application/x-www-form-urlencoded"
                    ],
                    "produces": [
                        "application/xml",
                        "application/json"
                    ],
                    "parameters": [
                        {
                            "name": "petId",
                            "in": "path",
                            "description": "ID of pet that needs to be updated",
                            "required": true,
                            "type": "integer",
                            "format": "int64"
                        },
                        {
                            "name": "name",
                            "in": "formData",
                            "description": "Updated name of the pet",
                            "required": false,
                            "type": "string"
                        },
                        {
                            "name": "status",
                            "in": "formData",
                            "description": "Updated status of the pet",
                            "required": false,
                            "type": "string"
                        }
                    ],
                    "responses": {
                        "405": {
                            "description": "Invalid input"
                        }
                    },
                    "security": [
                        {
                            "petstore_auth": [
                                "write:pets",
                                "read:pets"
                            ]
                        }
                    ]
                },
                "delete": {
                    "tags": [
                        "pet"
                    ],
                    "summary": "删除宠物",
                    "description": "",
                    "author": "helei 更新于 2015/06/17 19:56",
                    "operationId": "deletePet",
                    "produces": [
                        "application/xml",
                        "application/json"
                    ],
                    "parameters": [
                        {
                            "name": "api_key",
                            "in": "header",
                            "required": false,
                            "type": "string"
                        },
                        {
                            "name": "petId",
                            "in": "path",
                            "description": "Pet id to delete",
                            "required": true,
                            "type": "integer",
                            "format": "int64"
                        }
                    ],
                    "responses": {
                        "400": {
                            "description": "Invalid pet value"
                        }
                    },
                    "security": [
                        {
                            "petstore_auth": [
                                "write:pets",
                                "read:pets"
                            ]
                        }
                    ]
                }
            },
            "/pet/{petId}/uploadImage": {
                "post": {
                    "tags": [
                        "pet"
                    ],
                    "summary": "更新图片",
                    "description": "",
                    "author": "helei 更新于 2015/06/17 19:56",
                    "operationId": "uploadFile",
                    "consumes": [
                        "multipart/form-data"
                    ],
                    "produces": [
                        "application/json"
                    ],
                    "parameters": [
                        {
                            "name": "petId",
                            "in": "path",
                            "description": "ID of pet to update",
                            "required": true,
                            "type": "integer",
                            "format": "int64"
                        },
                        {
                            "name": "additionalMetadata",
                            "in": "formData",
                            "description": "Additional data to pass to server",
                            "required": false,
                            "type": "string"
                        },
                        {
                            "name": "file",
                            "in": "formData",
                            "description": "file to upload",
                            "required": false,
                            "type": "file"
                        }
                    ],
                    "responses": {
                        "200": {
                            "description": "successful operation",
                            "schema": {
                                "$ref": "#/definitions/ApiResponse"
                            }
                        }
                    },
                    "security": [
                        {
                            "petstore_auth": [
                                "write:pets",
                                "read:pets"
                            ]
                        }
                    ]
                }
            },
            "/store/inventory": {
                "get": {
                    "tags": [
                        "store"
                    ],
                    "summary": "返回宠物库存状态",
                    "description": "Returns a map of status codes to quantities",
                    "author": "helei 更新于 2015/06/17 19:56",
                    "operationId": "getInventory",
                    "produces": [
                        "application/json"
                    ],
                    "parameters": [],
                    "responses": {
                        "200": {
                            "description": "successful operation",
                            "schema": {
                                "type": "object",
                                "additionalProperties": {
                                    "type": "integer",
                                    "format": "int32"
                                }
                            }
                        }
                    },
                    "security": [
                        {
                            "api_key": []
                        }
                    ]
                }
            },
            "/store/order": {
                "post": {
                    "tags": [
                        "store"
                    ],
                    "summary": "订购一个宠物",
                    "description": "",
                    "author": "helei 更新于 2015/06/17 19:56",
                    "operationId": "placeOrder",
                    "produces": [
                        "application/xml",
                        "application/json"
                    ],
                    "parameters": [
                        {
                            "in": "body",
                            "name": "body",
                            "description": "order placed for purchasing the pet",
                            "required": true,
                            "schema": {
                                "$ref": "#/definitions/Order"
                            }
                        }
                    ],
                    "responses": {
                        "200": {
                            "description": "successful operation",
                            "schema": {
                                "$ref": "#/definitions/Order"
                            }
                        },
                        "400": {
                            "description": "Invalid Order"
                        }
                    }
                }
            },
            "/store/order/{orderId}": {
                "get": {
                    "tags": [
                        "store"
                    ],
                    "summary": "根据ID查找订单",
                    "description": "For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions",
                    "author": "helei 更新于 2015/06/17 19:56",
                    "operationId": "getOrderById",
                    "produces": [
                        "application/xml",
                        "application/json"
                    ],
                    "parameters": [
                        {
                            "name": "orderId",
                            "in": "path",
                            "description": "ID of pet that needs to be fetched",
                            "required": true,
                            "type": "integer",
                            "maximum": 5,
                            "minimum": 1,
                            "format": "int64"
                        }
                    ],
                    "responses": {
                        "200": {
                            "description": "successful operation",
                            "schema": {
                                "$ref": "#/definitions/Order"
                            }
                        },
                        "400": {
                            "description": "Invalid ID supplied"
                        },
                        "404": {
                            "description": "Order not found"
                        }
                    }
                },
                "delete": {
                    "tags": [
                        "store"
                    ],
                    "summary": "根据ID删除订单",
                    "description": "For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors",
                    "author": "helei 更新于 2015/06/17 19:56",
                    "operationId": "deleteOrder",
                    "produces": [
                        "application/xml",
                        "application/json"
                    ],
                    "parameters": [
                        {
                            "name": "orderId",
                            "in": "path",
                            "description": "ID of the order that needs to be deleted",
                            "required": true,
                            "type": "string",
                            "minimum": 1
                        }
                    ],
                    "responses": {
                        "400": {
                            "description": "Invalid ID supplied"
                        },
                        "404": {
                            "description": "Order not found"
                        }
                    }
                }
            },
            "/user": {
                "post": {
                    "tags": [
                        "user"
                    ],
                    "summary": "创建用户",
                    "description": "This can only be done by the logged in user.",
                    "author": "helei 更新于 2015/06/17 19:56",
                    "operationId": "createUser",
                    "produces": [
                        "application/xml",
                        "application/json"
                    ],
                    "parameters": [
                        {
                            "in": "body",
                            "name": "body",
                            "description": "Created user object",
                            "required": true,
                            "schema": {
                                "$ref": "#/definitions/User"
                            }
                        }
                    ],
                    "responses": {
                        "default": {
                            "description": "successful operation"
                        }
                    }
                }
            },
            "/user/createWithArray": {
                "post": {
                    "tags": [
                        "user"
                    ],
                    "summary": "根据传入数组,创建多个用户",
                    "description": "",
                    "author": "helei 更新于 2015/06/17 19:56",
                    "operationId": "createUsersWithArrayInput",
                    "produces": [
                        "application/xml",
                        "application/json"
                    ],
                    "parameters": [
                        {
                            "in": "body",
                            "name": "body",
                            "description": "List of user object",
                            "required": true,
                            "schema": {
                                "type": "array",
                                "items": {
                                    "$ref": "#/definitions/User"
                                }
                            }
                        }
                    ],
                    "responses": {
                        "default": {
                            "description": "successful operation"
                        }
                    }
                }
            },
            "/user/createWithList": {
                "post": {
                    "tags": [
                        "user"
                    ],
                    "summary": "根据列表创建多个用户",
                    "description": "",
                    "author": "helei 更新于 2015/06/17 19:56",
                    "operationId": "createUsersWithListInput",
                    "produces": [
                        "application/xml",
                        "application/json"
                    ],
                    "parameters": [
                        {
                            "in": "body",
                            "name": "body",
                            "description": "List of user object",
                            "required": true,
                            "schema": {
                                "type": "array",
                                "items": {
                                    "$ref": "#/definitions/User"
                                }
                            }
                        }
                    ],
                    "responses": {
                        "default": {
                            "description": "successful operation"
                        }
                    }
                }
            },
            "/user/login": {
                "get": {
                    "tags": [
                        "user"
                    ],
                    "summary": "用户登录系统",
                    "description": "",
                    "author": "helei 更新于 2015/06/17 19:56",
                    "operationId": "loginUser",
                    "produces": [
                        "application/xml",
                        "application/json"
                    ],
                    "parameters": [
                        {
                            "name": "username",
                            "in": "query",
                            "description": "The user name for login",
                            "required": true,
                            "type": "string"
                        },
                        {
                            "name": "password",
                            "in": "query",
                            "description": "The password for login in clear text",
                            "required": true,
                            "type": "string"
                        }
                    ],
                    "responses": {
                        "200": {
                            "description": "successful operation",
                            "schema": {
                                "type": "string"
                            },
                            "headers": {
                                "X-Rate-Limit": {
                                    "type": "integer",
                                    "format": "int32",
                                    "description": "calls per hour allowed by the user"
                                },
                                "X-Expires-After": {
                                    "type": "string",
                                    "format": "date-time",
                                    "description": "date in UTC when toekn expires"
                                }
                            }
                        },
                        "400": {
                            "description": "Invalid username/password supplied"
                        }
                    }
                }
            },
            "/user/logout": {
                "get": {
                    "tags": [
                        "user"
                    ],
                    "summary": "用户退出登录,并清除session",
                    "description": "",
                    "author": "helei 更新于 2015/06/17 19:56",
                    "operationId": "logoutUser",
                    "produces": [
                        "application/xml",
                        "application/json"
                    ],
                    "parameters": [],
                    "responses": {
                        "default": {
                            "description": "successful operation"
                        }
                    }
                }
            },
            "/user/{username}": {
                "get": {
                    "tags": [
                        "user"
                    ],
                    "summary": "根据用户名获取用户",
                    "description": "",
                    "author": "helei 更新于 2015/06/17 19:56",
                    "operationId": "getUserByName",
                    "produces": [
                        "application/xml",
                        "application/json"
                    ],
                    "parameters": [
                        {
                            "name": "username",
                            "in": "path",
                            "description": "The name that needs to be fetched. Use user1 for testing. ",
                            "required": true,
                            "type": "string"
                        }
                    ],
                    "responses": {
                        "200": {
                            "description": "successful operation",
                            "schema": {
                                "$ref": "#/definitions/User"
                            }
                        },
                        "400": {
                            "description": "Invalid username supplied"
                        },
                        "404": {
                            "description": "User not found"
                        }
                    }
                },
                "put": {
                    "tags": [
                        "user"
                    ],
                    "summary": "更新用户",
                    "author": "helei 更新于 2015/06/17 19:56",
                    "description": "This can only be done by the logged in user.",
                    "operationId": "updateUser",
                    "produces": [
                        "application/xml",
                        "application/json"
                    ],
                    "parameters": [
                        {
                            "name": "username",
                            "in": "path",
                            "description": "name that need to be deleted",
                            "required": true,
                            "type": "string"
                        },
                        {
                            "in": "body",
                            "name": "body",
                            "description": "Updated user object",
                            "required": true,
                            "schema": {
                                "$ref": "#/definitions/User"
                            }
                        }
                    ],
                    "responses": {
                        "400": {
                            "description": "Invalid user supplied"
                        },
                        "404": {
                            "description": "User not found"
                        }
                    }
                },
                "delete": {
                    "tags": [
                        "user"
                    ],
                    "summary": "删除用户",
                    "author": "helei 更新于 2015/06/17 19:56",
                    "description": "This can only be done by the logged in user.",
                    "operationId": "deleteUser",
                    "produces": [
                        "application/xml",
                        "application/json"
                    ],
                    "parameters": [
                        {
                            "name": "username",
                            "in": "path",
                            "description": "The name that needs to be deleted",
                            "required": true,
                            "type": "string"
                        }
                    ],
                    "responses": {
                        "400": {
                            "description": "Invalid username supplied"
                        },
                        "404": {
                            "description": "User not found"
                        }
                    }
                }
            }
        },
        "securityDefinitions": {
            "petstore_auth": {
                "type": "oauth2",
                "authorizationUrl": "http://petstore.swagger.io/api/oauth/dialog",
                "flow": "implicit",
                "scopes": {
                    "write:pets": "modify pets in your account",
                    "read:pets": "read your pets"
                }
            },
            "api_key": {
                "type": "apiKey",
                "name": "api_key",
                "in": "header"
            }
        },
        "definitions": {
            "Order": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "format": "int64"
                    },
                    "petId": {
                        "type": "integer",
                        "format": "int64"
                    },
                    "quantity": {
                        "type": "integer",
                        "format": "int32"
                    },
                    "shipDate": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "status": {
                        "type": "string",
                        "description": "Order Status",
                        "enum": [
                            "placed",
                            "approved",
                            "delivered"
                        ]
                    },
                    "complete": {
                        "type": "boolean",
                        "default": false
                    }
                },
                "xml": {
                    "name": "Order"
                }
            },
            "Category": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "format": "int64"
                    },
                    "name": {
                        "type": "string"
                    }
                },
                "xml": {
                    "name": "Category"
                }
            },
            "User": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "format": "int64"
                    },
                    "username": {
                        "type": "string"
                    },
                    "firstName": {
                        "type": "string"
                    },
                    "lastName": {
                        "type": "string"
                    },
                    "email": {
                        "type": "string"
                    },
                    "password": {
                        "type": "string"
                    },
                    "phone": {
                        "type": "string"
                    },
                    "userStatus": {
                        "type": "integer",
                        "format": "int32",
                        "description": "User Status"
                    }
                },
                "xml": {
                    "name": "User"
                }
            },
            "Tag": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "format": "int64"
                    },
                    "name": {
                        "type": "string"
                    }
                },
                "xml": {
                    "name": "Tag"
                }
            },
            "Pet": {
                "type": "object",
                "required": [
                    "name",
                    "photoUrls"
                ],
                "properties": {
                    "id": {
                        "type": "integer",
                        "format": "int64"
                    },
                    "category": {
                        "$ref": "#/definitions/Category"
                    },
                    "name": {
                        "type": "string",
                        "example": "doggie"
                    },
                    "photoUrls": {
                        "type": "array",
                        "xml": {
                            "name": "photoUrl",
                            "wrapped": true
                        },
                        "items": {
                            "type": "string"
                        }
                    },
                    "tags": {
                        "type": "array",
                        "xml": {
                            "name": "tag",
                            "wrapped": true
                        },
                        "items": {
                            "$ref": "#/definitions/Tag"
                        }
                    },
                    "status": {
                        "type": "string",
                        "description": "pet status in the store",
                        "enum": [
                            "available",
                            "pending",
                            "sold"
                        ]
                    }
                },
                "xml": {
                    "name": "Pet"
                }
            },
            "ApiResponse": {
                "type": "object",
                "properties": {
                    "code": {
                        "type": "integer",
                        "format": "int32"
                    },
                    "type": {
                        "type": "string"
                    },
                    "message": {
                        "type": "string"
                    }
                }
            }
        },
        "externalDocs": {
            "description": "了解一下我们吧!",
            "url": "https://github.com/helei112g"
        }
    }

    写完后,配置好后,maven build一下

    然后打开浏览器输入相对应的网址:localhost:8080/apidoc 就会出来一个文档界面

    文档界面出来后,根据自己需要,模仿swagger.json文件,自己修改添加删除改造成自己想要的那样

  • 相关阅读:
    2021 0309-1 准备工作
    课程总结
    第十四周课程总结&实验报告
    第十三周课程总结
    第十二周课程总结
    第十一周课程总结
    第十周课程总结
    2019春总结作业
    第十二周作业
    第十一周作业
  • 原文地址:https://www.cnblogs.com/youcong/p/8088121.html
Copyright © 2011-2022 走看看