Java 最佳 RESTful Web 框架是什麼?


簡介

讓我們討論一下使用 Java 語言的最佳 Java RESTful Web 框架。我們知道有很多框架可用,但“Spring Boot”是 Java 框架中最好的選擇。

在這裡,我們將討論 RestTemplate 的用法以及使用 Spring Boot 框架整合各種資料格式,包括 JSON、XML 和 HTML。我們還將討論處理 HTTP 請求的各種方法。透過閱讀本文,我們將瞭解為什麼 Spring Boot 是在 Java 中建立 RESTful Web 服務的理想框架。

Spring Boot 中的 HTTP 支援

HTTP 支援是 RESTful Web 服務和 Spring Boot 的非常重要的組成部分,Spring Boot 為我們提供了處理各種 HTTP 方法的出色功能。

在這個程式設計示例中,我們將學習如何在 Spring Boot 中支援 HTTP。

示例

public class UserController 
{
private UserService userService; 
   public UserController(UserService userService)
 {
      this.userService = userService;
   }
   @GetMapping("/{id}")
   public User getUser(@PathVariable("id") int id)
 {
      // Get information about the user
      return userService.getUserById(id);
   }
   @PostMapping
   public User createUser(@RequestBody User user) 
{
      return userService.saveUser(user);
   }
   @PutMapping("/{id}")
   public User updateUser(@PathVariable("id") int id, @RequestBody User user) 
{
      // Update about the user
      return userService.updateUser(id, user);
   }
   @DeleteMapping("/{id}")
   public void deleteUser(@PathVariable("id") int id) 
{
      // Deletion part
      userService.deleteUser(id);
   }
}

我們定義了一個名為 UserController 的類,在這個函式內部,我們呼叫了名為 usercontroller 的類的建構函式,並在其括號內傳遞了 userService 的值。為了初始化值,我們使用了“this”運算子。

public UserController(UserService userService)
 {
    this.userService = userService;
 }

之後,我們獲取了對映 ID 並獲取了使用者資訊。

public User getUser(@PathVariable("id") int id)
{
   return userService.getUserById(id);
}

現在我們已經刪除了對映。

public void deleteUser(@PathVariable("id") int id) 
{
   userService.deleteUser(id);
}	

將 Spring Boot 框架與 RestTemplate 一起使用

Spring Boot 中的 RestTemplate 類為我們提供了一種出色且高效的方法來使用 RESTful API。RestTemplate 提供了一種更簡單的方法來管理 HTTP 請求和響應,它是 Spring Web 框架的一個元件。它透過抽象化 HTTP 通訊的技術方面,使我們的 Spring Boot 應用程式更輕鬆地使用外部 API。

示例

在這個特定的程式設計示例中,我們將看到如何將 Spring Boot 框架與 RestTemplate 一起使用。

import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/personn")
public class UserController 
{
   @GetMapping("/{id}")
   public ResponseEntity< personn > getUser(@PathVariable("id") int id)
 {
      RestTemplate restTemplate = new RestTemplate ();
      String apiUrl = "https://api.example.com/users/{id}";
      ResponseEntity< personn > responseEntity = restTemplate.exchange (apiUrl, HttpMethod.GET, null, User.class, id);
      return ResponseEntity.ok().body(responseEntity.getBody());
   }
}
 ** person.java class **
public class personn 
{
   private int id;
   private String name;
}

為此,首先,我們匯入了一些重要的包。

org.springframework.http.HttpMethod;
org.springframework.http.ResponseEntity;
org.springframework.web.bind.annotation.*;

之後,我們為使用者進行了請求對映,並定義了一個名為 UserController 的類。

public class UserController 
{
   @GetMapping("/{id}")
   public ResponseEntity< personn > getUser(@PathVariable("id") int id)
   Then we will declare a string named “apiurl” and assign ther user id.
   tring apiUrl = "https://api.example.com/users/{id}";
}

