【spring】@PathVariable注解学习

@PathVariable介绍

@PathVariable是Spring框架中的一个注解,主要用于处理RESTful风格URL中的路径变量。在RESTful接口设计中,我们经常将资源的ID或者其他标识信息直接放在URL路径中,而不是作为查询参数。@PathVariable注解使得控制器方法能够轻松地从URL中提取这些变量值,并将其绑定到方法参数上。

@PathVariable源码

@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface PathVariable {

	@AliasFor("name")
	String value() default "";

	@AliasFor("value")
	String name() default "";

	boolean required() default true;

}
源代码截图

@PathVariable属性介绍

  • value/name属性:
    • 这两个属性是等效的(通过@AliasFor注解标明),用于指定路径变量的名称。在URL模板中定义的路径变量名称需要与这里的值相匹配。例如,如果URL模板是/users/{userId},那么你可以使用@PathVariable("userId")来绑定它。默认情况下,如果不提供此属性值,Spring会尝试将方法参数名作为路径变量名去匹配URL中的路径段。
  • required属性:
    • 此属性指示路径变量是否为必须的,默认值为true。如果设置为true,则在请求的URL中必须包含对应的路径变量,否则Spring MVC会认为没有找到合适的处理器方法。如果设置为false,则该路径变量是可选的,但这在实际应用中较少见,因为通常路径变量是RESTful接口设计中不可或缺的部分。

@PathVariable注解使用场景

  1. 使用场景:当 URI 中包含动态部分时,如 /users/{userId},其中 {userId} 是动态的,你可以通过 @PathVariable 来获取这个值。

  2. 参数类型@PathVariable 可以用于方法参数,将 URI 中的变量传递给控制器。

  3. 类型转换:Spring MVC 会尝试将路径变量转换为方法参数的类型。例如,如果路径变量是字符串,而方法参数是整数类型,Spring 会尝试将字符串转换为整数。

  4. 默认值:你可以为 @PathVariable 提供一个默认值,如果路径变量不存在,将使用这个默认值。

  5. URI 模板@PathVariable 通常与 @RequestMapping@GetMapping@PostMapping 等注解一起使用,这些注解定义了请求映射的 URI 模式。

  6. 嵌套路径变量@PathVariable 可以用于嵌套控制器方法中,以获取更深层次的路径变量。

  7. 占位符:在方法参数中,你可以使用 {variable} 作为占位符来引用 @PathVariable

@PathVariable测试示例代码

示例代码 一
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
    ) {
        // 使用 id 获取用户信息
        if (optionalId != null) {
            // 如果 optionalId 存在,也可以使用它进行某些操作
        }
        return "User with ID: " + id;
    }
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值