Dubbo |ˈdʌbəʊ| 是阿里巴巴提供的分布式框架,Swagger围绕着OpenAPI规范,提供了一套设计、构建、文档化rest api的开源工具。
<dependency>
<groupId>com.deepoove</groupId>
<artifactId>swagger-dubbo</artifactId>
<version>3.0.0-beta</version>
</dependency>
@EnableDubboSwagger
开启dubbo的swagger文档。
@EnableDubboSwagger
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
可以在任何能托管页面的容器内集成swagger-ui,配置swagger-dubbo提供的http://ip:port/context/swagger-dubbo/api-docs
,可能需要跨域支持,详情参见官方文档 swagger-ui
@JKTerrific 在swagger-ui基础上开发了swagger-dubbo-ui, 解决了页面上的一些展示问题:
swagger-dubbo默认无需任何配置,但是也提供了一些可选项。
配置项说明:
#http请求地址,默认为http://ip:port/h/com.XXX.XxService/method
swagger.dubbo.http=h
#dubbo 服务版本号
swagger.dubbo.application.version = 1.0
#dubbo服务groupId
swagger.dubbo.application.groupId = com.deepoove
#dubbo服务artifactId
swagger.dubbo.application.artifactId = dubbo.api
#rpc zk调用 or 本地调用
swagger.dubbo.cluster = rpc
#是否启用swagger-dubbo,默认为true
swagger.dubbo.enable = true
对于服务接口方法重载,为了在http请求中唯一确认一个方法,需要使用注解@ApiOperation(nickname = "byArea")
,通过nickname标记唯一路径(如果不填写,将只显示一个方法)。此时,rest的请求地址为:http://ip:port/h/com.XXX.XxService/method/byArea
Stackoverflow:重载的方法能够映射到同一URL地址吗
Object对象作为http请求参数为json string格式。 Stackoverflow:POST的方法能够接收多个参数吗?
swagger注解既可以写在接口上,也可以写在实现类上。
原生类型作为http请求参数为必填。