我接受API的枚举参数,但当我通过Postman使用无效参数时,我得到空白的400错误请求响应。我想要一条有意义的错误消息,如:“无效类型,请插入…”
public ResponseEntity<JsonNode> getForType(
@Parameter(name = "type") @Valid @RequestParam @EnumString(enumClass = RequestParams.Type.class) RequestParams.Type type,
...
枚举字符串.java:
public @interface EnumString {
Class<? extends Enum<?>> enumClass();
String message() default "must be any of enum {enumClass}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
EnumStringValidator.java:
public class EnumStringValidator implements ConstraintValidator<EnumString, Enum> {
private List<String> acceptedValues;
@Override
public void initialize(EnumString annotation) {
acceptedValues = Stream.of(annotation.enumClass().getEnumConstants())
.map(Enum::name)
.collect(Collectors.toList());
}
@Override
public boolean isValid(Enum value, ConstraintValidatorContext context) {
if (value == null) {
return true;
}
return acceptedValues.contains(value.name());
}
}
}
我创建了一个自定义验证器EnumString和EnumStringValidator,但类型甚至没有到达验证器。如果它是无效类型,那么它甚至不会进入验证。如何将参数保留为“类型枚举”,如果用户传递了无效的参数,我又如何抛出错误消息?
您的枚举代码遗漏了一些重要的元信息。
@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy=EnumStringValidator.class)
public @interface EnumString {
Class<? extends Enum<?>> enumClass();
String message() default "must be any of enum {enumClass}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
我最终将输入参数改为字符串,而不是enum类型。我还使用了@ Schema(implementation = request params。Type.class)来大摇大摆地维护下拉列表。然后,我在java代码中添加了一些验证,以检查它是否与enum匹配,从而抛出一个正确的错误消息。
@Parameter(name = "type") @Valid @RequestParam @Schema(implementation = RequestParams.Type.class) String type
问题内容: 我只是使用a 从这样的用户那里获取最新的tweet: 这在我的本地主机上运行良好,但是当我将其上传到服务器时会引发以下错误: 警告: file_get_contents(http://api.twitter.com/1/statuses/user_timeline/User.json)[function.file- get-contents]:无法打开流:HTTP请求失败!HTTP /
运行时,我收到错误消息: 它将重复尝试在其他端口启动,但没有成功。 几天前,我的安装工作正常,我没有进行任何手动更新。错误消息是什么意思? 我还通过测试设置了一个新的Laravel项目,我可以正确地启动它。因此,我假设我的所有工具仍然正确安装。
我已经用谷歌搜索了它。但是这些都不能解决我的问题。我在调用rest控件时,代码中的SSL证书出现了问题。 我的控制方法是: 错误为:-I/O错误在“https://myurl.com”的POST请求上:sun.security.validator.validatoreXception:PKIX路径构建失败:sun.security.provider.certpath.suncertPathBuil
JMeter HTTP请求-404错误 当我运行jmx文件时,其中一个HTTP请求文件会抛出404错误。屏幕截图如上图所示。 有人能为这个问题提出一些解决方案吗?
我使用Localstack和Test容器((test容器: localstack: 1.15.2))进行集成测试,并在测试设置中设置秘密,如下所示:代码示例 现在,测试因错误而崩溃: com.amazonaws.services.secretsmanager.model.AWSSecretsManagerException:请求中包含的安全令牌无效。(服务:AWSSecuresManager;状态
每当页面尝试提交2MB或更大的文件时,都会发生此错误。但是参数在帖子里!我已经检查了Chrome开发工具。有人知道这个错误吗?Springboot 2.0.3。释放