文档章节

Swagger-UI配置使用

0了凡0
 0了凡0
发布于 2016/09/12 13:00
字数 997
阅读 848
收藏 6

Swagger-ui是一个用于提供restful接口api测试的工具,结合Springcloud引入后,可以部分代替像postman等

测试rest接口的工具。而且具有实时性,与其他系统对接时具有极大的方便性。

1、引入依赖

pom.xml

<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.bincai.cloud</groupId>
  <artifactId>cloud-cust-domain</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>cloud-cust-domain</name>
  <url>http://maven.apache.org</url>
    <parent>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-parent</artifactId>
     <version>1.3.5.RELEASE</version>
   </parent>
    <properties>
        <start-class>com.taikang.boot.UserApplication</start-class>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Brixton.SR3</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
  <dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <!-- eureka依赖 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
    </dependency>
         <!-- 配置 -->
     <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-config</artifactId>
     </dependency>
    <!-- hystrix依赖 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-hystrix</artifactId>
    </dependency>
    <!-- Swagger -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.2.2</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.2.2</version>
        </dependency>
    <!-- ribbon依赖 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-ribbon</artifactId>
    </dependency>
    <!-- sleuth依赖 -->
     <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-sleuth</artifactId>
     </dependency>
     <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-stream-rabbit</artifactId>
     </dependency>
      <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-sleuth-stream</artifactId>
     </dependency>
     <!-- mybatis依赖 -->
    <dependency>
        <groupId>com.zaxxer</groupId>
        <artifactId>HikariCP</artifactId>
    </dependency>
    <dependency>  
        <groupId>org.mybatis.spring.boot</groupId>  
        <artifactId>mybatis-spring-boot-starter</artifactId>  
        <version>1.1.1</version>  
    </dependency>
    <dependency>  
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>  
    </dependency>
        <!-- json start -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.8</version>
        </dependency>
        <!-- json end -->
  </dependencies>
   <build>  
      <plugins>  
          <plugin>  
              <groupId>org.springframework.boot</groupId>  
              <artifactId>spring-boot-maven-plugin</artifactId>  
          </plugin>  
      </plugins>  
  </build>
</project>
 

2、注入核心加载bean,根据注解在项目启动后会自动加载

SwaggerConfig.java

package com.bincai.cloud.cust.domain.common;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.request.async.DeferredResult;

import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    /**
     * 可以定义多个组,比如本类中定义把test和demo区分开了
     * (访问页面就可以看到效果了) 
     *
     */
    @Bean
    public Docket demoApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("cust")
                .genericModelSubstitutes(DeferredResult.class)
                .useDefaultResponseMessages(false)
                .forCodeGeneration(false)
                .pathMapping("/")
                .select()
//                .paths("/demo/.*"))//过滤的接口
                .build()
                .apiInfo(demoApiInfo());
    }
    private ApiInfo demoApiInfo() {
        ApiInfo apiInfo = new ApiInfo("Cust Domain's API",//大标题
                "Cust Domain's REST API, for system administrator",//小标题
                "1.0",//版本
                "NO terms of service",
                "329458839@qq.com",//作者
                "cust共享",//链接显示文字
                "https://github.com/zhbxzc/cust"//网站链接
        );

        return apiInfo;
    }
    
}
 

 

3、controller注解暴露

CustomerController.java

package com.bincai.cloud.cust.domain.controller;

import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.UUID;

import javax.annotation.Resource;


import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RestController;


import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.bincai.cloud.cust.domain.model.Customer;
import com.bincai.cloud.cust.domain.service.CustService;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;

@RestController
@RequestMapping("/cust")
@Api(value="custdomain",description="客户领域服务接口")
public class CustomerController {
    @Resource
    private CustService custService;

