【问题标题】:How to handle requests without or with incorrect query parameters [closed]如何处理没有或使用不正确查询参数的请求[关闭]
【发布时间】:2019-12-20 17:27:42
【问题描述】:

所以我的任务是处理不带或不带查询参数的请求。

正确的返回数据GET {url}/v1/transactions/?from=2017-01-01&to=2035-12-01&currency=EUR

不带查询参数的请求GET {url}/v1/transactions/

查询参数不正确的请求GET {url}/v1/transactions/?from=2017-01-01&to=2035-12-01&currrrrrrrrrrency=EUR

第一个结果为HTTP-200,最后两个结果为HTTP-500 System Error。对于不正确的查询参数,它应该是HTTP-400 或其他一些 4xx。我是否应该为某种异常添加exceptionHandler(因为它以前使用不正确的内容类型等)?如果是,在没有参数或无效的情况下会抛出什么样的异常?或者如果没有这样的异常,我相信我需要在我的控制器中添加一些验证。我认为这个问题可以通过添加 defaultValues 来解决,但是如果我没有默认值怎么办,我该怎么做才能防止这个问题发生,或者我该如何以 http-500 之外的其他方式处理它。

【问题讨论】:

  • 我建议您从阅读基础教程开始,该教程向您解释如何使用 spring 实现 restful 端点。您基本上是在使用我们为您编写这样的教程。这不是这个社区的重点。我们会帮助您完成各个步骤,但这个地方并不能代替您坐下来学习您打算使用的技术。
  • @GhostCat 冷静,我只是问有没有类似HttpRequestMethodNotSupportedExceptionMethodArgumentTypeMismatchException 的东西可以自动处理错误的查询参数。我认为所需的异常没有得到处理,因此它会引发默认的 http-500 错误,因为它具有不正确的内容类型标头或类似的东西。为什么所有的消极情绪?只是想要一条建议,我应该在哪里调查以解决问题。 GlobaExceptionHandler 或控制器或任何其他地方。抱歉,如果这个问题不恰当并且以某种方式冒犯了您

标签: java spring exception


【解决方案1】:

我建议你放置一个 API 的骨架,它会告诉大家你是如何编写 API 的。

您可以通过以下方式处理。

1) 对于不带参数的请求,您将请求参数设置为必填项 会给你 400 错误代码,参数丢失,有时它会给你不同的错误代码。你可以解决的。

Java Spring - how to handle missing required request parameters

您可以按照本教程进行操作。 https://www.baeldung.com/spring-request-param

2) 对于参数不正确的请求,

有两种处理方式 1) 内部类型转换器,将日期作为请求参数而不是字符串

How to accept Date params in a GET request to Spring MVC Controller?

2) 在控制器中编写一个逻辑来验证输入。

【讨论】:

    【解决方案2】:

    最好的处理方法是:

    @RequestParam(name="currency", defaultValue="EUR") String currency
    

    @RequestParam(name="currency", required=false) String currency
    

    在第二种情况下,您应该检查您的控制器中是否存在货币。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-18
      • 2020-10-26
      • 2018-03-08
      • 2021-12-22
      • 2021-09-22
      • 2021-01-21
      • 1970-01-01
      相关资源
      最近更新 更多