ホームページ Java &#&チュートリアル Spring BootをベースにしたAPIアノテーションとドキュメント生成を実装する方法

Spring BootをベースにしたAPIアノテーションとドキュメント生成を実装する方法

Jun 22, 2023 pm 12:04 PM
spring boot APIコメント ドキュメントの生成

Spring Boot は現在最も人気のある Java フレームワークの 1 つであり、迅速な開発、高度な統合、簡単なテストという利点があります。開発プロセスでは、フロントエンドとバックエンドのコラボレーションや将来のプロジェクトのメンテナンスを容易にするために API ドキュメントを作成する必要があることがよくあります。

ただし、API ドキュメントを手動で作成するのは非常に時間がかかり、エラーが発生しやすいため、この記事では、Spring Boot 独自のアノテーションと、API コメントとドキュメントを自動的に生成するいくつかのツールを使用する方法を紹介します。

1. Swagger

Swagger は、現在最も人気のある Java API アノテーションおよびドキュメント生成ツールの 1 つです。 Spring プロジェクトの注釈をスキャンすることで API ドキュメントを自動的に生成でき、インタラクティブな API 探索インターフェイスも提供できます。

Swagger を使用するには、Spring Boot プロジェクトに次の依存関係を追加する必要があります:

<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-swagger2</artifactId>
   <version>2.9.2</version>
</dependency>

<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-swagger-ui</artifactId>
   <version>2.9.2</version>
</dependency>
ログイン後にコピー

次に、以下に示すように、Spring Boot スタートアップ クラスにアノテーション @EnableSwagger2 を追加します。 #

@SpringBootApplication
@EnableSwagger2
public class DemoApplication {
   public static void main(String[] args) {
      SpringApplication.run(DemoApplication.class, args);
   }
}
ログイン後にコピー

次に、Swagger によって提供されるアノテーションをコントローラーのメソッドに追加して、API ドキュメントを生成できます。

たとえば、次は単純な UserController です:

@RestController
@RequestMapping("/user")
public class UserController {
  
   @ApiOperation(value = "获取用户列表", notes = "获取所有用户的列表")
   @GetMapping("/list")
   public List<User> getUserList() {
      return userService.getUserList();
   }
  
   @ApiOperation(value = "创建用户", notes = "根据User对象创建用户")
   @PostMapping("/")
   public String postUser(@RequestBody User user) {
      userService.saveUser(user);
      return "success";
   }
  
   @ApiOperation(value = "获取用户详情", notes = "根据id获取用户的详情")
   @GetMapping("/{id}")
   public User getUser(@PathVariable Long id) {
      return userService.getUserById(id);
   }
  
   @ApiOperation(value = "更新用户信息", notes = "根据id更新用户的信息")
   @PutMapping("/{id}")
   public String putUser(@PathVariable Long id, @RequestBody User user) {
      User u = userService.getUserById(id);
      if (u == null) {
          return "用户不存在";
      }
      userService.updateUser(user);
      return "success";
   }
  
   @ApiOperation(value = "删除用户", notes = "根据id删除用户")
   @DeleteMapping("/{id}")
   public String deleteUser(@PathVariable Long id) {
      User u = userService.getUserById(id);
      if (u == null) {
          return "用户不存在";
      }
      userService.deleteUser(id);
      return "success";
   }
}
ログイン後にコピー

注釈 @ApiOperation およびその他の関連する注釈を追加すると、Swagger は API ドキュメントを自動的に生成し、対話型の API 探索インターフェイスを提供します。

http://localhost:8080/swagger-ui.html にアクセスすると、API ドキュメントを表示できます。

2. Spring REST Docs

Spring REST Docs は、AsciiDoc、Markdown、または HTML 形式を使用して API ドキュメントを作成できる、もう 1 つの Java API アノテーションおよびドキュメント生成ツールです。

Spring REST ドキュメントを使用して、Spring Boot プロジェクトに次の依存関係を追加する必要があります:

<dependency>
   <groupId>org.springframework.restdocs</groupId>
   <artifactId>spring-restdocs-mockmvc</artifactId>
   <version>2.0.2.RELEASE</version>
</dependency>
ログイン後にコピー

次に、次のように、テスト クラスにアノテーション @WebMvcTest を追加します。

@RunWith(SpringRunner.class)
@WebMvcTest(UserController.class)
public class UserControllerTests {
  
