📜  Spring Boot – RESTful Web 服务简介

📅  最后修改于: 2022-05-13 01:54:24.122000             🧑  作者: Mango

Spring Boot – RESTful Web 服务简介

REST 代表代表性状态转移。它由 Web 协议 HTTP 的主要作者之一 Roy Thomas Fielding 开发。因此,REST 是一种旨在优化使用 HTTP 协议的架构方法。它使用 HTTP 中已经存在的概念和动词来开发 Web 服务。这使得 REST 非常易于使用和消费,以至于它成为当今构建 Web 服务的首选标准。与 SOAP 不同,REST 没有标准的消息传递格式。我们可以使用多种格式构建 REST Web 服务,包括 XML 和 JSON,尽管 JSON 是更流行的选项。需要考虑的重要一点是,REST 不是一种标准,而是一种风格,其目的是将我们的架构限制为客户端-服务器架构,并且旨在使用 HTTP 等无状态通信协议。我们构建 Web 服务的主要 HTTP 方法是:

得到

HTTP 的默认请求方法。这个方法我们没有任何请求体,但是我们可以在 URL 中定义多个请求参数或路径变量。该方法用于获取一些资源。根据 ID 参数的存在,我们可以获取特定资源或在没有参数的情况下获取资源集合。 Spring Boot Controller 中的示例 GET 请求:

@GetMapping("/user/{userId}")
public ResponseEntity getUser(@PathVariable int userId) {
    UserEntity user = userService.getUser(userId);
    return new ResponseEntity<>(user, HttpStatus.OK);
}

邮政

HTTP 的 POST 方法用于创建资源。我们在这个方法中有一个请求体,也可以在 URL 中定义多个请求参数或路径变量。 Spring Boot Controller 中的示例 POST 请求:

@PostMapping(value = "/user")
public ResponseEntity addUser(@RequestBody UserEntity user) {
    userService.saveOrUpdate(user);
    return new ResponseEntity<>("User is created successfully", HttpStatus.CREATED);
}

HTTP 的 PUT 方法用于更新现有资源。我们在这个方法中有一个请求体,也可以在 URL 中定义多个请求参数或路径变量。 Spring Boot Controller 中的示例 PUT 请求:

@PutMapping("/user/{userId}")
public ResponseEntity getUser(@RequestBody UserEntity user) {
    userService.saveOrUpdate(user);
    return new ResponseEntity<>("User is updated successfully", HttpStatus.OK);
}

删除

HTTP 的 DELETE 方法用于删除资源。我们在这个方法中没有请求体,但可以在 URL 中定义多个请求参数或路径变量。我们可以删除多条或单条记录,通常取决于我们是否有 ID 参数。我们可以删除多条或单条记录,通常取决于我们是否有 ID 参数。 Spring Boot Controller 中的示例 DELETE 请求:

@DeleteMapping(value = "/user")
public ResponseEntity addUser(@PathVariable int userId) {
    userService.deleteUser(userId);
    return new ResponseEntity<>("User is deleted successfully", HttpStatus.OK);
}

REST Web 服务使用 HTTP 响应消息的状态行部分来通知客户端其请求的最终结果。 HTTP 中定义的状态码如下:

  • 200 :成功
  • 201 :已创建
  • 401 :未经授权
  • 404 :找不到资源
  • 500 :服务器错误

何时使用 REST?

Web 服务是完全无状态的。服务生产者和消费者对传递的上下文和内容有相互理解。当已经存在一些吸引人的基础设施时,因为我们可以使用它们来提高 REST API 的性能。之所以如此,是因为 GET、PUT 和 DELETE 等幂等请求都是可缓存的。带宽通常对组织非常重要。休息是有帮助的,因为 SOAP XML 有效负载没有开销标头。使用 RESTful 风格可以轻松启用 Web 服务交付或聚合到现有网站。由于我们可以将 API 公开为 XML 并使用 HTML 网页,因此根本不需要对架构进行大修,因此仍然维护服务的外部合同。

RESTful Web 服务原理

以下是 rest 服务遵循的主要原则,这使得它们快速、轻量级和安全:

  • 通过 URI 进行资源识别 - RESTful Web 服务为每个资源提供独立的 URI/全局 ID。
  • 统一接口——使用一组固定的四个创建、读取、更新、删除操作来操作资源:PUT、GET、POST 和 DELETE。
  • 自描述消息——资源和表示在 RESTful Web 服务中解耦。这使我们能够根据我们的用例以各种格式表示有效负载,例如 HTML、XML、纯文本、PDF、JPEG、JSON 和其他格式。
  • 通过超链接进行的有状态交互——与资源的每次交互都是无状态的;也就是说,请求消息是自包含的。

RESTful Web 服务的优势

使用 RESTful Web 服务的一些主要优点是

  • 易于构建:REST API 比相应的 SOAP API 更易于构建。因此,如果我们想快速开发 API,REST 是更好的选择。
  • 独立::由于客户端和服务器在 RESTful Web 服务中解耦,它允许跨项目独立开发。
  • 可扩展性:无状态通信和复制的存储库提供了高水平的可扩展性。与 SOAP 相比,使用 REST Web 服务扩展现有网站更容易。
  • 分层系统:REST Web 服务将其应用程序划分为多个层,形成一个层次结构。它使应用程序既模块化又可扩展。