最後,我們定義了另一個名為 Person 的類,並在類中聲明瞭兩個變數,名為“id”(字串型別)和另一個名為“name”(字串型別)。

public class personn 
{
   private int id;
   private String name;
}

Spring Boot 框架支援 JSON、XML 和 HTML 格式

在這個程式設計示例中,我們將學習 Spring Boot 框架如何支援 JSON、XML 和 HTML 格式。

示例

在這個程式設計示例中,我們將學習 Spring Boot 框架如何支援 JSON、XML 和 HTML 格式。

@RestController
@RequestMapping("/users")
public class UserController 
{
   @GetMapping(value = "/{id}", produces = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE, MediaType.TEXT_HTML_VALUE})
   public ResponseEntity<User> getUser(@PathVariable("id") int id) 
{
      User user = getUserFromDatabase (id);
      // Return different representations based on requested media type
      if (MediaType.APPLICATION_JSON_VALUE.equals(getRequestedMediaType())) {
         return ResponseEntity.ok().body (user);
      } else if (MediaType.APPLICATION_XML_VALUE.equals(getRequestedMediaType())) {
         return ResponseEntity.ok().header("Content-Type", MediaType.APPLICATION_XML_VALUE).body (user);
      } else if (MediaType.TEXT_HTML_VALUE.equals(getRequestedMediaType())) {
         String userHtml = generateUserHtml (user);
         return ResponseEntity.ok().header("Content-Type", MediaType.TEXT_HTML_VALUE).body(userHtml);
      } else {
         return ResponseEntity.status(HttpStatus.NOT_ACCEPTABLE).build();
      }
   }
   private User getUserFromDatabase (int id) 
{
      return new User(id, "Aditi Dey");
   }
   private String getRequestedMediaType() 
{
      String requestedMediaType = "application/json"; 
// Default to JSON
      String requestedMediaTypeQueryParam = "mediaType";
      if (StringUtils.isNotBlank(requestedMediaTypeQueryParam)) 
{
         requestedMediaType = requestedMediaTypeQueryParam;
      }
      return requestedMediaType;
   }
   private String generateUserHtml(User user) 
{
      return "<h1>User Details</h1><p>ID: " + user.getId () + "</p><p>Name: " + user.getName () + "</p>";
}

為此,首先,我們定義了一個名為 UserController 的類來對映使用者 ID。在類中,我們完成了對映工作。

@GetMapping(value = "/{id}", produces = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE, MediaType.TEXT_HTML_VALUE})

現在,我們呼叫了一個名為 getUserFromDatabase() 的函式,並將 ID 作為引數傳遞給該函式。然後,我們根據請求的媒體型別返回不同的表示。

if (MediaType.APPLICATION_JSON_VALUE.equals(getRequestedMediaType())) {
   return ResponseEntity.ok().body (user);
} else if (MediaType.APPLICATION_XML_VALUE.equals(getRequestedMediaType())) 

現在我們透過呼叫另一個名為 getUserFromDataBase() 的函式獲取了使用者 ID,並將 ID 作為引數傳遞。現在我們透過呼叫另一個名為 getUserRequestedMediaType() 的函式獲取了媒體型別。

private String getRequestedMediaType()
{
String requestedMediaType = "application/json";

if (StringUtils.isNotBlank(requestedMediaTypeQueryParam)) 
{
   requestedMediaType = requestedMediaTypeQueryParam;
}

現在,伺服器可以將資料庫池中的使用者資訊作為響應返回給客戶端。

private String generateUserHtml (User user)
{
   return "<h1>User Details</h1><p>ID: " + user.getId () + "</p><p>Name: " + user.getName () + "</p>";
}

結論

在當今的軟體行業中,使用 Java 的 RESTful Web 框架是一個非常重要的概念。根據客戶的需求,它有很多前景和應用。為此,認真學習這個概念非常必要。希望所有學習者都能透過本教程瞭解 Java 中這個重要概念。

更新於:2023年10月4日

94 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.