您的位置:首页 > 编程语言 > Java开发

spring cloud-Swagger2整合Eureka,实现Eureka页面自动跳转到Swagger2UI界面查看服务接口信息

2017-12-08 15:24 1101 查看
1.swagger官网:http://swagger.io/

2.github使用例子: https://github.com/swagger-api/swagger-codegen/blob/master/samples/server/petstore/springboot/src/main/java/io/swagger/api/PetApi.java
接入的第一步是加入依赖:

<!-- 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>

然后创建一个配置类SwaggerConfig

@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
;return new Docket(DocumentationType.SWAGGER_2).apiInfo(b2BApiInfo()).select()
.apis(Predicates.not(RequestHandlerSelectors.basePackage("org.springframework.boot")))
.apis(Predicates.not(RequestHandlerSelectors.basePackage("org.springframework.cloud")))
.apis(Predicates.not(RequestHandlerSelectors.basePackage("org.springframework.data.rest.webmvc")))
.build();

}

/**
* 接口介绍
* @return
*/
private ApiInfo b2BApiInfo() {
return new ApiInfoBuilder()
//大标题
.title("B2B接口文档")
//详细描述
.description("B2B的接口文档说明")

.build();
}
}

然后就可以在项目中使用swagger了

下面是swagger各个注解的参数说明

/**
@Api:用在类上,说明该类的作用
@ApiOperation:用在方法上,说明方法的作用
@ApiImplicitParams:用在方法上包含一组参数说明
@ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面
paramType:参数放在哪个地方
header-->请求参数的获取:@RequestHeader
query-->请求参数的获取:@RequestParam
path(用于restful接口)-->请求参数的获取:@PathVariable
body(不常用)
form(不常用)
name:参数名
dataType:参数类型
required:参数是否必须传
value:参数的意思
defaultValue:参数的默认值
@ApiResponses:用于表示一组响应
@ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息
code:数字,例如400
message:信息,例如"请求参数没填好"
response:抛出异常的类
@ApiModel:描述一个Model的信息(这种一般用在post创建的时候,使用@RequestBody这样的场景,请求参数无法使用@ApiImplicitParam注解进行描述的时候)
@ApiModelProperty:描述一个model的属性
*/


下面是swagger真实的使用demo例子

@Api(value = "测试swagger Control", description = "测试swagger Control")
@RestController
@CrossOrigin
@RequestMapping("/b2bTest")
public class B2bTestControl {
//当前数据类型
private final String APP_TYPE = "b2bMall";
@Reference(version = "1.0.0", timeout = 3000)
private MallAppContentInfoService mallAppContentInfoService;

@Autowired
private B2bNoticePublishService b2bNoticePublishService;

@ApiOperation(value="获取帮助内容详细信息", notes="根据url的id来获取帮助内容",consumes="application/x-www-form-urlencoded")
@GetMapping("view")
@ApiResponses({
@ApiResponse(code=400,message="请求参数没填好"),
@ApiResponse(code=404,message="请求路径没有或页面跳转路径不对")
})
public MallAppContentInfoVo getInfo(@ApiParam(value = "ID值",defaultValue = "10")@RequestParam(value = "id") Long id) {
// 处理"/b2bContentInfo/{id}"的GET请求,用来获取url中id值的帮助内容r信息
// url中的id可通过@PathVariable绑定到函数的参数中
MallAppContentInfoVo b2bContentInfo = mallAppContentInfoService.getById(id);
return b2bContentInfo;
}

@ApiOperation(value="获取公告", notes="根据url的id来获取帮助内容")
@GetMapping("list")
@ApiResponses({
@ApiResponse(code=400,message="请求参数没填好"),
@ApiResponse(code=404,message="请求路径没有或页面跳转路径不对")
})
public List<B2bNoticePublish> list(@ApiParam(value = "B2bNoticePublishQuery对象")B2bNoticePublishQuery query) {
List<B2bNoticePublish> list = b2bNoticePublishService.getListByPage(query);
return list;
}
}

启动eureka,同时启动main方法然后访问

http://localhost:2222/swagger-ui.html#!/端口是你项目设置的端口,其他的相信你会懂的

以上要求你必须要有个eureka,具体的可参看相关文档
 具体实现可以看我的github项目 https://github.com/nullPointException1/swagger-example-lsh  我的demo eureka配置好了的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