• 入门Swagger


    Swagger:实现前后端分离开发

    使用IDEA创建一个web项目

    在pom.xml中添加swagger-api依赖

    <?xml version="1.0" encoding="UTF-8"?>
    <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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.2.1.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.uos</groupId>
        <artifactId>swagger-demo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>swagger-demo</name>
        <description>Demo project for Spring Boot</description>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
                <exclusions>
                    <exclusion>
                        <groupId>org.junit.vintage</groupId>
                        <artifactId>junit-vintage-engine</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
    
            <!--swagger-api依赖开始-->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>2.7.0</version>
            </dependency>
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>2.7.0</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.6.6</version>
            </dependency>
            <!--swagger-api 依赖结束-->
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>

    添加SwaggerConfig和WebMvcConfig配置类

    package com.uos.demo.config;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.EnableWebMvc;
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.service.ApiInfo;
    import springfox.documentation.service.Contact;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    
    @Configuration//必须存在
    @EnableSwagger2//必须存在
    @EnableWebMvc//必须存在
    //必须存在扫描的API Controller包
    @ComponentScan(basePackages ={"com.uos.demo.controller"})
    public class SwaggerConfig{
        @Bean
        public Docket customDocket(){
            return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo());
        }
    
        private ApiInfo apiInfo(){
              Contact contact= new Contact("太子殿下","https://www.cnblogs.com/my-program-life/","3466614871@qq.com");
              return new ApiInfoBuilder()
              .title("项目API接口")
              .description("API接口")
              .contact(contact).version("1.1.0")
              .build();
        }
    }
    package com.uos.demo.config;
    
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    
    @Configuration
    class WebMvcConfig implements WebMvcConfigurer {
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("swagger-ui.html")
                    .addResourceLocations("classpath:/META-INF/resources/");
            registry.addResourceHandler("/webjars/**")
                    .addResourceLocations("classpath:/META-INF/resources/webjars/");
        }
    }

    创建User类

    package com.uos.demo.pojo;
    
    /*
        用户类
     */
    public class User {
        private String username;
        private String password;
    
        public User() {
        }
    
        public User(String username, String password) {
            this.username = username;
            this.password = password;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    }

    创建UserController类

    package com.uos.demo.controller;
    
    import com.uos.demo.pojo.User;
    import io.swagger.annotations.Api;
    import io.swagger.annotations.ApiImplicitParam;
    import io.swagger.annotations.ApiOperation;
    import org.springframework.web.bind.annotation.*;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    @RestController
    @Api(value = "用户模块",description = "用户模块的接口信息")
    public class UserController {
        //模拟数据库
        public static List<User> users = new ArrayList<>();
        static {
            users.add(new User("张三","123456"));
            users.add(new User("李四","1234"));
        }
        //获取用户列表的方法
        @GetMapping("/users")
        @ApiOperation(value = "获取用户列表",notes = "获取所有用户的列表信息")
        public Object users(){
            Map<String,Object> map = new HashMap<>();
            map.put("users",users);
            return map;
        }
    
        //通过id来进行查询用户的信息
        @ApiOperation(value = "获取单个用户",notes = "根据id查询某个用户的信息")
        @ApiImplicitParam(value = "用户的id",paramType = "path")
        @GetMapping("/users/{id}")
        public User getUserById(@PathVariable("id") int id){
            return users.get(id);
        }
        
        //添加用户
        @ApiOperation(value = "添加用户",notes = "根据用户传入的信息添加用户")
        @ApiImplicitParam(value = "用户对象",paramType = "query")
        @PostMapping("/user")
        public Object add(User user){
            return users.add(user);
        }
        //删除用户
        @ApiOperation(value = "删除用户",notes = "根据用户传入的id删除用户")
        @ApiImplicitParam(value = "用户id",paramType = "path")
        @DeleteMapping("/user/{id}")
        public Object delete(@PathVariable("id") int id){
            return users.remove(id);
        }
    }

    创建SpringBoot启动类

    package com.uos;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.web.servlet.config.annotation.EnableWebMvc;
    
    @SpringBootApplication
    @EnableWebMvc
    public class SwaggerDemoApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(SwaggerDemoApplication.class, args);
        }
    }

    中文显示

     swagger-ui.html

    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="UTF-8">
      <title>Swagger UI</title>
      <link rel="icon" type="image/png" href="webjars/springfox-swagger-ui/images/favicon-32x32.png" sizes="32x32"/>
      <link rel="icon" type="image/png" href="webjars/springfox-swagger-ui/images/favicon-16x16.png" sizes="16x16"/>
      <link href='webjars/springfox-swagger-ui/css/typography.css' media='screen' rel='stylesheet' type='text/css'/>
      <link href='webjars/springfox-swagger-ui/css/reset.css' media='screen' rel='stylesheet' type='text/css'/>
      <link href='webjars/springfox-swagger-ui/css/screen.css' media='screen' rel='stylesheet' type='text/css'/>
      <link href='webjars/springfox-swagger-ui/css/reset.css' media='print' rel='stylesheet' type='text/css'/>
      <link href='webjars/springfox-swagger-ui/css/print.css' media='print' rel='stylesheet' type='text/css'/>
    
      <script src='webjars/springfox-swagger-ui/lib/object-assign-pollyfill.js' type='text/javascript'></script>
      <script src='webjars/springfox-swagger-ui/lib/jquery-1.8.0.min.js' type='text/javascript'></script>
      <script src='webjars/springfox-swagger-ui/lib/jquery.slideto.min.js' type='text/javascript'></script>
      <script src='webjars/springfox-swagger-ui/lib/jquery.wiggle.min.js' type='text/javascript'></script>
      <script src='webjars/springfox-swagger-ui/lib/jquery.ba-bbq.min.js' type='text/javascript'></script>
      <script src='webjars/springfox-swagger-ui/lib/handlebars-4.0.5.js' type='text/javascript'></script>
      <script src='webjars/springfox-swagger-ui/lib/lodash.min.js' type='text/javascript'></script>
      <script src='webjars/springfox-swagger-ui/lib/backbone-min.js' type='text/javascript'></script>
      <script src='webjars/springfox-swagger-ui/swagger-ui.min.js' type='text/javascript'></script>
      <script src='webjars/springfox-swagger-ui/lib/highlight.9.1.0.pack.js' type='text/javascript'></script>
      <script src='webjars/springfox-swagger-ui/lib/highlight.9.1.0.pack_extended.js' type='text/javascript'></script>
      <script src='webjars/springfox-swagger-ui/lib/jsoneditor.min.js' type='text/javascript'></script>
      <script src='webjars/springfox-swagger-ui/lib/marked.js' type='text/javascript'></script>
      <script src='webjars/springfox-swagger-ui/lib/swagger-oauth.js' type='text/javascript'></script>
    
      <script src='webjars/springfox-swagger-ui/lang/translator.js' type='text/javascript'></script>
      <script src='webjars/springfox-swagger-ui/lang/zh-cn.js' type='text/javascript'></script>
    
      <script src='webjars/springfox-swagger-ui/springfox.js' type='text/javascript'></script>
    </head>
    
    <body class="swagger-section">
    <div id='header'>
      <div class="swagger-ui-wrap">
        <a id="logo" href="http://swagger.io"><img class="logo__img" alt="swagger" height="30" width="30" src="webjars/springfox-swagger-ui/images/logo_small.png" /><span class="logo__title">swagger</span></a>
        <form id='api_selector'>
          <div class='input'>
            <select id="select_baseUrl" name="select_baseUrl"/>
          </div>
          <div class='input'><input placeholder="http://example.com/api" id="input_baseUrl" name="baseUrl" type="text"/></div>
          <div id='auth_container'></div>
          <div class='input'><a id="explore" class="header__btn" href="#" data-sw-translate>Explore</a></div>
        </form>
      </div>
    </div>
    
    <div id="message-bar" class="swagger-ui-wrap" data-sw-translate>&nbsp;</div>
    <div id="swagger-ui-container" class="swagger-ui-wrap"></div>
    </body>
    </html>

    页面显示

     

  • 相关阅读:
    SpringBoot 项目集成增强版 SwaggerKnife4j 附常见问题及解决方案
    ZooKeeper 06 ZooKeeper 的常用命令
    ZooKeeper 04 ZooKeeper 集群的节点为什么必须是奇数个
    TCP扫描增强器实现65000端口,10S完成,快准狠(Go语言编程)
    集群服务器的网络连接状态接入ELK(可视化操作)
    golang的ping检测主机存活
    Gin编写邮件告警接口(添加配置,项目拆分)
    Gin编写邮件接口(支持多人发送)
    Linux操作系统账号密码失效检测
    Rsyslog同步集群服务器的网络连接状态
  • 原文地址:https://www.cnblogs.com/my-program-life/p/11876546.html
Copyright © 2020-2023  润新知