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

确认传递到SpringRESTendpoint的RequestBody的无效输入的方法

蓟雪峰
2023-03-14

我有一个SpringBoot项目作为rest服务。其中一个endpoint,我们称之为/search是一个POST请求方法,它使用@RequestBody并将其映射到java对象。pojo称为SearchCriteria

在测试过程中,我发现如果我拼错了请求体参数之一,该值不会映射到任何东西,但是不会发生任何不好的事情(错误、异常等)。我希望SearchCriteria对象中的3个字符串值是可选的,这不是必须在每个json请求中提供的,但是如果在没有映射的主体中传递了无效的参数,是否有办法捕获?

我的问题的一个例子是:

比如说搜索标准。java有三个字符串值(string1、string2、string3)。

所以在第一个请求中,身体包含

   { 
     "string1":"abcd",
     "string2":"efgh",
     "string3":"ijkl"
   } 

这是一个很好的要求!然而,在随后的请求中,我的身体有一个输入错误(string1现在是string1

 {
    "strang1":"abcd",
     "string2":"efgh",
     "string3":"ijkl"
 } 

有没有办法证明这个“strang1”拼写不正确?我总是可以验证string1、string2和string3是否不为null,但在我的情况下,它们是可选的,因此无效。此外,即使它们是强制性的,如果添加了POJO中未包含的第四个参数,该怎么办?说

 {
    "strang1":"abcd",
     "string2":"efgh",
     "string1":"abcd",
     "string3":"ijkl"
 } 

是否有方法捕获未映射到RequestBody对象的错误请求正文对象?

共有1个答案

云丰
2023-03-14

SpringBoot使用jackson进行序列化和反序列化,因此您可以设置

spring.jackson.deserialization.fail_on_unknown_properties=true

在您的属性文件中,当您发送未知属性时,它应该会给您一个400。

 类似资料:
  • 我仍在学习java编程,请原谅我的知识不足。这可能是有史以来最简单的事情,但我一辈子都想不出更好的方法来循环checkTaskDescription方法,直到用户输入的描述低于字符限制。到目前为止,这是我能够做到的唯一方法,但它显然会重复输入对话框两次。 这是执行它的部分 这是正在执行的checkTaskDescription方法:

  • 当用户输入无效的方向时,只需要一些关于打印一行的指导。我曾尝试在代码的几个不同部分使用if-move-not-in-rooms[position],但似乎无法正常运行。我觉得盯着我看是件很愚蠢的事,但唉,我还在学习。但基本上,当用户输入除北、南、东、西或出口以外的内容时,这是一个打印行的问题。 此外,如果还有更好的方法来编写代码,我会接受批评。谢谢你们!

  • 这是我为CS类制作的文本冒险游戏的一小部分。你正在探索一座房子,你通过告诉游戏你想去北、南、东还是西来导航它 因此,我想添加一些内容,以便在输入无效输入时告诉您,如果您说拼写错误的单词,如Nroth、Suoth、Eas或Weast。这些只是例子,但希望你们知道我的意思,只要它不完全匹配北,南,东或西。在这段代码中,我将如何做到这一点? 我举了一个错误的例子,如果你在写“elif room==”的地

  • 我需要一些关于Flink流媒体的帮助。我在下面生成了一个简单的Hello world类型的代码。这将流式传输来自RabbitMQ的Avro消息,并将其持久化到HDFS。我希望有人可以查看代码,也许它可以帮助其他人。 我发现的Flink流媒体的大多数示例都会将结果发送到std out。我实际上想把数据保存到Hadoop中。我读到,理论上,你可以和Flink一起去任何你喜欢的地方。实际上,我还没有找到

  • 第一个数字:3第二个数字:4和:7

  • 我正在尝试将预订id从HTML传递到模态。在图片中,当我单击屏幕的“Reservation:preview”旁边的“Cancel”时,会出现一个模式,它应该包含Reservation:preview的id号 弹出Modal,但没有保留id号。拜托,怎么了? 我遵循了这个教程:https://www.geeksforgeeks.org/how-to-pass-data-into-a-bootstra