   @Autowired
   private MockMvc mockMvc;
  
   @Test
   public void getUserList() throws Exception {
      this.mockMvc.perform(get("/user/list"))
         .andExpect(status().isOk())
         .andDo(document("getUserList", 
             responseFields(
                 fieldWithPath("[].id").description("用户ID"),
                 fieldWithPath("[].name").description("用户名"),
                 fieldWithPath("[].age").description("用户年龄")
             )));
   }
  
   @Test
   public void postUser() throws Exception {
      User user = new User();
      user.setName("Tom");
      user.setAge(20);
      ObjectMapper mapper = new ObjectMapper();
      String userJson = mapper.writeValueAsString(user);
      this.mockMvc.perform(post("/user/")
         .contentType(MediaType.APPLICATION_JSON)
         .content(userJson))
         .andExpect(status().isOk())
         .andDo(document("postUser", 
             requestFields(
                 fieldWithPath("name").description("用户名"),
                 fieldWithPath("age").description("用户年龄")
             )));
   }
  
   @Test
   public void getUser() throws Exception {
      this.mockMvc.perform(get("/user/{id}", 1))
         .andExpect(status().isOk())
         .andDo(document("getUser", 
             pathParameters(
                 parameterWithName("id").description("用户ID")
             ),
             responseFields(
                 fieldWithPath("id").description("用户ID"),
                 fieldWithPath("name").description("用户名"),
                 fieldWithPath("age").description("用户年龄")
             )));
   }
  
   @Test
   public void putUser() throws Exception {
      User user = new User();
      user.setName("Tom");
      user.setAge(20);
      ObjectMapper mapper = new ObjectMapper();
      String userJson = mapper.writeValueAsString(user);
      this.mockMvc.perform(put("/user/{id}", 1)
         .contentType(MediaType.APPLICATION_JSON)
         .content(userJson))
         .andExpect(status().isOk())
         .andDo(document("putUser", 
             pathParameters(
                 parameterWithName("id").description("用户ID")
             ),
             requestFields(
                 fieldWithPath("name").description("用户名"),
                 fieldWithPath("age").description("用户年龄")
             )));
   }
  
   @Test
   public void deleteUser() throws Exception {
      this.mockMvc.perform(delete("/user/{id}", 1))
         .andExpect(status().isOk())
         .andDo(document("deleteUser", 
             pathParameters(
                 parameterWithName("id").description("用户ID")
             )));
   }
}
ログイン後にコピー
対応するアノテーションとフィールドの説明を追加すると、Spring REST Docs は API ドキュメントを自動的に生成し、/target/generated-snippets ディレクトリに保存します。これを最終的なドキュメント形式に変換できます。

3. 概要

この記事では、Spring Boot に基づいて API アノテーションとドキュメント生成を実装する 2 つの方法を紹介します。 Swagger は便利で使いやすいメソッドを提供し、生成されるドキュメントは比較的直観的で理解しやすいため、小規模なプロジェクトや迅速な開発に適しています。 Spring REST Docs は、より柔軟でカスタマイズ可能なアプローチを提供し、高品質の API ドキュメントを必要とするより複雑なプロジェクトやシナリオに適用できます。

どの方法を選択する場合でも、API ドキュメントが正しく、標準化され、明確であることが重要です。これにより、フロントエンドとバックエンドのコラボレーションが促進されるだけでなく、プロジェクトの長期的なメンテナンスにも役立ちます。

以上がSpring BootをベースにしたAPIアノテーションとドキュメント生成を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Spring Boot + MyBatis + Atomikos + MySQL (ソースコード付き) Spring Boot + MyBatis + Atomikos + MySQL (ソースコード付き) Aug 15, 2023 pm 04:12 PM

実際のプロジェクトでは、分散トランザクションを避けるように努めます。ただし、場合によってはサービスを分割する必要があり、分散トランザクションの問題が発生することがあります。同時に、分散取引についても面接で質問されるので、このケースで練習し、面接で 123 について話すことができます。

Spring Boot を通じて多言語サポートと国際アプリケーションを実現 Spring Boot を通じて多言語サポートと国際アプリケーションを実現 Jun 23, 2023 am 09:09 AM

