前言
Swagger已经成API service的规范了,本处在dropwizard中简单集成Swagger.
Demo source
本文是基于之上的演进。
确保依赖都是最新的,或者自行解决版本冲突,比如jackson不同版本之间的类有所不同。
添加swagger依赖
com.smoketurner dropwizard-swagger 1.1.2-1
在configuration中新增swagger的基础配置
@JsonProperty("swagger")private SwaggerBundleConfiguration swaggerBundleConfiguration;
在配置文件中,新增
swagger: resourcePackage: com.test.domain.resource schemes: - http
新增SwaggerBundle
创建com.test.bundles.SwitchableSwaggerBundle
package com.test.bundles;import com.test.configuration.HelloWorldConfiguration;import io.dropwizard.setup.Environment;import io.federecio.dropwizard.swagger.SwaggerBundle;import io.federecio.dropwizard.swagger.SwaggerBundleConfiguration;public class SwitchableSwaggerBundle extends SwaggerBundle{ @Override protected SwaggerBundleConfiguration getSwaggerBundleConfiguration(HelloWorldConfiguration configuration) { return configuration.getSwaggerBundleConfiguration(); } @Override public void run(HelloWorldConfiguration configuration, Environment environment) throws Exception { super.run(configuration, environment); }}
引入SwaggerBundle
在com.test.HelloWorldApplication#initialize
新增
bootstrap.addBundle(new SwitchableSwaggerBundle());
修改Resource类
package com.test.domain.resource;import com.codahale.metrics.annotation.Timed;import com.test.domain.entiry.GithubUser;import com.test.domain.service.IGithubService;import io.swagger.annotations.Api;import io.swagger.annotations.ApiOperation;import io.swagger.annotations.ApiResponse;import io.swagger.annotations.ApiResponses;import javax.inject.Inject;import javax.ws.rs.GET;import javax.ws.rs.Path;import javax.ws.rs.PathParam;import javax.ws.rs.Produces;import javax.ws.rs.core.MediaType;/** * Created by Ryan Miao on 9/14/17. */@Api("/github")@Path("/github")@Produces(MediaType.APPLICATION_JSON)public class GithubResource { private IGithubService service; @Inject public GithubResource(IGithubService service) { this.service = service; } @GET @Timed @Path("/users/{username}") @ApiOperation(value = "Get github user profile.", notes = "There should be the note.") @ApiResponses({ @ApiResponse(code = 401, message = "Valid credentials are required to access this resource."), @ApiResponse(code = 400, message = "Params not valid."), @ApiResponse(code = 500, message = "Something wrong from the server."), @ApiResponse(code = 200, message = "Success.", response = GithubUser.class) }) public GithubUser getUserProfile(@PathParam("username") final String username) { return service.getUserProfile(username); }}
install&Run
浏览器访问http://localhost:8080/swagger,
结果如下: