SpringBoot 设置传入参数非必要

查看 RequestParam 源码

package org.springframework.web.bind.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.core.annotation.AliasFor;

@Target({ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequestParam {
    @AliasFor("name")
    String value() default "";

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

    boolean required() default true;

    String defaultValue() default "\n\t\t\n\t\t\n\ue000\ue001\ue002\n\t\t\t\t\n";
}

 可以看到这行

   boolean required() default true;  

代表参数必传

可通过注解参数修改必传属性为 false

@RequestParam(name="file", required = false)

### 如何在 Spring Boot 中通过注解参数Spring Boot 中,可以通过多种注解实现控制器方法的参数绑定。对于 HTTP 请求中的不同部分(路径变量、请求体、查询参数等),有不同的注解来处理。 #### 路径变量 (@PathVariable) 当 URL 模板中包含占位符时,可以使用 `@PathVariable` 来获取这些占位符对应的值: ```java @GetMapping("/greeting/{name}") public String greeting(@PathVariable String name) { return "Hello, " + name; } ``` 此代码片段展示了如何接收来自 URL 的名称并返回问候消息[^2]。 #### 查询参数 (@RequestParam) 为了读取 GET 请求后面的查询字符串参数,应该采用 `@RequestParam` 注解: ```java @GetMapping("/search") public String searchUsers(@RequestParam(value="query", required=false, defaultValue="World") String query) { return "Query: " + query; } ``` 这里定义了一个可选的查询参数,默认情况下如果没有提供则设置为 “World”。这有助于防止因缺少参数而导致错误的发生[^5]。 #### 表单数据 (@ModelAttribute 和 @RequestBody) 针对 POST 请求提交的数据,有两种主要的方式取决于客户端发送的内容类型: - 如果是表单编码形式,则利用 `@ModelAttribute` 或者直接指定参数名; ```java @PostMapping("/form") public String handleFormSubmission(User user) { // User 是一个 POJO 类 return "User submitted!"; } ``` - 对于 JSON/XML 等表单格式的数据流,需借助 `@RequestBody` 将其映射成 Java 对象。 ```java @PostMapping("/json") public ResponseEntity<User> createUser(@Valid @RequestBody User user){ userRepository.save(user); return new ResponseEntity<>(user, HttpStatus.CREATED); } ``` 上述例子说明了如何解析不同类型的身体负载,并将其转换为目标对象实例以便进一步操作[^3]。 #### SQL 参数 (@Param) MyBatis 映射器接口内的方法签名里也可以见到 `@Param` 这样的注释,用来给命名参数赋值,在执行数据库查询的时候常有用: ```java public interface UserRepository extends BaseMapper<User> { /** * 根据用户名查找用户记录. */ List<User> selectByUsername(@Param("username") String username); } ``` 注意:当不适用 `@Param` 注解而尝试访问 `${}` 形式的属性将会引发异常;相反地,`#{}` 总是可以安全使用的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值