RESTful开发风格4:RESTful基本使用二:【@RestController注解】;【路径变量(uri中的变量)】(使用@PathVariable注解来获取路径变量值);

本文详细介绍了RESTful开发风格中的@RestController注解的用途,它简化了在每个方法上添加@ResponseBody的需求。此外,文章还阐述了路径变量的概念,即uri中的变量,如/POST /article/1,通过@PathVariable注解可以从uri中获取这些变量值。Spring MVC提供支持,允许在控制器方法中方便地接收和处理路径变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明:

(1)上篇博客【RESTful开发风格3:RESTful基本使用一:客户端是HTML时,Restful演示;】 演示了RESTful的最基本的使用;只不过只是RESTful的最基本使用还不够,其还存在一些问题。本篇博客就是来解决三个问题的其中两个:

          ● 【@RestController注解】:简化@ResponseBody注解的使用方式;

          ● 【路径变量】:使用【{} + @PathVariable注解】的方式,获取uri中的参数;

目录

一:【@RestController注解】; 

二:路径变量(uri中的变量);


一:【@RestController注解】; 

问题:【为了满足RESTful开发风格】→【方法需要完成的是返回字符串,而不是页面的跳转】→所以,【方法上需要添加@ResponseBody注解】:这有点麻烦;

### Spring 中 @PathVariable 注解使用方法 @PathVariable 注解在 Spring MVC 和 Spring Boot 中用于从 URI 模板中提取路径变量,并将其绑定到方法参数上。这种注解通常用于 RESTful 风格的 URL 路径中,其中路径的一部分是动态的,并且可能需要根据请求的不同而改变[^4]。 以下是一个简单的示例代码,展示如何使用 @PathVariable 注解: ```java import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; @RestController public class ProductController { @GetMapping("/products/{category}/{id}") public String getProductByCategoryAndId(@PathVariable String category, @PathVariable Long id) { return "Product in category " + category + " with ID " + id; } } ``` 在这个例子中,`/products/{category}/{id}` 是一个 URI 模板,其中 `{category}` 和 `{id}` 是占位符。当客户端发送一个类似于 `/products/electronics/123` 的请求时,Spring 会自动将 `electronics` 绑定到 `category` 参数,将 `123` 绑定到 `id` 参数[^2]。 如果需要为路径变量指定默认值,可以结合逻辑判断实现。例如: ```java import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/demo") public class UserController { @GetMapping("/{userId}") public String getUserById(@PathVariable("userId") String id, @PathVariable(name = "userId", required = false) Integer optionalId) { if (optionalId != null) { return "User with ID: " + id + " and Optional ID: " + optionalId; } else { return "User with ID: " + id; } } } ``` 在此示例中,`optionalId` 参数被标记为非必需(`required = false`)。如果路径中未提供该参数,则其值为 `null`,可以通过条件语句进行处理[^5]。 ### 注意事项 - 占位符在方法参数中可以通过 `{variable}` 的形式定义,并通过 @PathVariable 注解映射到具体参数上[^1]。 - 在同一个 URL 中可以使用多个占位符,并将它们映射到不同的方法参数上。 - 路径变量没有直接的默认值支持,但可以通过逻辑判断来模拟默认行为[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值