    @ApiOperation(value="客户新增服务",notes="客户新增服务接口")
    @ApiImplicitParam(name="customer",value="客户数据对象JSON",required=true,paramType="body")
   @RequestMapping(value="/api/v1/customers",method=RequestMethod.POST)
   @HystrixCommand(fallbackMethod = "hystrixjsonQuery")
   public String register(@RequestBody String customerInfo){
      Customer customer=JSON.parseObject(customerInfo, Customer.class);
    customer.setId(UUID.randomUUID().toString().replace("-", ""));
        String result=custService.register(customer);    
        return result;       
   }
    @ApiOperation(value="客户信息修改",notes="客户信息变更接口")
    @ApiImplicitParam(name="customerInfo",value="客户信息JSON",required=true,paramType="body")
   @RequestMapping(value="/api/v1/customers/{id}",method=RequestMethod.PUT)
   @HystrixCommand(fallbackMethod = "hystrixjsonQuery")
   public String alter(@RequestBody String customerInfo){
       Customer customer=JSON.parseObject(customerInfo, Customer.class);
        String result=custService.alter(customer);    
        return result;
   }
    @ApiOperation(value="客户信息查询",notes="客户信息查询接口")
    @ApiImplicitParams({
        @ApiImplicitParam(name="name",value="客户姓名",required=false,paramType="query",dataType="String")
})
    @RequestMapping(value = "/api/v1/customers", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
    @HystrixCommand(fallbackMethod = "searchhystrixjsonQuery")
    public String search(Customer customer) {
        if(customer.getPageIndex()!=null&&customer.getPageSize()!=null){
            customer.offset();
        }
        List<Customer> list = custService.search(customer);
        String Array =JSONArray.toJSONString(list);
        return Array;
    }
    @ApiOperation(value="单个客户信息查询",notes="单个客户信息查询接口")
   @RequestMapping(value="/api/v1/customers/{id}",method=RequestMethod.GET)
   @HystrixCommand(fallbackMethod = "hystrixidQuery")
   public String getById(@PathVariable("id") String id){
       Customer cust = custService.getById(id);
       String result = JSONObject.toJSONString(cust);
        return result;
   }
    @ApiOperation(value="客户信息总条数查询",notes="客户信息总条数查询接口")
    @ApiImplicitParams({
            @ApiImplicitParam(name="name",value="客户名称",required=false,paramType="query",dataType="String")
    })
    @RequestMapping(value = "/api/v1/customers/counts", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
    @HystrixCommand(fallbackMethod = "searchhystrixjsonQuery")
    public String searchCount(Customer customer) {
        if(customer.getPageIndex()!=null&&customer.getPageSize()!=null){
            customer.offset();
        }
        int count = custService.searchCount(customer);
        return String.valueOf(count);
    }
    @ApiOperation(value="删除单个公客户信息",notes="删除单个公客户信息接口")
   @RequestMapping(value="/api/v1/customers/{id}",method=RequestMethod.DELETE)
   @HystrixCommand(fallbackMethod = "hystrixidQuery")
   public String delete(@PathVariable("id") String id) throws UnsupportedEncodingException{
       String result=  custService.delete(id);         
         return result;
   }
    
    public String hystrixQuery()
    {
        return "{\"result\":\"error\"}";
    }
    public String hystrixidQuery(String id)
    {
        return "{\"result\":\"error\"}";
    }
    public String hystrixjsonQuery(String customerInfo)
    {
        return "{\"result\":\"error\"}";
    }
    public String searchhystrixjsonQuery(Customer customer)
    {
        return "{\"result\":\"error\"}";
    }
}
 

4、查看restful Api接口在线演示

地址为http://IP地址端口号/swagger-ui.html  

 

© 著作权归作者所有

0了凡0
粉丝 4
博文 78
码字总数 29030
作品 0
昌平
私信 提问
特别好用的swagger ui 封装

Swagger简单介绍 Swagger是一个Restful风格接口的文档在线自动生成和测试的框架 官网:http://swagger.io 官方描述:The World’s Most Popular Framework for APIs. Swagger ui 的原生UI界面...

huanshare
2018/08/13
0
0
Swagger Editor与Swagger-UI神器使用

前言 在没有产品经理或者项目经理的情况下,对于前端和后端打交道来说,无非就是对接口的争争吵吵,字段多多少少的事。大多时候前端都喜欢直接使用后端提供的接口,而后端有时候却不知道前端...

上官瑾文
2017/12/29
0
0
asp.net core系列 37 WebAPI 使用OpenAPI (swagger)中间件

一.概述   在使用Web API时,对于开发人员来说,了解其各种方法可能是一项挑战。在ASP.NET Core上,Web api 辅助工具介绍二个中间件,包括:Swashbuckle和NSwag .NET。本篇先讲Swashbuckle...

花阴偷移
03/05
0
0
在 spring-boot 中使用 swagger - SwaggerSpringBootStarter

在spring-boot中使用swagger,可以实现对代码无侵入地集成swagger 使用时的项目配置 需要在spring boot项目中使用,下面按照使用maven构建项目,以使用文件来配置进行介绍, 如果使用其他的构...

阿信sxq
2017/07/21
2.4K
1
swagger-bootstrap-ui 1.8.5 发布,Swagger增强UI实现

swagger-bootstrap-ui 1.8.5 发布了。swagger-bootstrap-ui 是 Swagger 的增强UI 实现,目的是替换 Swagger 默认的 UI 实现 Swagger-UI,使文档更友好一点儿 swagger-bootstrap-ui在1.8.5以后...

八一菜刀
2018/10/16
4.3K
8

没有更多内容

加载失败,请刷新页面

加载更多

64.监控平台介绍 安装zabbix 忘记admin密码

19.1 Linux监控平台介绍 19.2 zabbix监控介绍 19.3/19.4/19.6 安装zabbix 19.5 忘记Admin密码如何做 19.1 Linux监控平台介绍: 常见开源监控软件 ~1.cacti、nagios、zabbix、smokeping、ope...

oschina130111
今天
13
0
当餐饮遇上大数据,嗯真香!

之前去开了一场会,主题是「餐饮领袖新零售峰会」。认真听完了餐饮前辈和新秀们的分享,觉得获益匪浅,把脑子里的核心纪要整理了一下,今天和大家做一个简单的分享,欢迎感兴趣的小伙伴一起交...

数澜科技
今天
7
0
DNS-over-HTTPS 的下一代是 DNS ON BLOCKCHAIN

本文作者:PETER LAI ,是 Diode 的区块链工程师。在进入软件开发领域之前,他主要是在做工商管理相关工作。Peter Lai 也是一位活跃的开源贡献者。目前,他正在与 Diode 团队一起开发基于区块...

红薯
今天
9
0
CC攻击带来的危害我们该如何防御?

随着网络的发展带给我们很多的便利,但是同时也带给我们一些网站安全问题,网络攻击就是常见的网站安全问题。其中作为站长最常见的就是CC攻击,CC攻击是网络攻击方式的一种,是一种比较常见的...

云漫网络Ruan
今天
12
0
实验分析性专业硕士提纲撰写要点

为什么您需要研究论文的提纲? 首先当您进行研究时,您需要聚集许多信息和想法,研究论文提纲可以较好地组织你的想法, 了解您研究资料的流畅度和程度。确保你写作时不会错过任何重要资料以此...

论文辅导员
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部