前言
Swagger已经成API service的规范了,本处在dropwizard中简单集成Swagger.
Demo source
https://github.com/Ryan-Miao/l4dropwizard
本文是基于dropwizard入门之上的演进。
确保依赖都是最新的,或者自行解决版本冲突,比如jackson不同版本之间的类有所不同。
添加swagger依赖
<dependency> <groupId>com.smoketurner</groupId> <artifactId>dropwizard-swagger</artifactId> <version>1.1.2-1</version> </dependency>
在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<HelloWorldConfiguration> { @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,
结果如下:
注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。