当前位置: 首页 > 知识库问答 >
问题:

当我用SpringDoc和接口描述API规范时,Spring控制器验证似乎不起作用

计寒
2023-03-14

“Wallet”模块,它包含实现api-spec接口的REST控制器的java类

想想我有:

'api-spec'module->WalletController.java

@RequestMapping(path = "/wallet", produces = MediaType.APPLICATION_JSON_VALUE)
public interface WalletController {

    @Operation(summary = "Create wallet")
    @PostMapping(path = "/create-wallet")
    ApiResponseContainer<WalletDto> createWallet(@Valid @RequestBody ApiRequestContainer<CreateWalletRequestDto> request);
}
@RestController
@Slf4j
public class WalletControllerImpl implements WalletController {
    @Override
    public ApiResponseContainer<WalletDto> createWallet(ApiRequestContainer<CreateWalletRequestDto> request) {
        /* validation does not perform in this case */
    }
}
@RequestMapping(path = "/good")
public class GoodController {
    @PostMapping
    public ApiResponseContainer<SomeDto> someMethod(@Valid @RequestBody SomeBodyDto bodyDto) {
        /* request is well validated here */
    }
}
}

有人面临这个问题吗?

共有1个答案

鞠晋
2023-03-14

嗯...看来是我的通用请求体出了问题。

检查差异:

验证“不起作用”:

public class ApiRequestContainer<T> {

    @Schema(description = "Request content")
    @NotNull
    T request;

    @Schema(description = "Signature of request content")
    @NotNull
    String signature;

}
public class ApiRequestContainer<T> {

    @Schema(description = "Request content")
    @Valid
    @NotNull
    T request;

    @Schema(description = "Signature of request content")
    @NotNull
    String signature;

}

 类似资料:
  • 我的代码看起来像 我的文件如下所示 当我运行程序时,我看到 我怎样才能修好它呢?

  • 问题内容: 我在使用该功能时遇到了麻烦。 我只需要知道SQL查询是否返回零行。 我已经尝试过以下简单的语句: 类型是哪里。上面的代码似乎不起作用。无论是否为空,它将始终打印该消息。 我检查了SQL查询本身,当存在行时它正确返回了非空结果。 关于如何确定查询是否已返回0行的任何想法?我用谷歌搜索,找不到任何答案。 问题答案: ResultSet.getFetchSize()不返回结果数!从这里: 使

  • 问题内容: 它看起来不像我的@Controller中的方法上的@Secured正在被读取。当使用基于sec:intercept-url的安全筛选时,这似乎工作正常。以下代码导致Spring Security给我这个日志条目: 调试:org.springframework.security.web.access.intercept.FilterSecurityInterceptor-公共对象-未尝试

  • 我有一个流监听器,作为 其中@input(“requesti”)配置如下所示; 发送记录ProducerRecord(TOPIC=Request,Partition=null,headers=recordheaders(headers=[recordheader(key=Key_TypeId,值=[106,97,118,97,46,117,116,105,108,85,85,85,73,68]),

  • 问题内容: 即使将属性设置为,我仍然会插入重复的条目。 我设置了使用定期在。我没有用表 问题答案: 我没有使用JPA创建表 然后,您应该在语句中向表中添加唯一约束,例如,如果您使用的是MySQL:

  • 根据我所发现和看到的一切,这似乎是正确的。打印$query时,结果如下所示: “在客户(名字、名字、姓氏、地址、城市、州、邮政编码、电子邮件、性别)中插入值(?,,,,,,,,,,?,,,?)” 参数应该已经用bindValues()中的变量填充。所以,举个例子。。。 插入到客户(第一名、中间名、最后名、地址、城市、州、邮编、电子邮件、性别)值(比尔、霍普金斯、123大街、...) 我想继续使用这