Spring——RESTful Web服务

这篇具有很好参考价值的文章主要介绍了Spring——RESTful Web服务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

RESTful Web 服务介绍

本节我们将开发一个简单的 RESTful Web 服务。

RESTful Web 服务与传统的 MVC 开发一个关键区别是返回给客户端的内容的创建方式:传统的 MVC 模式开发会直接返回给客户端一个视图,但是 RESTful Web 服务一般会将返回的数据以 JSON 的形式返回,这也就是现在所推崇的前后端分离开发。

为了节省时间,本篇内容的代码是在 Spring Boot 版 Hello World & Spring Boot 项目结构分析 基础上进行开发的。

内容概览

通过下面的内容你将学习到下面这些东西:

  1. Lombok 优化代码利器
  2. @RestController
  3. @RequestParam以及@Pathvairable
  4. @RequestMapping @GetMapping
  5. Responsity

下载 Lombok 优化代码利器

因为本次开发用到了 Lombok 这个简化 Java 代码的工具,所以我们需要在 pom.xml 中添加相关依赖。如果对 Lombok 不熟悉的话,我强烈建议你去了解一下,可以参考这篇文章:《十分钟搞懂Java效率工具Lombok使用与原理》

		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<version>1.18.10</version>
		</dependency>

并且你需要下载 IDEA 中支持 lombok 的插件:

Spring——RESTful Web服务,java笔记整理,spring,restful,前端

RESTful Web 服务开发

假如我们有一个书架,上面放了很多书。为此,我们需要新建一个 Book 实体类。

com.example.helloworld.entity

/**
 * @author shuang.kou
 */
@Data
public class Book {
    private String name;
    private String description;
}

我们还需要一个控制器对书架上进行添加、查找以及查看。为此,我们需要新建一个 BookController

import com.example.helloworld.entity.Book;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

@RestController
@RequestMapping("/api")
public class BookController {

    private List<Book> books = new ArrayList<>();

    @PostMapping("/book")
    public ResponseEntity<List<Book>> addBook(@RequestBody Book book) {
        books.add(book);
        return ResponseEntity.ok(books);
    }

    @DeleteMapping("/book/{id}")
    public ResponseEntity deleteBookById(@PathVariable("id") int id) {
        books.remove(id);
        return ResponseEntity.ok(books);
    }

    @GetMapping("/book")
    public ResponseEntity getBookByName(@RequestParam("name") String name) {
        List<Book> results = books.stream().filter(book -> book.getName().equals(name)).collect(Collectors.toList());
        return ResponseEntity.ok(results);
    }
}
  1. @RestController **将返回的对象数据直接以 JSON 或 XML 形式写入 HTTP 响应(Response)中。**绝大部分情况下都是直接以 JSON 形式返回给客户端,很少的情况下才会以 XML 形式返回。转换成 XML 形式还需要额为的工作,上面代码中演示的直接就是将对象数据直接以 JSON 形式写入 HTTP 响应(Response)中。关于@Controller@RestController 的对比,我会在下一篇文章中单独介绍到(@Controller +@ResponseBody= @RestController)。
  2. @RequestMapping :上面的示例中没有指定 GET 与 PUT、POST 等,因为**@RequestMapping默认映射所有HTTP Action**,你可以使用@RequestMapping(method=ActionType)来缩小这个映射。
  3. @PostMapping实际上就等价于 @RequestMapping(method = RequestMethod.POST),同样的 @DeleteMapping ,@GetMapping也都一样,常用的 HTTP Action 都有一个这种形式的注解所对应。
  4. @PathVariable :取url地址中的参数。@RequestParam url的查询参数值。
  5. @RequestBody:可以HttpRequest body 中的 JSON 类型数据反序列化为合适的 Java 类型。
  6. ResponseEntity: 表示整个HTTP Response:状态码,标头和正文内容。我们可以使用它来自定义HTTP Response 的内容。

运行项目并测试效果

这里我们又用到了开发 Web 服务必备的 Postman 来帮助我们发请求测试。

1.使用 post 请求给书架增加书籍

这里我模拟添加了 3 本书籍。

Spring——RESTful Web服务,java笔记整理,spring,restful,前端

2.使用 Delete 请求删除书籍

这个就不截图了,可以参考上面发Post请求的方式来进行,请求的 url: localhost:8333/api/book/1。

3.使用 Get 请求根据书名获取特定的书籍

请求的 url:localhost:8333/api/book?name=book1文章来源地址https://www.toymoban.com/news/detail-682641.html

