springboot集成swagger2,构建优雅的Restfu API

swagger,中文“拽”的意思。它是一个功能强大的api框架,它的集成非常简单,不仅提供了在线文档的查阅,而且还提供了在线文档的测试。另外swagger很容易构建restful风格的api,简单优雅帅气,正如它的名字。

一、引入依赖

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

二、写配置类

package com.elvis.web.swagger;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import springfox.documentation.builders.ApiInfoBuilder;import springfox.documentation.builders.PathSelectors;import springfox.documentation.builders.RequestHandlerSelectors;import springfox.documentation.service.ApiInfo;import springfox.documentation.spi.DocumentationType;import springfox.documentation.spring.web.plugins.Docket;import springfox.documentation.swagger2.annotations.EnableSwagger2;@Configuration@EnableSwagger2public class Swagger2Config {    @Bean    public Docket createRestApi() {        return new Docket(DocumentationType.SWAGGER_2)                .apiInfo(apiInfo())                .select()                .apis(RequestHandlerSelectors.basePackage("com.elvis.web"))                .paths(PathSelectors.any())                .build();    }    private ApiInfo apiInfo() {        return new ApiInfoBuilder()                .title("springboot利用swagger构建api文档")                .description("简单优雅的restfun风格,https://blog.csdn.net/JackRen_Developer")                .termsOfServiceUrl("https://blog.csdn.net/JackRen_Developer")                .version("1.0")                .build();    }}

通过@Configuration注解,表明它是一个配置类,@EnableSwagger2开启swagger2。apiINfo()配置一些基本的信息。apis()指定扫描的包会生成文档。

三、写生产文档的注解

swagger通过注解表明该接口会生成文档,包括接口名、请求方法、参数、返回信息的等等。

@Api:修饰整个类,描述Controller的作用

@ApiOperation:描述一个类的一个方法,或者说一个接口

@ApiParam:单个参数描述

@ApiModel:用对象来接收参数

@ApiProperty:用对象接收参数时,描述对象的一个字段

@ApiResponse:HTTP响应其中1个描述

@ApiResponses:HTTP响应整体描述

@ApiIgnore:使用该注解忽略这个API

@ApiError :发生错误返回的信息

@ApiParamImplicitL:一个请求参数

@ApiParamsImplicit 多个请求参数

现在通过一个例子来说明:

package com.elvis.web;import com.elvis.interfaces.UserService;import com.elvis.pojo.User;import io.swagger.annotations.ApiOperation;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.ResponseBody;import javax.annotation.Resource;import java.util.List;/** * @program: fbs * @description: * @author: JackRen * @create: 2019-09-19 11:24 **/@Controllerpublic class UserController {    @Resource    private UserService userService;    @RequestMapping(value = "/user/query",method = RequestMethod.GET)    @ResponseBody    @ApiOperation(value = "查询用户信息", notes="根据url来获取详细信息")    public List<User> queryUsers()    {        return userService.queryUsers();    }    @RequestMapping(value = "/user/search",method = RequestMethod.GET)    @ResponseBody    @ApiOperation(value = "查询用户信息", notes="根据url来获取数据库详细信息")    public List<User> queryUsersDB()    {        return userService.queryUsersDB();    }}

通过相关注解,就可以让swagger2生成相应的文档。如果你不需要某接口生成文档,只需要在加@ApiIgnore注解即可。需要说明的是,如果请求参数在url上,@ApiImplicitParam 上加paramType = “path” 。

启动工程,访问:http://localhost:8080/swagger-ui.html ,就看到swagger-ui:

至此,swagger集成结束​!​

发布了86 篇原创文章 · 获赞 36 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/JackRen_Developer/article/details/101155169
今日推荐