news 2026/10/14 18:10:09

SpringBoot HelloWorld 入门:支持 GET / POST / PUT / DELETE 的 RESTful 接口实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringBoot HelloWorld 入门:支持 GET / POST / PUT / DELETE 的 RESTful 接口实战

一、前言

Spring Boot 是目前 Java 后端开发最主流的框架之一,它通过"约定大于配置"的理念,让我们无需繁琐的 XML 配置就能快速搭建一个 Web 应用。本文作为 Spring Boot 入门第一课,将从零开始完成一个 HelloWorld 程序,并在此基础上实现支持GET、POST、PUT、DELETE四种 HTTP 请求的后端接口,最后用 Postman 进行测试。

二、环境准备

工具说明
JDK17 或以上版本
Maven3.6+(或使用项目自带的 mvnw)
IDEAIntelliJ IDEA(社区版/旗舰版均可)
Postman用于测试 HTTP 接口

三、创建 Spring Boot 项目

  1. 打开 IDEA,选择New Project→Spring Initializr(也可以直接访问 https://start.spring.io)。
  2. 填写项目信息:
    • Group:com.example
    • Artifact:demo
    • Java 版本:17
  3. 添加依赖:Spring Web。
  4. 点击生成,等待 Maven 依赖下载完成。

生成的项目结构如下:

demo ├── src │ ├── main │ │ ├── java │ │ │ └── com.example.demo │ │ │ ├── DemoApplication.java # 启动类 │ │ │ ├── controller # 控制器层 │ │ │ └── model # 实体类 │ │ └── resources │ │ └── application.properties # 配置文件 │ └── test └── pom.xml

四、HelloWorld:第一个接口

在controller包下创建HelloController:

packagecom.example.demo.controller;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RestController;@RestControllerpublicclassHelloController{@GetMapping("/hello")publicStringhello(){return"Hello zhudongxin";}}

注解说明:

  • @RestController:组合注解,相当于@Controller+@ResponseBody,表示该类是一个 REST 风格的控制器,返回值直接作为 HTTP 响应体。
  • @GetMapping("/hello"):将 HTTP GET 请求/hello映射到hello()方法。

启动DemoApplication,浏览器或 Postman 访问http://localhost:8080/hello,返回:

Hello zhudongxin

HelloWorld 完成!

五、实现 GET / POST / PUT / DELETE 接口

下面实现一个简单的用户(User)管理接口,包含我自己的姓名和年龄(zhudongxin,21 岁)。

5.1 创建实体类 User

在model包下创建User.java:

packagecom.example.demo.model;publicclassUser{privateStringname="zhudongxin";privateintage=21;publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicintgetAge(){returnage;}publicvoidsetAge(intage){this.age=age;}}

5.2 创建 UserController

在controller包下创建UserController.java,用一个HashMap模拟数据库存储用户数据:

packagecom.example.demo.controller;importcom.example.demo.model.User;importorg.springframework.web.bind.annotation.*;importjava.util.HashMap;importjava.util.Map;@RestController@RequestMapping("/api/users")publicclassUserController{privatefinalMap<Long,User>userStore=newHashMap<>();privatelongnextId=1;// 构造方法:初始化一条自己的数据publicUserController(){Useruser=newUser();user.setName("zhudongxin");user.setAge(21);userStore.put(nextId,user);}// GET:查询所有用户@GetMappingpublicMap<Long,User>getAllUsers(){returnuserStore;}// GET:根据 id 查询用户@GetMapping("/{id}")publicUsergetUserById(@PathVariableLongid){returnuserStore.get(id);}// POST:新增用户@PostMappingpublicUsercreateUser(@RequestBodyUseruser){userStore.put(++nextId,user);returnuser;}// PUT:根据 id 更新用户@PutMapping("/{id}")publicUserupdateUser(@PathVariableLongid,@RequestBodyUseruser){userStore.put(id,user);returnuser;}// DELETE:根据 id 删除用户@DeleteMapping("/{id}")publicStringdeleteUser(@PathVariableLongid){userStore.remove(id);return"User deleted successfully";}}

核心注解说明:

注解作用
@RequestMapping("/api/users")类级别的请求路径前缀
@GetMapping处理 GET 请求(查询)
@PostMapping处理 POST 请求(新增)
@PutMapping处理 PUT 请求(更新)
@DeleteMapping处理 DELETE 请求(删除)
@PathVariable从 URL 路径中获取参数(如 id)
@RequestBody将请求体中的 JSON 自动转为 Java 对象

四种请求对应 RESTful 风格的 CRUD 语义:

  • GET→ 查询(Read)
  • POST→ 新增(Create)
  • PUT→ 更新(Update)
  • DELETE→ 删除(Delete)

六、使用 Postman 测试

启动项目后,打开 Postman 依次测试以下接口。

6.1 GET 查询所有用户

  • 请求方式:GET
  • URL:http://localhost:8080/api/users

响应结果:

{"1":{"name":"zhudongxin","age":21}}

6.2 POST 新增用户

  • 请求方式:POST
  • URL:http://localhost:8080/api/users
  • 请求头:Content-Type: application/json
  • 请求体(Body → raw → JSON):
{"name":"zhudongxin","age":21}

响应结果:

{"name":"zhudongxin","age":21}

6.3 PUT 更新用户

  • 请求方式:PUT
  • URL:http://localhost:8080/api/users/1
  • 请求体:
{"name":"zhudongxin","age":22}

响应结果:

{"name":"zhudongxin","age":22}

6.4 DELETE 删除用户

  • 请求方式:DELETE
  • URL:http://localhost:8080/api/users/1

响应结果:

User deleted successfully

再次用 GET 查询,id=1的用户已被删除,验证成功。

七、常见问题

  1. 启动报错:端口被占用(Port 8080 was already in use)
    说明 8080 端口已有程序在运行,可以关掉旧进程,或在application.properties中修改端口:

    server.port=8081
  2. Postman 返回 404
    检查 URL 路径是否与@RequestMapping/@GetMapping中的路径一致,注意大小写。

  3. POST/PUT 返回 415 错误
    检查请求头是否设置了Content-Type: application/json,Body 是否选择 raw + JSON 格式。

八、总结

本文完成了 Spring Boot 的入门实践:

  1. 使用 Spring Initializr 快速创建项目;
  2. 通过@RestController+@GetMapping实现 HelloWorld;
  3. 使用@GetMapping、@PostMapping、@PutMapping、@DeleteMapping实现了完整的 RESTful CRUD 接口;
  4. 使用 Postman 对四种 HTTP 请求进行了测试。

后续可以继续学习:接入 MySQL 数据库(Spring Data JPA / MyBatis)、参数校验、统一异常处理、Swagger 接口文档等内容。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/14 18:09:37

ESP32-S3+LVGL驱动1.69寸电容触摸屏:初始化、DMA与坐标映射全解

简介&#xff1a;面向嵌入式开发者的ESP32-S3图形界面驱动资源包&#xff0c;聚焦LVGL在1.69寸电容触摸屏上的落地&#xff1a;屏显部分采用ST7789显示控制器&#xff0c;触摸部分由CST816芯片实现&#xff0c;适合希望快速搭建物联网UI、学习LVGL移植或做屏幕驱动二次开发的工…

作者头像 李华
网站建设 2026/10/14 18:09:36

SQL聚合函数与GROUP BY分组查询详解:从COUNT到HAVING的完整实践

1. 聚合函数&#xff1a;SQL 里的"一键统计"到底是怎么算的先别急着上手写 GROUP BY&#xff0c;聚合函数是这一整套逻辑的基石。所谓聚合&#xff0c;就是把多行数据按照某种规则压缩成一行结果&#xff0c;最常见的五个函数是 COUNT、SUM、AVG、MAX、MIN。它们的输…

作者头像 李华
网站建设 2026/10/14 18:09:25

手写HTML5简历:语义化、响应式与打印友好的技术实践

1. 项目概述&#xff1a;为什么一份“手写”的HTML5简历&#xff0c;比PDF和Word更值得花时间折腾最近帮几位刚毕业的朋友改简历&#xff0c;发现一个特别有意思的现象&#xff1a;他们投递的岗位明明写着“前端开发”“UI设计”“数字营销”&#xff0c;可附件却清一色是Word或…

作者头像 李华
网站建设 2026/10/14 18:09:03

vSphere 7 上部署 Tanzu Kubernetes 集群:从 Supervisor 到 TKC 的完整实践

1. 为什么要在 vSphere 7 上跑 Tanzu Kubernetes 集群很多做企业级虚拟化的朋友&#xff0c;第一次听到“在 vSphere 上跑 Kubernetes”时&#xff0c;脑子里冒出来的第一个问题往往是&#xff1a;我直接开几台虚拟机装 kubeadm 不就行了吗&#xff0c;为什么还要折腾 Tanzu&am…

作者头像 李华
网站建设 2026/10/14 18:08:39

ISO/IEC 27002-2022 中文版深度解读:93项控制重构与落地映射指南

简介&#xff1a;ISO/IEC 27002-2022最新中文版是面向信息安全从业者、合规审计人员及ISMS建设团队的标准参考文档&#xff0c;针对2022年2月国际标准化组织发布的新版信息安全控制标准&#xff0c;提供中文试译稿&#xff0c;帮助组织在新环境下落地网络安全、数据安全治理与管…

作者头像 李华