swagger condegen의 자동 생성 메모 (spring) -1

swagger codegen의 자동 생성 메모



공식 정보가 너무 많아 조금 잘 모르기 때문에 메모를 남깁니다.

사용한 이유


  • 문서를 절대 정의로 한 개발을 하고 싶었으니까.
  • 클라이언트도 출력 할 수 있어 테스트하기 쉬웠기 때문에.

  • generate 해보기



    어려운 일은 없고, ↓로 할 수 있습니다.
    java -jar swagger-codegen-cli.jar generate \
      -i swagger.json \
      -l java \
      -o outfolder \
    

    그러나 package 구성이나 프로젝트 이름이 좀처럼 실용적이지 않거나 하는군요.



    옵션 지정 가능



    공식에 따라 확인합니다.
    spring 사용하고 싶었기 때문에 spring의 option을 조사합니다.
    java -jar swagger-codegen-cli-2.4.7.jar config-help -l spring
            sortParamsByRequiredFlag
                Sort method arguments to place required parameters before optional parameters. (Default: true)
    
            ensureUniqueParams
                Whether to ensure parameter names are unique in an operation (rename parameters that are not). (Default: true)
    
            allowUnicodeIdentifiers
                boolean, toggles whether unicode identifiers are allowed in names or not, default is false (Default: false)
    
            modelPackage
                package for generated models
    
            apiPackage
                package for generated api classes
    
            invokerPackage
                root package for generated code
    
            groupId
                groupId in generated pom.xml
    
            artifactId
                artifactId in generated pom.xml
    
            artifactVersion
                artifact version in generated pom.xml
    
            artifactUrl
                artifact URL in generated pom.xml
    
            artifactDescription
                artifact description in generated pom.xml
    
            scmConnection
                SCM connection in generated pom.xml
    
            scmDeveloperConnection
                SCM developer connection in generated pom.xml
    
            scmUrl
                SCM URL in generated pom.xml
    
            developerName
                developer name in generated pom.xml
    
            developerEmail
                developer email in generated pom.xml
    
            developerOrganization
                developer organization in generated pom.xml
    
            developerOrganizationUrl
                developer organization URL in generated pom.xml
    
            licenseName
                The name of the license
    
            licenseUrl
                The URL of the license
    
            sourceFolder
                source folder for generated code
    
            localVariablePrefix
                prefix for generated code members and local variables
    
            serializableModel
                boolean - toggle "implements Serializable" for generated models (Default: false)
    
            bigDecimalAsString
                Treat BigDecimal values as Strings to avoid precision loss. (Default: false)
    
            fullJavaUtil
                whether to use fully qualified name for classes under java.util. This option only works for Java API client (Default: false)
    
            hideGenerationTimestamp
                hides the timestamp when files were generated
    
            withXml
                whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML) (Default: false)
    
            dateLibrary
                Option. Date library to use
                    joda - Joda (for legacy app only)
                    legacy - Legacy java.util.Date (if you really have a good reason not to use threetenbp
                    java8-localdatetime - Java 8 using LocalDateTime (for legacy app only)
                    java8 - Java 8 native JSR310 (preferred for jdk 1.8+) - note: this also sets "java8" to true
                    threetenbp - Backport of JSR310 (preferred for jdk < 1.8)
    
            java8
                Option. Use Java8 classes instead of third party equivalents
                    true - Use Java 8 classes such as Base64
                    false - Various third party libraries as needed
    
            disableHtmlEscaping
                Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields) (Default: false)
    
            title
                server title name or client service name
    
            configPackage
                configuration package for generated code
    
            basePackage
                base package (invokerPackage) for generated code
    
            interfaceOnly
                Whether to generate only API interface stubs without the server files. (Default: false)
    
            delegatePattern
                Whether to generate the server files using the delegate pattern (Default: false)
    
            singleContentTypes
                Whether to select only one produces/consumes content-type by operation. (Default: false)
    
            java8
                use java8 default interface (Default: false)
    
            async
                use async Callable controllers (Default: false)
    
            responseWrapper
                wrap the responses in given type (Future,Callable,CompletableFuture,ListenableFuture,DeferredResult,HystrixCommand,RxObservable,RxSingle or fully qualified type)
    
            useTags
                use tags for creating interface and controller classnames (Default: false)
    
            useBeanValidation
                Use BeanValidation API annotations (Default: false)
    
            implicitHeaders
                Use of @ApiImplicitParams for headers. (Default: false)
    
            swaggerDocketConfig
                Generate Spring Swagger Docket configuration class. (Default: false)
    
            useOptional
                Use Optional container for optional parameters (Default: false)
    
            generateForOpenFeign
                Generate for usage with OpenFeign (instead of feign) (Default: false)
    
            library
                library template (sub-template) to use (Default: spring-boot)
                    spring-boot - Spring-boot Server application using the SpringFox integration.
                    spring-mvc - Spring-MVC Server application using the SpringFox integration.
                    spring-cloud - Spring-Cloud-Feign client with Spring-Boot auto-configured settings.
    

    지정해 보았습니다.



    제대로 전부 Package를 지정하지 않으면 default의 io.swagger에 출력되므로 주의
    {
        "groupId": "hoge",
        "artifactId": "hoge",
        "artifactVersion": "1.0.0-SNAPSHOT",
        "basePackage": "hoge",
        "configPackage": "hoge",
        "modelPackage" "hoge",
        "apiPackage" "hoge",
        "java8": true,
        "useBeanValidation": true
    }
    

    generate


    java -jar swagger-codegen-cli-2.4.7.jar generate \
     -i ./swagger.yml \
     -l spring \
     -o ./ \
     -c ./config.json
    

    mvn install



    실망


    pom 다시 쓰기



    추가
    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.1</version>
    </dependency>
    

    mvn install



    성공



    말하자면 Spring의 버전은?



    오래된
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.9.RELEASE</version>
        </parent>
    
    

    참고



    htps : // 기주 b. 코 m / 슈게 r - 아피 / 슈 게 r - 코 데겐
    htps : // 기주 b. 코 m / 슈 게 r- 아피 / 슈 게 r 루 코 데 겐 / ぃ き / 세 r

    좋은 웹페이지 즐겨찾기