日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了從OpenAPI 3生成Java Spring API的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我嘗試從OpenAPI v3 YAML文件生成Spring REST接口。
內部版本顯示:

Successfully generated code to property(class java.lang.String, property(class java.lang.String, fixed(class java.lang.String, /home/zolv/workspaces/main/generation-test/src/main/java)))

Deprecated Gradle features were used in this build, making it 
incompatible with Gradle 6.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/5.5/userguide/command_line_interface.html#sec:command_line_warnings

但輸出目錄中沒有生成任何代碼。

我遵循了OpenAPI generator gradle plugin doc文檔。

我的build.gradle:

plugins {
  id 'java-library'
  id "org.openapi.generator" version "4.1.1"
}

repositories {
  jcenter()
}

dependencies {
    implementation "org.openapitools:openapi-generator-gradle-plugin:3.3.4"
}

openApiGenerate {
  generatorName = "spring"
  inputSpec = "$rootDir/docs/openapi/api.yml".toString()
  outputDir = "$rootDir/src/main/java".toString()
  apiPackage = "org.openapi.example.api"
  invokerPackage = "org.openapi.example.invoker"
  modelPackage = "org.openapi.example.model"
  modelFilesConstrainedTo = [
          "Error"
  ]
  configOptions = [
      dateLibrary: "java8"
  ]
}

我的api.yml:

openapi: 3.0.2
info:
  title: API Documentation
  version: 1.0.0
servers:
  - url: http://localhost:8080/
tags:
  - name: Users
paths:
  /users:
    post:
      tags:
        - Users
      summary: Create user
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateUserRequest'
      responses:
        201:
          description: New user created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponse'
components:
  schemas:
    CreateUserRequest:
      title: CreateUserResponse
      required:
        - username
        - password
      type: object
      properties:
        username:
          type: string
          description: Users's username
          example: example@test.com
        password:
          type: string
          description: User's password
          example: $tR0nG_pA55vv0Rd
    UserResponse:
      title: UserResponse
      required:
        - id
        - username
      type: object
      properties:
        id:
          type: string
          description: Users's identifier
          example: "1"
        username:
          type: string
          description: Users's username
          example: example@test.com

api.yml已由生成器正確收集(如果文件中存在任何語法錯誤,則生成失敗)。

構建日志顯示:Successfully generated code to property(...,這看起來很可疑。并不意味著該屬性包含生成結果?

Gradle版本:

------------------------------------------------------------
Gradle 5.5
------------------------------------------------------------

Build time:   2019-06-28 17:36:05 UTC
Revision:     83820928f3ada1a3a1dbd9a6c0d47eb3f199378f

Kotlin:       1.3.31
Groovy:       2.5.4
Ant:          Apache Ant(TM) version 1.9.14 compiled on March 12 2019
JVM:          11.0.4 (Ubuntu 11.0.4+11-post-Ubuntu-1ubuntu218.04.3)
OS:           Linux 4.15.0-1050-oem amd64

編輯:

我已經檢查了gradle plugin中的示例,上面的代碼可以在Gradle v4上運行,但不能在5上運行。我仍在調查。

推薦答案

問題似乎出在modelFilesConstrainedTo中-它將類限制為Error。將其注釋掉即可工作(將生成類)。

但是,還有一個問題:outputDir。使用您的設置,它將生成如下內容:

這是錯誤的。此外,由于它是生成的源,因此不應轉到src/main。更好的替代方法是在build目錄中生成它,然后將其添加到編譯類路徑中。請看一下我為您創建的the demo項目,下面是build.gradle.kts(它幾乎與Groovy類似):

plugins {
    id("java-library")
    id("org.openapi.generator").version("4.0.1")
    id("org.springframework.boot").version("2.1.8.RELEASE")
}

repositories {
    jcenter()
}

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-web:2.1.8.RELEASE")
    api("io.springfox:springfox-swagger2:2.8.0")
    api("io.springfox:springfox-swagger-ui:2.8.0")
    api("org.openapitools:jackson-databind-nullable:0.1.0")
}

val spec = "$rootDir/docs/openapi/api.yml"
val generatedSourcesDir = "$buildDir/generated/openapi"

openApiGenerate {
    generatorName.set("spring")

    inputSpec.set(spec)
    outputDir.set(generatedSourcesDir)

    apiPackage.set("org.openapi.example.api")
    invokerPackage.set("org.openapi.example.invoker")
    modelPackage.set("org.openapi.example.model")

    configOptions.set(mapOf(
            "dateLibrary" to "java8"
    ))
}

sourceSets {
    getByName("main") {
        java {
            srcDir("$generatedSourcesDir/src/main/java")
        }
    }
}

tasks {
    val openApiGenerate by getting

    val compileJava by getting {
        dependsOn(openApiGenerate)
    }
}

請注意,您還需要在生成的源代碼(批注和Spring類)中使用一組依賴項。

這篇關于從OpenAPI 3生成Java Spring API的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標簽:API Java OpenAPI Spring 生成
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定