グローバリゼーションの進展に伴い、多言語サポートや国際化機能を提供する必要のある Web サイトやアプリケーションがますます増えています。開発者にとって、これらの機能を実装することは、言語翻訳、日付、時刻、通貨の形式など、多くの側面を考慮する必要があるため、簡単な作業ではありません。ただし、SpringBoot フレームワークを使用すると、多言語サポートと国際アプリケーションを簡単に実装できます。まず、SpringBoot が提供する LocaleResolver インターフェースについて理解しましょう。ロック

Spring Boot と MyBatis Plus に基づいて ORM マッピングを実装する Spring Boot と MyBatis Plus に基づいて ORM マッピングを実装する Jun 22, 2023 pm 09:27 PM

Java Web アプリケーションの開発プロセスでは、ORM (Object-RelationalMapping) マッピング テクノロジを使用してデータベース内のリレーショナル データを Java オブジェクトにマッピングし、開発者がデータにアクセスして操作するのを容易にします。 SpringBoot は、最も人気のある Java Web 開発フレームワークの 1 つとして、MyBatis を統合する方法を提供しています。MyBatisPlus は、MyBatis に基づいて拡張された ORM フレームワークです。

Spring Boot と NoSQL データベースの統合と使用 Spring Boot と NoSQL データベースの統合と使用 Jun 22, 2023 pm 10:34 PM

インターネットの発展に伴い、ビッグデータ分析とリアルタイム情報処理が企業にとって重要なニーズとなっています。このようなニーズを満たすために、従来のリレーショナル データベースはビジネスやテクノロジー開発のニーズを満たせなくなりました。代わりに、NoSQL データベースを使用することが重要なオプションになっています。この記事では、最新のアプリケーションの開発と展開を可能にする、NoSQL データベースと統合された SpringBoot の使用について説明します。 NoSQL データベースとは何ですか? NoSQL は SQL だけではありません

Spring Boot を使用してビッグデータ処理アプリケーションを構築する方法 Spring Boot を使用してビッグデータ処理アプリケーションを構築する方法 Jun 23, 2023 am 09:07 AM

ビッグデータ時代の到来により、ますます多くの企業がビッグデータの価値を理解し、認識し、ビジネスに活用し始めています。それに伴う問題は、この大規模なデータ フローをどのように処理するかです。この場合、ビッグ データ処理アプリケーションは、すべての企業が検討しなければならないものになっています。開発者にとっては、SpringBoot を使用して効率的なビッグデータ処理アプリケーションを構築する方法も非常に重要な問題です。 SpringBoot は非常に人気のある Java フレームワークです。

Spring Boot と Apache ServiceMix を使用した ESB システムの構築 Spring Boot と Apache ServiceMix を使用した ESB システムの構築 Jun 22, 2023 pm 12:30 PM

現代のビジネスがさまざまな異種のアプリケーションやシステムにますます依存するようになるにつれて、企業の統合がさらに重要になります。 Enterprise Service Bus (ESB) は、さまざまなシステムとアプリケーションを接続して共通のデータ交換サービスとメッセージ ルーティング サービスを提供し、エンタープライズ レベルのアプリケーション統合を実現する統合アーキテクチャ モデルです。 SpringBootとApacheServiceMixを使えば簡単にESBシステムを構築できるので、その実装方法を紹介します。 SpringBoot と A

Vue での HTML から HTMLDocx への変換の実装: シンプルで効率的なドキュメント生成方法 Vue での HTML から HTMLDocx への変換の実装: シンプルで効率的なドキュメント生成方法 Jul 22, 2023 am 08:49 AM

Vue での HTML から HTMLDocx への変換の実装: シンプルで効率的なドキュメント生成方法 最新の Web 開発では、ドキュメントの生成が一般的な要件です。 HTML は Web ページの基本構造であり、DOCX は一般的なオフィス ドキュメント形式です。場合によっては、特定のニーズを満たすために HTML を DOCX 形式に変換する必要がある場合があります。この記事では、Vue を使用して HTML を HTMLDocx に変換する簡単かつ効率的な方法を紹介します。まず、インストールする必要があります

Spring Boot は MySQL の読み取り/書き込み分離テクノロジを実装します Spring Boot は MySQL の読み取り/書き込み分離テクノロジを実装します Aug 15, 2023 pm 04:52 PM

読み取りと書き込みの分離を実現する方法、Spring Boot プロジェクト、データベースは MySQL、永続層は MyBatis を使用します。

See all articles