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

请求响应错误,名称为缺少字段-Spring Boot

隆飞宇
2023-03-14

我有一个获得名称和描述参数的APIendpoint(两者都是强制性的)

createSomething(@RequestParam(value = "name") String name,@RequestParam(value = "description") String description)

如果客户不提供任何这些,他将收到400个错误请求

有没有办法让我告诉客户缺少哪个字段?为“坏请求”响应提供更多信息

共有3个答案

濮阳国兴
2023-03-14

由于这两个参数都是必需的,如果您尝试发送不带参数的请求,将得到400(错误请求)。

一种解决方法是将请求参数设置为非强制性(这样就可以在没有参数的情况下发送请求),并在没有提供参数的情况下提供默认值

createSomething(@RequestParam(value = "name", required=false, defaultValue = null) String name,@RequestParam(value = "description", required=false, defaultValue = null) String description)

在函数中,可以像下面这样检查null-

if (name == null) // name parameter is not provided
if (description == null) // description paramter is not provided

并且,如果请求中未提供任何一个或多个参数,也可以根据条件发送错误响应。

张照
2023-03-14

Rest有很多处理错误的方法,请在下面找到至少5种解决方案的链接:

  1. 例外处理程序
  2. HandlerExceptionResolver(ResponseStatusExceptionResolver这是最适合您的案例,如果您使用spring 5,则是第四个案例)
  3. 控制器建议
  4. ResponseStatusException
  5. 处理Spring Security中被拒绝的访问

https://www.baeldung.com/exception-handling-for-rest-with-spring

吕德惠
2023-03-14

您可以使用自定义消息验证:

@GetMapping("/name-for-month")
public String getNameOfMonthByNumber(@RequestParam @Min(1) @Max(value = 12, message = “month number has to be less than or equal to 12”) Integer month) {
// ...
}
 类似资料:
  • 问题内容: 我是OSGI的新手,我试图找出解决以下错误的方法 org.osgi.framework.BundleException:包org.foo.serviceBundle中未解决的约束[253]:无法解决253.0:缺少要求[253.0]包;未解决。(&(package = org.slf4j)(版本> = 1.6.0)(!(版本> = 2.0.0))) 我使用了Maven原型来生成包,并在

  • 我需要从发布请求中获取ID。这是我的HTTP请求和标头管理器。 查看结果侦听器输出-采样器结果和请求响应数据为: { : "status":400,:" success":false,:" message ":"缺少请求正文!"} 我尝试使用blazemeter chrome插件,对于同样的请求,他们正在使用正文数据并解析其中的整个表单数据。有人能帮我吗? 授权持有人问题截图: BeanShell

  • 我正在使用WSO2 Integrator6.6.0使阻塞HTTP获得返回JSON响应的REST API(HTTP 200 OK)。 但我从未在序列中看到反应体。我不确定我做错了什么,已经用尽了所有可用的文档和其他线程。 执行调用的序列(简化为匿名),随后记录响应: 这只会导致一个日志行--根本没有响应体! 我可以在我的API应用程序中看到请求,我还可以看到它在日志中正确地返回响应体。此外,使用Po

  • 已安装: IBM Websphere MQ V7.5 GlassFish V3.1.2.2 MQ Explorer V7.5 我正在尝试为GlassFish配置资源适配器以使用Websphere MQ资源,并遵循http://www-01.ibm.com/support/knowledgecenter/ssfksj_8.0.0/com.ibm.MQ.dev.doc/q121520_.htm中的说明

  • 问题内容: 编译错误: 解决办法? 问题答案: Java不允许您在函数局部内部类内定义非最终静态字段。只允许顶级类和静态嵌套类具有非最终静态字段。 如果您要在班级中添加一个字段,请将其放在班级级别,如下所示:

  • 我正在使用一个基于json请求的API,除了一个请求之外,所有的请求都在工作。默认情况下,有问题的请求不允许跨域,但使用“Cors”可以工作。问题是,当我使用cors服务器使用javascript测试请求时,它可以工作,但当我使用node.js测试请求时,它不能工作。 不起作用的代码: 这是有效的代码: 我的网站做这个网址的请求:http://gankei-backend.herokuapp.co