我们正在为一个项目评估Spring 5,并且不确定如何最好地验证Mono
参数。传统上,我们一直使用
MethodValidationPostProcessor 来验证我们的方法参数,如下所示:
@Validated
@Service
public class FooService
@Validated(SignUpValidation.class)
public void signup(@Valid UserCommand userCommand) {
...
}
然后,我们将在ControllerAdvice
或中处理异常ErrorController
,并将适当的4xx响应传递给客户端。
但是,当我将参数更改为时Mono
,如下所示,它似乎不再起作用。
@Validated
@Service
public class FooService
@Validated(SignUpValidation.class)
public Mono<Void> signup(@Valid Mono<UserCommand> userCommand) {
...
}
据我了解,Spring Reactive可能实际上不起作用。那么,Spring
5验证Mono
s和Flux
es,然后发送适当的错误响应的最佳实践是什么?
很快,在回答该问题之前,方法的void
返回类型在反应式应用程序中非常罕见。看来,此方法应该异步执行实际工作,但该方法返回一个同步类型。我已将其更改为Mono<Void>
答案。
如参考文档中所述,Spring
WebFlux确实支持验证。
但此处的最佳做法有所不同,因为方法参数可以是反应性类型。如果method参数尚未解析,则无法获得验证结果。
因此,类似的事情实际上是行不通的:
// can't have the BindingResult synchronously,
// as the userCommand hasn't been resolved yet
public Mono<Void> signup(@Valid Mono<UserCommand> userCommand, BindingResult result)
// while technically feasible, you'd have to resolve
// the userCommand first and then look at the validation result
public Mono<Void> signup(@Valid Mono<UserCommand> userCommand, Mono<BindingResult> result)
反应式运算符更惯用且更易于使用:
public Mono<Void> signup(@Valid Mono<UserCommand> userCommand) {
/*
* a WebExchangeBindException will flow through the pipeline
* in case of validation error.
* you can use onErrorResume or other onError* operators
* to map the given exception to a custom one
*/
return userCommand.onErrorResume(t -> Mono.error(...)).then();
}
我只是想为用户类编写一个测试来检查验证。我想知道没有任何东西被验证为带注释的。 现在我在尝试这个: 我假设了一些例外,但没有。 那么有没有办法测试这些注释呢 什么时候启动这些验证
问题内容: 我的应用程序采用这样的字符串:“ 2002-10-15 10:55:01.000000”。我需要验证该字符串对于db2时间戳有效。 我怎样才能做到这一点? 编辑:这主要工作 问题是,如果我以毫秒为单位传递了格式错误的格式(例如“ 2011-05-02 10:10:01.0av”),则会通过验证。我假设由于第一个毫秒字符是有效的,所以它只会截断字符串的其余部分。 问题答案: 我不确定格式
问题内容: 我正在尝试使用Jackson JSON接受一个字符串,并确定它是否为有效JSON。谁能建议要使用的代码示例(Java)? 问题答案: 不知道您的用例是什么,但是应该这样做:
问题内容: 我是从记录用户输入使用。我需要验证输入内容,例如: 必须为非负数 它必须是字母 …等等 最好的方法是什么? 问题答案: 示例1:验证正整数 这是一个用于int从输入中验证肯定的简单示例。 结果: 请注意,与更详细组合相比,使用起来要容易得多。通过合同,一个 保证,如果它,然后将安静地给你int,并不会引发任何。 示例2:同一令牌上有多个 请注意,上面的代码段包含一个语句,以使Scann
本文向大家介绍如何使用jQuery验证表单?,包括了如何使用jQuery验证表单?的使用技巧和注意事项,需要的朋友参考一下 首先,您必须制作一个类似html的表单。 现在使用jQuery验证插件以更简单的方式验证表单的数据。 首先,在文件中添加jQuery库。 然后使用简单语法定义规则。 定义错误消息。 现在终于提交表格了。
我正在尝试使用Vue和Laravel构建一个应用程序。我目前在Laravel中使用passport身份验证进行用户身份验证。但是,当我尝试使用axio从vue组件发出post请求时,即使我当前已登录,也会获得401未经授权的权限。 下面是一些示例代码: 1.从vue组件获取请求 2.拉维路 3.与上述get请求关联的日历控制器 我花了好几个小时研究这个问题,但我发现的一切都不起作用。因此,任何帮助
我正在尝试使用Spring boot 2.3.1 Spring security 7做一个webapp。现在,我的主要目标是,如果用户想要登录(使用定制的angular登录页面),前端会将数据(用户名和密码)发送到后端,我想在那里进行身份验证,并向前端发回一条消息(比如:OK message或其他) 我的项目是这样工作的:用maven我构建角前端,从“dist”文件夹中复制文件/文件夹并放入后端资
我需要使用java.security包使用信封的xml-dsig签名来验证文档。加载后,我取消了元帅文档,并根据xsd具有签名对象 - http://www.w3.org/2000/09/xmldsig# 然后: 调用getPublicKey并验证,结果我得到了签名长度不匹配,如果我没有编码签名,我没有得到不匹配,但也验证是错误的,但我使用的测试数据是完全有效的。放弃寻找错误,帮助我。请。文件编码