Spring Boot Web应用开发:创建RESTful服务

ops/2024/11/23 20:46:12/

Spring Boot使得创建RESTful服务变得非常简单。通过使用Spring Web MVC提供的注解,可以轻松定义控制器、处理请求和返回响应。

@RestController与@Controller的区别

@RestController@Controller是Spring MVC中的两个用于定义控制器的注解,它们的主要区别在于响应体的处理。

  • @Controller是一个常规的MVC控制器,它通常返回视图(即HTML页面),或者当配合@ResponseBody注解使用时也可以返回对象数据。
  • @RestController是一个组合注解,它是@Controller@ResponseBody的结合体,用于创建RESTful控制器。它确保每个方法都隐式地使用了@ResponseBody,因此方法返回的对象数据直接写入HTTP响应体中。

示例:使用@RestController

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class GreetingController {@GetMapping("/greeting")public String greeting() {return "Hello, World!";}
}

在上面的例子中,GreetingController使用@RestController注解,因此greeting方法返回的字符串会直接作为HTTP响应体返回给客户端。

请求映射注解

Spring MVC提供了一系列注解来映射HTTP请求到控制器的处理方法。最常用的请求映射注解包括@GetMapping@PostMapping@PutMapping@DeleteMapping@RequestMapping

示例:使用请求映射注解

import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/users")
public class UserController {@GetMapping("/{id}")public User getUserById(@PathVariable Long id) {// 模拟从数据库获取用户return new User(id, "John Doe");}@PostMappingpublic User createUser(@RequestBody User user) {// 模拟创建用户return user;}// 更多的请求处理方法...
}class User {private Long id;private String name;// 构造方法、getter和setter省略
}

在这个UserController中,我们定义了两个RESTful端点:一个用于获取特定ID的用户,另一个用于创建新用户。

请求参数和响应体

Spring MVC允许你通过注解来指定方法参数应如何绑定到HTTP请求,以及如何处理响应体。

  • @RequestParam:用于将请求参数绑定到方法参数。
  • @PathVariable:用于将URI模板变量绑定到方法参数。
  • @RequestBody:用于将HTTP请求体绑定到方法参数。
  • @ResponseBody:用于将方法返回值绑定到HTTP响应体(在@RestController中隐式使用)。

示例:请求参数和响应体

import org.springframework.web.bind.annotation.*;@RestController
public class CalculatorController {@GetMapping("/add")public double add(@RequestParam double a, @RequestParam double b) {return a + b;}@PostMapping("/subtract")public double subtract(@RequestBody CalculationRequest request) {return request.getA() - request.getB();}// 更多的请求处理方法...
}class CalculationRequest {private double a;private double b;// getter和setter省略
}

CalculatorController中,add方法使用@RequestParam接收两个查询参数,subtract方法使用@RequestBody接收一个JSON格式的请求体。

通过以上的注解和方法,Spring Boot提供了一个强大且灵活的方式来创建和管理RESTful服务。开发者可以轻松定义端点、处理各种类型的请求,并生成丰富的响应。


http://www.ppmy.cn/ops/136134.html

相关文章

Windows多JDK版本管理工具JVMs

Windows多JDK版本管理工具JVMs 官网安装使用手动下载jdk 官网 https://github.com/ystyle/jvms 下载 https://github.com/ystyle/jvms/releases 当前下载版本为v2.1.6 安装 下载后,解压到某个目录。 比如:D:\soft\JVMs\jvms_v2.1.6_amd64 把这个目录…

Vue开发04:结合Vue 2 总结C# 常见方法的JavaScript实现

测试地址 在线运行Vue组件 一、Trim()方法 去除首末 <template><div><p>原始字符串: "{{ originalStr }}"</p><p>处理后的字符串: "{{ trimmedStr }}"</p></div> </template><script> export d…

[Unity]【游戏相关】 游戏设计基础:如何创建有效的游戏设计文档

在游戏开发中,游戏设计文档(Game Design Document, GDD)是团队成员协同工作、确保项目顺利推进的关键工具。GDD不仅帮助团队清晰地定义游戏的愿景、玩法和目标,还提供了一个统一的参考标准,使开发流程更加流畅。本文将深入探讨创建GDD的常见方法和技巧,以及MVP和迭代开发…

nc网络工具的使用

nc是一个功能强大的网络工具&#xff0c;它可以用于端口扫描&#xff0c;模拟TCP/UDP数据传输&#xff0c;代理端口等。ubuntu14.04默认自带nc工具&#xff0c;windows下需自行下载&#xff0c;一般防病毒软件会认为它有害。下面主要介绍它在linux下的用法。 一.nc扫描某台主机…

微软 Ignite 2024 大会

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

时序论文23|ICML24谷歌开源零样本时序大模型TimesFM

论文标题&#xff1a;A DECODER - ONLY FOUNDATION MODEL FOR TIME - SERIES FORECASTING 论文链接&#xff1a;https://arxiv.org/abs/2310.10688 论文链接&#xff1a;https://github.com/google-research/timesfm 前言 谷歌这篇时间序列大模型很早之前就在关注&#xff…

【解决】Unity TMPro字体中文显示错误/不全问题

问题描述&#xff1a;字体变成方块 原因&#xff1a;字体资源所承载的长度有限 1.找一个中文字体放入Assets中 2.选中字体创建为TMPro 字体资源 3.选中创建好的字体资源&#xff08;蓝色的大F&#xff09; 在右边的属性中找到Atlas Width h和 Atlas Heigth,修改的大一点&…

失落的Apache JDBM(Java Database Management)

简介 Apache JDBM&#xff08;Java Database Management&#xff09;是一个轻量级的、基于 Java 的嵌入式数据库管理系统。它主要用于在 Java 应用程序中存储和管理数据。这个项目已经过时了&#xff0c;只是发表一下以示纪念&#xff0c;现在已经大多数被SQLite和Derby代替。…