亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁(yè) Java java教程 如何實(shí)現(xiàn)基於Spring Boot的API註解和文件生成

如何實(shí)現(xiàn)基於Spring Boot的API註解和文件生成

Jun 22, 2023 pm 12:04 PM
spring boot api註釋 文件生成

Spring Boot作為目前最受歡迎的Java框架之一,擁有快速開發(fā)、高度整合、易於測(cè)試等優(yōu)點(diǎn)。在開發(fā)過(guò)程中,我們經(jīng)常需要撰寫API文檔,方便前後端協(xié)作以及未來(lái)專案維護(hù)。

然而,手動(dòng)撰寫API文件是十分耗時(shí)且容易出錯(cuò)的,因此本文將介紹如何利用Spring Boot自帶的註解和一些工具來(lái)自動(dòng)產(chǎn)生API註解和文件。

一、Swagger

Swagger是目前最受歡迎的Java API註解和文件產(chǎn)生工具之一。它可以透過(guò)掃描Spring專案中的註釋自動(dòng)產(chǎn)生API文檔,同時(shí)還可以提供互動(dòng)式的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的啟動(dòng)類別中加入註解@EnableSwagger2,如下所示:

@SpringBootApplication
@EnableSwagger2
public class DemoApplication {
   public static void main(String[] args) {
      SpringApplication.run(DemoApplication.class, args);
   }
}

然後,你可以在你的Controller的方法上加上Swagger提供的註解來(lái)產(chǎn)生API文件。

例如,以下是一個(gè)簡(jiǎn)單的UserController:

@RestController
@RequestMapping("/user")
public class UserController {
  
   @ApiOperation(value = "獲取用戶列表", notes = "獲取所有用戶的列表")
   @GetMapping("/list")
   public List<User> getUserList() {
      return userService.getUserList();
   }
  
   @ApiOperation(value = "創(chuàng)建用戶", notes = "根據(jù)User對(duì)象創(chuàng)建用戶")
   @PostMapping("/")
   public String postUser(@RequestBody User user) {
      userService.saveUser(user);
      return "success";
   }
  
   @ApiOperation(value = "獲取用戶詳情", notes = "根據(jù)id獲取用戶的詳情")
   @GetMapping("/{id}")
   public User getUser(@PathVariable Long id) {
      return userService.getUserById(id);
   }
  
   @ApiOperation(value = "更新用戶信息", notes = "根據(jù)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 = "根據(jù)id刪除用戶")
   @DeleteMapping("/{id}")
   public String deleteUser(@PathVariable Long id) {
      User u = userService.getUserById(id);
      if (u == null) {
          return "用戶不存在";
      }
      userService.deleteUser(id);
      return "success";
   }
}

透過(guò)加入註解@ApiOperation和其他相關(guān)的註解,Swagger將會(huì)自動(dòng)產(chǎn)生API文檔,並提供互動(dòng)式的API探索介面。

你可以透過(guò)造訪http://localhost:8080/swagger-ui.html來(lái)檢視你的API文件。

二、Spring REST Docs

Spring REST Docs是另一個(gè)Java API註解和文件產(chǎn)生工具,它允許你使用AsciiDoc、Markdown或HTML格式來(lái)編寫API文件。

使用Spring REST Docs,你需要在你的Spring Boot專案中加入以下依賴:

<dependency>
   <groupId>org.springframework.restdocs</groupId>
   <artifactId>spring-restdocs-mockmvc</artifactId>
   <version>2.0.2.RELEASE</version>
</dependency>

接著,在你的測(cè)試類別中加入註解@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")
             )));
   }
}

透過(guò)加入對(duì)應(yīng)的註解和欄位描述,Spring REST Docs會(huì)自動(dòng)產(chǎn)生API文檔,並將其儲(chǔ)存在/target/generated-snippets目錄中,你可以將其轉(zhuǎn)換為最終的文檔格式。

三、總結(jié)

