Spring RestController @RequestParam 中的 required=false 参数

这个参数是 required 确定在 API 中的参数中是否必须要输出参数。

在默认情况下为 true,你可以设置这个参数为 false。

如果你设置的参数为 true,但是在提交参数的时候没有提交这个参数,你的 API 将会返回一个异常。

考察下面的代码:

   @GetMapping("/search")
    public ResponseEntity<?> searchTestBank(@RequestParam String id) {
        
    }

在上面的代码中,我们不指定了返回。

上面参数的定义是要求参数不为 null,如果你输入 null 的参数的话,你会在 API 看到下面的错误。

{
    "timestamp": 1608394372349,
    "status": 400,
    "error": "Bad Request",
    "message": "",
    "path": "/testbank/search"
}

spring-api-error-01

在上面的访问的时候提示了 Bad Request 错误,这是因为没有为发送参数到 API 中。

如果你修改代码为:

@GetMapping("/search")
public ResponseEntity<?> searchTestBank(@RequestParam(required=false) String id) {

}

就可以避免这个问题了。

 

spring-api-error-02

 

这个是 Spring Boot 的一个参数配置,可以根据实际情况进行配置。

https://www.ossez.com/t/spring-restcontroller-requestparam-required-false/773

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
第一段代码 GroupsResource package ece448.lec16; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController public class GroupsResource { private final GroupsModel groups; public GroupsResource(GroupsModel groups) { this.groups = groups; } @GetMapping("/api/groups") public Collection<Object> getGroups() throws Exception { ArrayList<Object> ret = new ArrayList<>(); for (String group: groups.getGroups()) { ret.add(makeGroup(group)); } logger.info("Groups: {}", ret); return ret; } @GetMapping("/api/groups/{group}") public Object getGroup( @PathVariable("group") String group, @RequestParam(value = "action", required = false) String action) { if (action == null) { Object ret = makeGroup(group); logger.info("Group {}: {}", group, ret); return ret; } // modify code below to control plugs by publishing messages to MQTT broker List<String> members = groups.getGroupMembers(group); logger.info("Group {}: action {}, {}", group, action, members); return null; } @PostMapping("/api/groups/{group}") public void createGroup( @PathVariable("group") String group, @RequestBody List<String> members) { groups.setGroupMembers(group, members); logger.info("Group {}: created {}", group, members); } @DeleteMapping("/api/groups/{group}") public void removeGroup( @PathVariable("group") String group) { groups.removeGroup(group); logger.info("Group {}: removed", group); } protected Object makeGroup(String group) { // modify code below to include plug states HashMap<String, Object> ret = new HashMap<>(); ret.put("name", group); ret.put("members", groups.getGroupMembers(group)); return ret; } private static final Logger logger = LoggerFactory.getLogger(GroupsResource.class); }
最新发布
07-10

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HoneyMoose

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值