Saltar al contenido principal

Generá una API cliente Feign a partir del contrato

  1. Importá GenerateTask (principio de build.gradle)

    build.gradle
    import org.openapitools.generator.gradle.plugin.tasks.GenerateTask
  2. Necesitamos las dependencias Spring Cloud Starter OpenFeign, Feign OkHttp, Feign Jackson y Feign Gson. Agregalas en la sección de dependencies de build.gradle:

    build.gradle
    implementation 'org.springframework.cloud:spring-cloud-starter-openfeign:4.2.1'
    implementation 'io.github.openfeign:feign-okhttp:13.5'
    implementation 'io.github.openfeign:feign-jackson:13.5'
    implementation 'io.github.openfeign:feign-gson:13.5'
  3. Configurá una nueva tarea de openapi-generator (al final de build.gradle):

    build.gradle
    tasks.register("openApiGenerate_feign_jsonplaceholder", GenerateTask) {
    apiPackage = "com.typicode.jsonplaceholder.api".toString()
    configOptions = [
    "feignClient": "true",
    "interfaceOnly": "true",
    "useEnumCaseInsensitive": "true",
    "useJakartaEe": "true"
    ]
    generateApiTests = false
    generateApiDocumentation = false
    generateModelTests = false
    generateModelDocumentation = false
    generatorName = "java"
    inputSpec = "$rootDir/src/main/resources/openapi/jsonplaceholder.yaml".toString()
    library = "feign"
    modelPackage = "com.typicode.jsonplaceholder.model".toString()
    outputDir = layout.buildDirectory.dir("generated/sources/openapi").get().asFile.toString()
    }
    • Podés encontrar más información sobre las diferentes configuraciones posibles en la página de GitHub del plugin de Gradle para OpenAPI Generator.
    • Recomendaciones personales:
      • En apiPackage usá la url que vamos a integrar en formato Java, y que termine en .api (jsonplaceholder.typicode.com -> com.typicode.jsonplaceholder.api)
      • La misma idea para modelPackage (jsonplaceholder.typicode.com -> com.typicode.jsonplaceholder.model)
    • Es importante asegurarte de que inputspec esté apuntando al archivo YAML de la OpenAPI Specification deseada.
  4. Asegurate de que compileJava ahora dependa de ambas tareas de generación de OpenAPI:

    build.gradle
    tasks.named('compileJava') {
    dependsOn 'openApiGenerate', 'openApiGenerate_feign_jsonplaceholder'
    }
  5. Ahora que todo está configurado, ejecutá la tarea Build. Cuando la tarea termine, si chequeás la carpeta build\generated\sources\openapi, vas a encontrar una nueva carpeta jsonplaceholder.typicode.com con la representación de la OpenAPI Specification en código Java, lista para ser usada.

    carpeta de jsonplaceholder

Commiteá el progreso hasta ahora.

git add .
git commit -m "código de secondary adapter api externa generado a partir de una openapi specification"