本文介紹了兩種實(shí)作基於Spring Boot的API註解和文件產(chǎn)生的方法。 Swagger提供了一種方便、易用的方式,生成的文件也比較直觀易懂,適合小型專案或快速開發(fā)。而Spring REST Docs則提供了更靈活、可自訂的方式,可以適用於更複雜的專案和對(duì)API文件品質(zhì)要求較高的場(chǎng)景。

無(wú)論你選擇了哪種方式,API文件的正確、規(guī)範(fàn)和清晰是必不可少的,它不僅方便前後端協(xié)作,也有助於你的專案長(zhǎng)期維護(hù)。

以上是如何實(shí)現(xiàn)基於Spring Boot的API註解和文件生成的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
Vue中實(shí)作HTML到HTMLDocx的轉(zhuǎn)換:一種簡(jiǎn)單而有效率的文件產(chǎn)生方法 Vue中實(shí)作HTML到HTMLDocx的轉(zhuǎn)換:一種簡(jiǎn)單而有效率的文件產(chǎn)生方法 Jul 22, 2023 am 08:49 AM

Vue中實(shí)作HTML到HTMLDocx的轉(zhuǎn)換:一種簡(jiǎn)單而有效率的文件產(chǎn)生方法在現(xiàn)代Web開發(fā)中,產(chǎn)生文件是一個(gè)常見的需求。 HTML是Web頁(yè)面的基本結(jié)構(gòu),而DOCX是一種常見的辦公室文件格式。在某些情況下,我們可能需要將HTML轉(zhuǎn)換為DOCX格式以滿足特定的需求。本文將介紹一種簡(jiǎn)單且有效率的方法,使用Vue來(lái)實(shí)作HTML到HTMLDocx的轉(zhuǎn)換。首先,我們需要安裝

如何使用Spring Boot建立大數(shù)據(jù)處理應(yīng)用 如何使用Spring Boot建立大數(shù)據(jù)處理應(yīng)用 Jun 23, 2023 am 09:07 AM

隨著大數(shù)據(jù)時(shí)代的到來(lái),越來(lái)越多的企業(yè)開始了解並認(rèn)識(shí)到大數(shù)據(jù)的價(jià)值,並將其運(yùn)用到商業(yè)中。而隨之而來(lái)的問(wèn)題就是如何處理這些大流量的數(shù)據(jù)。在這種情況下,大數(shù)據(jù)處理應(yīng)用程式成為了每個(gè)企業(yè)必須考慮的事情。而對(duì)於開發(fā)人員而言,如何使用SpringBoot建立一個(gè)高效的大數(shù)據(jù)處理應(yīng)用程式也是一個(gè)非常重要的問(wèn)題。 SpringBoot是一個(gè)非常流行的Java框架,它可以讓

Spring Boot+MyBatis+Atomikos+MySQL(附源碼) Spring Boot+MyBatis+Atomikos+MySQL(附源碼) Aug 15, 2023 pm 04:12 PM

我們?cè)趯?shí)際專案中,盡量規(guī)避分散式事務(wù)。但是,有些時(shí)候是真的需要做一些服務(wù)拆分從而會(huì)引出分散式事務(wù)問(wèn)題。同時(shí),分散式事務(wù)也是面試中市場(chǎng)被問(wèn)到,可以拿著這個(gè)案例練練手,面試就可以說(shuō)上個(gè)123了。

Spring Boot中使用WebSocket實(shí)現(xiàn)推播與通知功能 Spring Boot中使用WebSocket實(shí)現(xiàn)推播與通知功能 Jun 23, 2023 am 11:47 AM

在現(xiàn)代Web應(yīng)用程式開發(fā)中,WebSocket是實(shí)現(xiàn)即時(shí)通訊和即時(shí)資料傳輸?shù)某S眉夹g(shù)。 SpringBoot框架提供了整合WebSocket的支持,讓開發(fā)者可以非常方便地實(shí)現(xiàn)推播和通知功能。本文將介紹SpringBoot中如何使用WebSocket實(shí)現(xiàn)推播和通知功能,並示範(fàn)一個(gè)簡(jiǎn)單的即時(shí)線上聊天室的實(shí)作。創(chuàng)建SpringBoot專案首先,我們需要?jiǎng)?chuàng)建一個(gè)

