APIファーストな開発を行う
JHipsterアプリケーションを生成する際、「他に使用したい技術はありますか?」と尋ねられたら、API first development using OpenAPI-generator
オプションを選択して、OpenAPI-generatorを活用します。以下のように設定します:
# ... 他のプロンプトへの回答 ...
? Which other technologies would you like to use? (Press <space> to select, <a> to toggle all, <i> to invert selection,
and <enter> to proceed)
◯ Apache Kafka as asynchronous messages broker
◯ Apache Pulsar as asynchronous messages broker
❯◉ API first development using OpenAPI-generator
このオプションを選択すると、ビルドツール(MavenまたはGradle)がOpenAPI(Swagger)仕様書(OAS)ファイルからAPIコードを生成するように構成されます。Swagger v2およびOpenAPI v3の両方の形式がサポートされています。
APIファースト開発の根拠
APIファースト開発、または「契約優先開発」では、最初にAPI仕様書を作成し、そのAPI仕様からコードを生成します。これは、コードからドキュメントを生成する方法とは対照的です。
APIファースト開発には次の利点があります:
- APIは実装の結果ではなく、利用者向けに設計されます。
- 仕様ファイルを使用して新しいサーバーエンドポイントをモックでき、フロントエンドとバックエンドの分離が進みます。
- 仕様ファイルの使用にはライブサーバーが不要です。
デフォルト構成
このHOWTOでは、JHipsterのデフォルト構成を使用し、Springのデリゲートパターンを利用します。Spring用のOpenAPI Generatorによって生成されたコードは、実装用のモデルとデリゲートを生成します。
プラグインのデフォルト構成は以下の通り(Maven)で、pom.xml
のプロジェクトレベルのbuild
プロファイルに定義されています。この構成はJHipsterによってGradleプロジェクトにも適用されます。
<plugin>
<!--
openapi-generator-cliを使用して、OpenAPI定義ファイルから
Spring-MVCエンドポイントのスタブをコンパイル時に生成するプラグイン
-->
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>${openapi-generator-maven-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${project.basedir}/src/main/resources/swagger/api.yml</inputSpec>
<generatorName>spring</generatorName>
<apiPackage>demo.jhipster.myapp.web.api</apiPackage>
<modelPackage>demo.jhipster.myapp.service.api.dto</modelPackage>
<supportingFilesToGenerate>ApiUtil.java</supportingFilesToGenerate>
<skipValidateSpec>false</skipValidateSpec>
<configOptions>
<!-- delegatePatternはspringジェネレータにのみ使用可能 -->
<delegatePattern>true</delegatePattern>
<title>jhipster</title>
<useSpringBoot3>true</useSpringBoot3>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>
ℹ️ JHipsterユーザーは、ビルドツールを環境の特性や組織で採用されている標準に合わせて調整することが推奨されます。JHipsterはスケールに対応できるツールとプラクティスを備え、プロジェクトに適した基盤を提供します。JHipsterで使用するSpringのデリゲートパターンが組織の標準でない場合は、
configOption:delegatePattern
を削除できます(デフォルトはfalse
です)。JHipsterのデフォルト動作に変更を加える際の影響を理解することが求められます。JHipsterはSpringの使用方法を教えることはできないため、Springに対する変更がJHipsterで文書化できない動作を引き起こす可能性があります。
openapi-generator-maven-pluginの使用
OpenAPI仕様書(OAS)ファイルは、プラグインのinputSpec
要素で定義されたファイルからジェネレータによって読み込まれます。JHipsterのOASのデフォルト場所はsrc/main/resources/swagger/api.yml
です。プラグインはOASからインターフェースとデータ転送オブジェクト(DTO)を生成します。インターフェースには、HTTPステータス501 未実装
と空の本文で応答するデフォルトメソッドが含まれます。
OpenAPI仕様書を用いたAPIの開発
このガイドでは、簡潔さのためにOpenAPIのクラシックなペットストア仕様を使用します。OASの記述はガイドの範囲外ですが、API開発者はswagger-editorなどのツールを使用してOASを記述し、src/main/resources/swagger/api.yml
に配置できます。また、多くのIDEがOAS編集用ツールを提供しています。