java - Spring Webflux : optional RequestPart/RequestParam is still required?

标签 java spring spring-boot kotlin

我正在尝试使用可选的请求参数/请求部分,但是当我不提供可选参数时,我的请求就会无限期地挂起。

@RestController
@RequestMapping("/service")
class MyController {
    @PostMapping
    fun print(@RequestPart("name", required = false) name: String) {
        if (name != null)
            print(name)
        else
            print("grr")
    }
}

如果我在请求中提供参数name,它不再明确地卡在 postman 中,请求会通过。但当我不提供参数 name 并打印“grr”时,我希望它无论如何都会通过。

当您添加另一个所谓的可选属性时,会验证此必需属性无法正常工作(至少在我看来)。

@RestController
@RequestMapping("/service")
class MyController {
    @PostMapping
    fun print(@RequestPart("name", required = false) name: String,
              @RequestPart("friend_name", required = false) friendsName: String) {
        if (name != null)
            print(name)
        else
            print("grr")
    }
}

现在,当我提供参数 name 但不提供 friend_name 时,它表示该值不能为 null。

{
    "timestamp": "2018-10-10T09:50:49.305+0000",
    "path": "/service",
    "status": 500,
    "error": "Internal Server Error",
    "message": "Parameter specified as non-null is null: method co.example.controllers.MyController.print, parameter friendsName"
}

我对 @RequestParam@RequestPart 进行了相同的尝试,得到了相同的结果。

最佳答案

将可选参数标记为可为空。因此:

@RequestPart("name", required = false) name: String?
@RequestPart("friend_name", required = false) friendsName: String?

关于java - Spring Webflux : optional RequestPart/RequestParam is still required?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52737540/

相关文章:

spring - 如果 Spring boot REST Api 中存在额外参数,如何拒绝请求并发送自定义消息

java - .jar 文件在 IntelliJ 中工作,但在 IntelliJ 之外运行 .jar 时会出现 JVM 错误

java - Docx4J 表字体类型被忽略

java - 如何实现模拟功能?

java - 控制hibernate sql脚本运行

具有两个参数的 Java JPA 查询

java - 向导生成的 JPA DAO 方法不返回可迭代列表

java - 记录器输出到字符串

java - 未调用自定义 Spring 注释

java - 使用 Spring Boot 2.4.1 启动 Eureka Client 时出错