使用Spring Boot和Apache ServiceMix建置ESB系統(tǒng) 使用Spring Boot和Apache ServiceMix建置ESB系統(tǒng) Jun 22, 2023 pm 12:30 PM

隨著現(xiàn)代企業(yè)越來(lái)越依賴各種不同的應(yīng)用程式和系統(tǒng),企業(yè)整合變得愈發(fā)重要。企業(yè)服務(wù)匯流排(ESB)就是一種整合架構(gòu)模式,透過(guò)將不同系統(tǒng)和應(yīng)用程式連接在一起,提供通用的資料交換和訊息路由服務(wù),從而實(shí)現(xiàn)企業(yè)級(jí)應(yīng)用程式整合。使用SpringBoot和ApacheServiceMix,我們可以輕鬆建立一個(gè)ESB系統(tǒng),這篇文章將介紹如何實(shí)作。 SpringBoot和A

Spring Boot的任務(wù)排程與定時(shí)任務(wù)實(shí)作方法 Spring Boot的任務(wù)排程與定時(shí)任務(wù)實(shí)作方法 Jun 22, 2023 pm 11:58 PM

SpringBoot是一款非常受歡迎的Java開發(fā)框架,不僅具有快速開發(fā)的優(yōu)勢(shì),而且還內(nèi)建了許多實(shí)用的功能,其中,任務(wù)調(diào)度和定時(shí)任務(wù)就是其常用的功能之一。本文將探討SpringBoot的任務(wù)調(diào)度和定時(shí)任務(wù)實(shí)現(xiàn)方法。一、SpringBoot任務(wù)調(diào)度簡(jiǎn)介SpringBoot任務(wù)調(diào)度(TaskScheduling)是指在特定的時(shí)間點(diǎn)或某個(gè)條件下,執(zhí)行一些特

透過(guò)Spring Boot實(shí)現(xiàn)多語(yǔ)言支援和國(guó)際化應(yīng)用 透過(guò)Spring Boot實(shí)現(xiàn)多語(yǔ)言支援和國(guó)際化應(yīng)用 Jun 23, 2023 am 09:09 AM

隨著全球化的發(fā)展,越來(lái)越多的網(wǎng)站和應(yīng)用需要提供多語(yǔ)言支援和國(guó)際化功能。對(duì)於開發(fā)人員而言,實(shí)現(xiàn)這些功能並不是一件容易的事情,因?yàn)樗枰紤]許多方面的問(wèn)題,例如語(yǔ)言的翻譯、日期、時(shí)間和貨幣格式等等。但是,使用SpringBoot框架,我們可以輕鬆實(shí)現(xiàn)多語(yǔ)言支援和國(guó)際化應(yīng)用。首先,讓我們來(lái)了解一下SpringBoot提供的LocaleResolver介面。 Loc

Spring Boot與NoSQL資料庫(kù)的整合使用 Spring Boot與NoSQL資料庫(kù)的整合使用 Jun 22, 2023 pm 10:34 PM

隨著網(wǎng)路的發(fā)展,大數(shù)據(jù)分析和即時(shí)資訊處理成為了企業(yè)的重要需求。為了滿足這樣的需求,傳統(tǒng)的關(guān)係型資料庫(kù)已經(jīng)不再滿足業(yè)務(wù)和技術(shù)發(fā)展的需要。相反,使用NoSQL資料庫(kù)已經(jīng)成為了一個(gè)重要的選擇。在這篇文章中,我們將討論SpringBoot與NoSQL資料庫(kù)的整合使用,以實(shí)現(xiàn)現(xiàn)代應(yīng)用程式的開發(fā)和部署。什麼是NoSQL資料庫(kù)?NoSQL是notonlySQL

See all articles