Swagger

5824 ワード

スワーガーとは?
Swagerは、開発者がREST APIサービスを設計、構築、記録できるプロジェクトです.
Swaggerは次の場合に役立ちます.
他の開発チームと協力します.
配備されたプロジェクトのメンテナンスを行います.
フロントエンドプログラムを作成している場合は、バックエンドのAPIを呼び出します.
機能
  • API設計
  • APIバージョン
  • APIドキュメント
  • APIテスト
  • API標準化
  • 長所
  • API情報実行可能
  • APIは、パラメータ、応答、および例などの仕様情報
  • を容易に伝達することができる.
  • は、実際に使用するパラメータテスト
  • に合格することができる.
    Swager Toolタイプ
  • Swagger Codegen:Swager定義に従ってクライアント/サーバコードを生成するCLIツール.
  • Swagger UI:Swagger UIは、Swager APIリストをHTML形式で表示できるツールです.
  • Swagger Editor:Swagger規格に従ってAPI設計書/リストの編集を作成します.
  • pom.xml
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.9.2</version> 
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.9.2</version>
    </dependency>
    SwaggerConfig.java
    package co.kr.testapi.config;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.security.core.annotation.AuthenticationPrincipal;
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.builders.ParameterBuilder;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.schema.ModelRef;
    import springfox.documentation.service.ApiInfo;
    import springfox.documentation.service.Contact;
    import springfox.documentation.service.Parameter;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    
    @Configuration
    @EnableSwagger2
    public class SwaggerConfig {
    
        @Bean
        public Docket api() {
            ParameterBuilder aParameterBuilder = new ParameterBuilder();
            aParameterBuilder.name("X-AUTH-TOKEN") //헤더 이름
                    .description("Access Tocken") //설명
                    .modelRef(new ModelRef("string"))
                    .parameterType("header")
                    .required(false)
                    .build();
    
            List<Parameter> aParameters = new ArrayList<>();
            aParameters.add(aParameterBuilder.build());
    
            return new Docket(DocumentationType.SWAGGER_2)
                    .globalOperationParameters(aParameters)
                    .ignoredParameterTypes(AuthenticationPrincipal.class)
                    .select()
                    .apis(RequestHandlerSelectors.basePackage("co.kr.testapi.controller"))
                    .build()
                    .apiInfo(this.apiInfo());
        }
    
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder()
                    .title("TEST API")
                    .description("TEST API \r\n" + " + 업데이트 일시 : " + new Date())
                    .termsOfServiceUrl("https://git.testapi.co.kr")
                    .contact(new Contact("개발팀", "http://www.testapi.co.kr", "[email protected]"))
                    .license("테스트")
                    .licenseUrl("http://www.testapi.co.kr")
                    .version("1.0")
                    .build();
        }
    
    }