使用openapi-generator进行自动生成

1. 原因

在使用Java Spring Boot创建Web API时,可以使用插件”openapi-generatorr”来根据创建的OpenAPI自动生成Spring Boot中使用的Rest API请求和响应的属性,并自动生成用于调用Rest API控制器的方法和响应模型。关于这些内容,本文将给予说明。

2. 环境

eclipse(版本:2022-12 (4.26.0))
java(版本:17)
spring boot 3.1.1
Gradle – Groovy

3. 步骤

(1)确认复制材料的层级。

a.png

在(1)的层次结构中,使用git(※提前下载Git)等工具,从以下网站复制资源。

b.png
c.png

确认副本已成功复制。(openapi-generator)

a.png
image.png

(4)使用Eclipse创建Java的Spring Boot(Gradle)项目(即使事先创建了也没有问题)。

image.png
image.png

将在步骤3中下载的文件夹复制到适用于eclipse插件的文件夹中。

d.png

(6)将文件夹名称更改为“org.openapi.generator”(与其他库名称保持一致)

image.png
image.png

在Eclipse中,显示”openapi-generator”。

image.png

对于初期的内容,将“//追加”的部分进行修改。

plugins {
	id 'java'
	id 'org.springframework.boot' version '3.1.1'
	id 'io.spring.dependency-management' version '1.1.0'
	id "org.openapi.generator" version "6.2.0" // 追加
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17' // 追加

java {
	sourceCompatibility = '17'
}

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
}

// 追加 Start
ext {
        // 出力先を設定
        openApiOutputDir = "$rootDir/generated"
}
// 出力したソースをビルドパスに追加
sourceSets.main.java.srcDirs += ["$openApiOutputDir/src/main/java"]
// 追加 End

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
// 追加 Start
	// 依存性を追加
	implementation 'org.openapitools:jackson-databind-nullable:0.2.1'
	implementation 'org.springframework.boot:spring-boot-starter-validation'
	implementation group: 'org.springdoc', name: 'springdoc-openapi-ui', version: '1.6.9'
	compileOnly 'io.swagger:swagger-annotations:1.6.2'
// 追加 End
	compileOnly 'org.projectlombok:lombok'
	developmentOnly 'org.springframework.boot:spring-boot-devtools'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
// 追加 Start
// (openApiの設定を追加)
openApiGenerate {
        generatorName = 'spring'
        inputSpec = "$rootDir/openapi/shukanTalentJohoBFF.yaml".toString() //対象のOpenAPI
        outputDir = "$openApiOutputDir"
        apiPackage = 'com.api'
        modelPackage = 'com.model'
        invokerPackage = "org.openapi.example.invoker"
        configOptions = [
                dateLibrary: 'java8',
                interfaceOnly: 'true',
                skipDefaultInterface: 'true'
        ]
}
// 追加 End
tasks.named('test') {
	useJUnitPlatform()
}
image.png

※ 「$rootDir/」是固定的,需要在后面指定存放创建结果的目录名称。

image.png

※ 「$rootDir/」是固定的,在其后面指定第②个工作表中准备的文件夹名称和本次要处理的OpenAPI yaml文件的名称。

image.png

(8) 执行openApiGenerate

image.png
image.png
image.png

确认输出目标

请确认以下组成部分

image.png
image.png
image.png

4. 最后

在创建Controller时,您可以继承“ShukanTalentJohoBFFApi.java”中的方法,并在其中引用“ShukanTalentJohoBFF.java”以使用模型。下一篇将留下关于“SQLGenerator”的文章。

广告
将在 10 秒后关闭
bannerAds