原 JAVA懒开发:整合swagger对测

swagger

什么是swagger

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

添加Swagger2依赖

<!-- swagger2与swagger-ui同一版本  -->
<dependency>
	<groupId>io.springfox</groupId>
	<artifactId>springfox-swagger2</artifactId>
	<version>2.8.0</version>
</dependency>
<dependency>
	<groupId>io.springfox</groupId>
	<artifactId>springfox-swagger-ui</artifactId>
	<version>2.8.0</version>
</dependency>

创建Swagger2配置类

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;
/**
 * Swagger核心配置文件
 * ========================
 * @author  BianP 
 * Date:2018/1/30
 * Time:23:07
 * ========================
 */
@Configuration
@EnableSwagger2
public class SwaggerConfig {
	
	public static String CONTROLLER_URL="com.lazy.develop.controller";  //Swagger扫描的接口路径
	public static String SWAGGER_TITLE="JAVA懒开发-SWAGGER的使用"; 	    //Swagger接口文档标题
	public static String SWAGGER_DESCRIPTION="swagger打造不一样的API";   //Swagger接口文档描述
	public static String SWAGGER_VERSION="1.0";                         //Swagger接口文档版本
	public static String SWAGGER_URL="http://127.0.0.1:8080";           //Swagger项目服务的URL
	
	@Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage(CONTROLLER_URL))
                .paths(PathSelectors.any())
                .build();
    }
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title(SWAGGER_TITLE)
                .description(SWAGGER_DESCRIPTION)
                .termsOfServiceUrl(SWAGGER_URL)
                .version(SWAGGER_VERSION)
                .build();
    }
}

这个时候Swagger2的整合就已经完成了,只需要在接口类和实体类中加注解就好了

接口类中使用

@Api(description = "用户模块",value="用户。。" )
@RestController
@RequestMapping("/user")
public class UserController {

	Logger logger = Logger.getLogger(UserController.class);
	@Autowired
	public UserService userServiceImpl;
	
	/**
	 * @explain 获取用户
	 * @param   用户ID:id
	 * @return  User
	 * @author  BianP
	 */
	@ApiIgnore//使用该注解忽略这个API
	@RequestMapping(value="/getUserRolePage", method = RequestMethod.GET)
	public List<Record> getUserRolePage(HttpServletRequest request){
		Record record=new Record(request);
		//record.put("name", "name"); //和普通的map使用一样
		//String name=record.getString("name");
		//Integer id=record.getInteger("id");
		//Long id2=record.getLong("id");
		//Object obj=record.get("user"); //目前就写了这几个,大家可以根据自己的需求改哈
		List<Record> user = userServiceImpl.getUserRolePage(record);
		return user;
	}
	
	/**
	 * @explain 获取所有用户   <swagger POST请求>
	 * @param   对象参数:swaggerTest
	 * @return  List<User>
	 * @author  BianP
	 */
	@ApiOperation(value = "获取所有用户", notes = "查询所有用户")
	@RequestMapping(value="/getUserAll_POST", method = RequestMethod.POST)
	public List<User> getUserAll_POST(SwaggerTest swaggerTest){
		List<User> user = userServiceImpl.getUserAll();
		return user;
	}
	
	/**
	 * @explain 获取所有用户 <swagger get请求>
	 * @param   对象参数:swaggerTest
	 * @return  List<User>
	 * @author  BianP
	 */
	@ApiOperation(value = "获取所有用户", notes = "查询所有用户")
	@RequestMapping(value="/getUserAll_GET", method = RequestMethod.GET)
	public List<User> getUserAll_GET(SwaggerTest swaggerTest){
		List<User> user = userServiceImpl.getUserAll();
		return user;
	}
	
	
	/**
	 * @explain 获取所有用户 <swagger 链接参数与请求Body参数>
	 * @param   用户ID:id,对象参数:swaggerTest
	 * @return  List<User>
	 * @author  BianP
	 */
	@ApiOperation(value = "获取所有用户", notes = "查询所有用户")
	@ApiImplicitParams({
        @ApiImplicitParam(name = "ids", value = "用户ID", required = true, dataType = "Long",paramType = "path"),
        @ApiImplicitParam(name = "swaggerTest", value = "swagger测试参数对象", required = true, dataType = "SwaggerTest")
	})
	@RequestMapping(value="/getUserAll_POST/{ids}", method = RequestMethod.POST)
	public List<User> getUserAll_POST2(@PathVariable Long ids, @RequestBody SwaggerTest swaggerTest){
		List<User> user = userServiceImpl.getUserAll();
		return user;
	}
}

对象参数和返回对象使用

import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@Data
public class SwaggerTest {
	
	@ApiModelProperty(name = "id" , value = "用户ID")
	private Long id;
	
	@ApiModelProperty(name = "loginName" , value = "用户登录名")
	private String loginName;
	
	@ApiModelProperty(name = "password" , value = "用户密码")
	private String password;
	
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty(name = "createTime" , value = "用户创建时间")
	private Date createTime;

}

到这就整合玩了................................................

输入http://127.0.0.1:8080/swagger-ui.html

显示结果

写生产文档的注解

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

  • @Api:修饰整个类,描述Controller的作用
  • @ApiOperation:描述一个类的一个方法,或者说一个接口
  • @ApiParam:单个参数描述
  • @ApiModel:用对象来接收参数
  • @ApiProperty:用对象接收参数时,描述对象的一个字段
  • @ApiResponse:HTTP响应其中1个描述
  • @ApiResponses:HTTP响应整体描述
  • @ApiIgnore:使用该注解忽略这个API
  • @ApiError :发生错误返回的信息
  • @ApiParamImplicitL:一个请求参数
  • @ApiParamsImplicit 多个请求参数

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏阿杜的世界

Spring Boot:Data Rest Service

在文章RESTful by Spring Boot with MySQL通过在Controller中引入BookRepository来对外提供REST API。...

681
来自专栏LinkedBear的个人空间

ActiveMQ入门,ActiveMQ与RocketMQ的对比

ActiveMQ是Apache下的开源项目,完全支持JMS1.1和J2EE1.4规范的JMS Provider实现。

682
来自专栏博客园

.NET Core 使用RabbitMQ

  RabbitMQ是一个开源的,基于AMQP(Advanced Message Queuing Protocol)协议的完整,可复用的企业级消息队列(Mess...

983
来自专栏Java Web

使用RESTful风格开发Java Web

883
来自专栏一枝花算不算浪漫

ActiveMQ的介绍及使用实例.

3367
来自专栏Java 源码分析

SpringBoot 笔记(十一):Servlet容器

2215
来自专栏Golang语言社区

[Go 语言社区] Golang架构底层---日志函数

服务器后台架构,日志是必不可少的一个功能模块,日志可以分为很多中:统计日志,访问日志,错误日志等 今天大家发是运行中的日志函数 // 日志函数,传入数据为字...

3146
来自专栏Java工程师日常干货

ActiveMQ从入门到精通(一)JMSActiveMQ QuickStartWrite Code 4 ActiveMQ在说说Session关于消息的priority/ttl/deliveryMode

这是关于消息中间件ActiveMQ的一个系列专题文章,将涵盖JMS、ActiveMQ的初步入门及API详细使用、两种经典的消息模式(PTP and Pub/Su...

792
来自专栏Java 源码分析

SpringBoot 笔记 ( 六):消息

1506
来自专栏Java进阶之路

消息队列_RabbitMQ

1630

扫码关注云+社区