关闭

springboot-restful api-swagger2 ui-实战

标签: springbootrestfulswagger接口
1180人阅读 评论(0) 收藏 举报
分类:

swagger2 ui 自动生成api文档,就节省了编写接口测试和文档的工作,非常方便

下面以集成融云IM api 为例,展示如何配置swagger2

pom.xml

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.3.RELEASE</version>
        <relativePath/>
    </parent>
    <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>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.2.2</version>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.2.2</version>
        </dependency>

        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.2.4</version>
        </dependency>

        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.4</version>
        </dependency>

        <!--
7             devtools可以实现页面热部署(即页面修改后会立即生效,这个可以直接在application.properties文件中配置spring.thymeleaf.cache=false来实现),
8             实现类文件热部署(类文件修改后不会立即生效),实现对属性文件的热部署。
9             即devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机),注意:因为其采用的虚拟机机制,该项重启是很快的
10          -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional><!-- optional=true,依赖不会传递,该项目依赖devtools;之后依赖myboot项目的项目如果想要使用devtools,需要重新引入 -->
        </dependency>
    </dependencies>

application.properties

#项目contextPath,一般在正式发布版本中,我们不配置
#server.context-path=/springboot
# 错误页:指定发生错误时,跳转的URL。请查看BasicErrorController。
#server.error.path=/error
# 服务端口,默认为8080
server.port=9090
# session最大超时时间(分钟),默认为30
server.session-timeout=60
# 该服务绑定IP地址,启动服务器时如本机不是该IP地址则抛出异常启动失败,只有特殊需求的情况下才配置
#server.address=192.168.1.112

SwaggerConfig

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket createRestApi() {
        ApiInfo apiInfo = new ApiInfoBuilder()
                .title("ShiQiqao_YiY_即时通信API")
                .description("客户端与服务端接口文档")
                .termsOfServiceUrl("http://localost:8080")
                .contact("xiaoyuzhou")
                .version("1.0.0")
                .build();

        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.vc.im.rongcloud.api.web.controller"))
                .paths(PathSelectors.any())
                .build();
    }

}

Application

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;

@SpringBootApplication
@ServletComponentScan
public class Application {

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }
}

controller

import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

@RestController
@CrossOrigin
@RequestMapping(value = "/im")
public class ApiController {

    // 创建线程安全的Map
    static RongCloud rongCloud = RongCloud.getInstance(AppConstants.APPKEY, AppConstants.APPSECRET);


//    ************************User********************

    @ApiOperation(value = "获取Token", notes = "")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "userId", value = "用户Id", required = true, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "name", value = "姓名", required = true, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "portraitUri", value = "用户头像地址", required = true, paramType = "query", dataType = "String")
    })
    @RequestMapping(value = {"/user/token"}, method = RequestMethod.GET)
    public String getToken(@RequestParam String userId,@RequestParam String name,@RequestParam String portraitUri) throws Exception {
        TokenResult userGetTokenResult = rongCloud.user.getToken(userId, name, portraitUri);
        return userGetTokenResult.toString();
    }
 //...

访问

http://localhost:9090/swagger-ui.html

效果
swagger-01

swagger-02

还可以填写http参数 进行测试

swagger-03

0
0
查看评论

Spring Boot (一) 基础搭建、兼容jar启动及war tomcat启动、集成Swagger2 API。

项目 GitHub地址 : https://github.com/FrameReserve/TrainingBoot pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="...
  • a286352250
  • a286352250
  • 2016-10-20 11:19
  • 2805

Spring Boot中使用Swagger2构建RESTful APIs

构建RESTful API适配多终端
  • zhouseawater
  • zhouseawater
  • 2016-12-30 13:36
  • 2781

在Spring Boot中使用swagger-bootstrap-ui

swagger-bootstrap-ui是基于swagger接口api实现的一套UI,因swagger原生ui是上下结构的,在浏览接口时不是很清晰,所以,swagger-bootstrap-ui是基于左右菜单风格的方式,适用与我们在开发后台系统左右结构这种风格类似,方便与接口浏览 GitHub:h...
  • u010192145
  • u010192145
  • 2018-01-31 13:23
  • 138

SpringBoot集成Swagger2中遇到的问题

原文:http://www.jianshu.com/p/840320d431a1 参考: http://www.jianshu.com/p/8033ef83a8ed SpringBoot集成Swagger2中遇到的问题 我们在使用SpringBoot集成Swag...
  • keplerpig
  • keplerpig
  • 2017-11-22 11:39
  • 708

spring cloud-整合Swagger2构建RESTful服务的APIs

前言 在前面的博客中,我们将服务注册到了Eureka上,可以从Eureka的UI界面中,看到有哪些服务已经注册到了Eureka Server上,但是,如果我们想查看当前服务提供了哪些RESTful接口方法的话,就无从获取了,传统的方法是梳理一篇服务的接口文档来供开发人员之间来进行交流,这种情况下,很...
  • liuchuanhong1
  • liuchuanhong1
  • 2017-03-01 08:59
  • 4000

Spring Boot集成Swagger2并替换默认的UI

Spring Boot继承Swagger2并替换默认的UI,网上大神写的一个页面,美观大气上档次,自己下载下来稍微改了下界面并支持响应参数
  • soanl
  • soanl
  • 2017-05-02 11:24
  • 6892

swagger2常用注解说明

@Api()表示标识这个类是swagger的资源 @ApiOperation()表示一个http请求的操作 @ApiParam()表示对参数的添加元数据 @ApiModel()表示对类进行说明,用于参数用实体类接收 @ApiModelProperty()表示对model属性的说明或者数据操作更...
  • u014231523
  • u014231523
  • 2017-08-01 14:00
  • 12454

SpringBoot(七):SpringBoot整合Swagger2

相信各位在公司写API文档数量应该不少,当然如果你还处在自己一个人开发前后台的年代,当我没说,如今为了前后台更好的对接,还是为了以后交接方便,都有要求写API文档。 手写Api文档的几个痛点: 文档需要更新的时候,需要再次发送一份给前端,也就是文档更新交流不及时。接口返回结果不明确不能直接在...
  • saytime
  • saytime
  • 2017-07-10 23:01
  • 8020

springboot+swagger2说明

swagger用于定义API文档。 优势: 前后端分离开发API文档非常明确测试的时候不需要再使用URL输入浏览器的方式来访问Controller传统的输入URL的测试方式对于post请求的传参比较麻烦(当然,可以使用postman这样的浏览器插件 添加pom依赖 io.sprin...
  • fanpeng1100
  • fanpeng1100
  • 2017-01-04 10:09
  • 6713

Spring-Boot + Swagger2 自动生成API接口文档

spring-boot作为当前最为流行的Java web开发脚手架,相信越来越多的开发者会使用其来构建企业级的RESTFul API接口。这些接口不但会服务于传统的web端(b/s),也会服务于移动端。
  • amon1991
  • amon1991
  • 2017-08-06 15:51
  • 1594
    个人资料
    • 访问:51823次
    • 积分:1548
    • 等级:
    • 排名:千里之外
    • 原创:92篇
    • 转载:65篇
    • 译文:0篇
    • 评论:8条
    最新评论