到了这里,关于Spring——RESTful Web服务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Spring Boot】详解restful api

    目录 1.restful api 1.1.历史 1.2.内容 1.3.传参 2.Spring Boot中的Restful Api RESTful API(Representational State Transferful Application Programming Interface)是一种设计风格,用于构建基于网络的应用程序接口(API)。它基于一组原则和约定,旨在使不同的计算机系统能够通过 HTTP 协议相互通信和交换

    2024年02月13日
    浏览(28)
  • Spring MVC 之 Restful 风格请求⽀持

    Tips: REST ⻛格请求是什么样的? SpringMVC对 REST ⻛格请求到底提供了怎样的⽀持 在 Web 系统中,前端通过 HTTP 请求给后端传递参数有四种方式,可以将参数放在 请求路径 、 Query 参数 、 HTTP 协议头 、 HTTP 协议体 中。而放在协议体中的参数又有很多格式,比如 json 、 form 表单

    2024年02月08日
    浏览(32)
  • 【Spring教程30】Spring框架实战:从零开始学习SpringMVC 之 Rest风格简介与RESTful入门案例

    欢迎大家回到《Java教程之Spring30天快速入门》,本教程所有示例均基于Maven实现,如果您对Maven还很陌生,请移步本人的博文《如何在windows11下安装Maven并配置以及 IDEA配置Maven环境》,本文的上一篇为《SpringMVC 之 服务器响应》 REST(Representational State Transfer),表现形式状态转

    2024年02月04日
    浏览(35)
  • Shiro + JWT + Spring Boot Restful 简易教程

    GitHub 项目地址:github.com/Smith-Cruis… 。 原文地址:www.inlighting.org/archives/sp…。 我也是半路出家的人,如果大家有什么好的意见或批评,请务必 issue 下。 如果想要直接体验,直接 clone 项目,运行 mvn spring-boot:run 命令即可进行访问。网址规则自行看教程后面。 如果想了解 Sp

    2024年01月19日
    浏览(31)
  • Spring Boot + JWT = 安全无忧的RESTful API

    在构建现代Web应用程序时,安全性是一个不可或缺的要素。JSON Web Token(JWT)提供了一种简洁的方式来保护我们的RESTful接口。在本篇博客中,我们将一步步探索如何在Spring Boot应用中整合JWT,确保你的API安全、高效且易于管理。 JWT(JSON Web Token)是一个开放标准(RFC 7519),它

    2024年02月02日
    浏览(30)
  • Spring Boot进阶(76):使用Spring Boot和Jersey打造高效 RESTful API

            RESTful API已经成为了现代web应用开发中的重要组成部分,使得我们可以通过HTTP请求来访问服务器中的资源。Spring Boot和Jersey是两个非常流行的开源框架,它们可以协同工作来帮助我们打造高效的RESTful API。本篇文章将介绍如何使用Spring Boot和Jersey来创建RESTful API,并

    2024年02月08日
    浏览(27)
  • 深入探讨Spring Boot:实现一个完整的RESTful应用程序

    在这篇博客中,我们将深入探讨如何使用Spring Boot构建一个完整的RESTful应用程序,数据库选择MySQL。我们将通过实现一个简单的用户管理系统来演示Spring Boot的强大功能。 首先,访问Spring Initializr,选择以下依赖项: Web:用于创建Web应用程序 JPA:用于访问数据库 MySQL:用于连

    2024年02月03日
    浏览(37)
  • Spring Boot 3.x- RESTful API集成SpringDoc&Swagger-UI

    系列文章:Spring Boot 3.x 系列教程 springdoc-openapi 帮助使用Spring Boot项目自动化API文档的生成。 springdoc-openapi 的工作原理是在运行时检查应用程序,根据Spring配置、类结构和各种注释推断 API 语义。 自动生成 JSON/YAML 和 HTML 格式的 API 文档。这个文档可以通过使用 swagger-api 注解来

    2024年01月25日
    浏览(38)
  • 【注解】@RestController、@GetMapping、@PostMapping、@RequestMapping等RESTful风格的Web服务的注解

    @RestController 是 Spring 4.0 引入的一个注解,它是 @Controller 和 @ResponseBody 的组合。 用于标识一个类,表示这个类是一个控制器,并且其中的方法会返回 JSON 格式的数据。通常用于构建 RESTful API。 @RequestMapping 用于映射 HTTP 请求到控制器的处理方法。 可以用在类级别和方法级别。

    2024年01月16日
    浏览(24)
  • Spring Boot学习随笔- RestFul API(@RestController、@RequestBody、@PathVariable),使用ResponseEntity+HttpStatus作为返回值

    学习视频:【编程不良人】2021年SpringBoot最新最全教程 什么是REST REST 全称是 Resource Representational State Transfer ,中文意思是表述性状态转移,它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主要编写者之一。他在论文中表示:我这篇文章的目的就是想在符合

    2024年02月04日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包