zoukankan      html  css  js  c++  java
  • 使用dropwizard(5)--加入swagger


    前言

    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,
    结果如下:

  • 相关阅读:
    使用可传输表空间向rac环境迁移数据
    跨平台表空间传输(linux 10g表空间跨平台迁移到window 11g
    RAC+ASM在单机上恢复的过程
    Oracle RMAN进行的一次有益测试
    ORA-00600 4194 错误
    oracle表分区详解
    数据库最大连接数
    web传参
    内置
    键盘事件
  • 原文地址:https://www.cnblogs.com/woshimrf/p/dropwizard-with-swagger-example.html
Copyright © 2011-2022 走看看