Java 如何处理查询参数不正确或不正确的请求

Java 如何处理查询参数不正确或不正确的请求,java,spring,exception,Java,Spring,Exception,因此,我的任务是处理不带或带有错误查询参数的请求 返回数据GET{url}/v1/transactions/?from=2017-01-01&to=2035-12-01¤cy=EUR的正确方法 不带查询参数的请求GET{url}/v1/transactions/ 查询参数不正确的请求GET{url}/v1/transactions/?from=2017-01-01&to=2035-12-01&currrrency=EUR 第一个导致HTTP-200,最后两个导致HTTP-500系统错

因此,我的任务是处理不带或带有错误查询参数的请求

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

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

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


第一个导致
HTTP-200
,最后两个导致
HTTP-500系统错误
。对于不正确的查询参数,它应该是HTTP-400
或其他4xx。我是否应该为某种类型的异常添加
exceptionHandler
(因为它以前使用的是不正确的内容类型等)?如果是,当未找到参数或无效参数时,会引发何种异常?或者,如果没有这样的例外,我相信我需要在我的控制器中添加一些验证。我认为添加defaultValues可以解决这个问题,但是如果我没有默认值,我该怎么做来防止这个问题发生,或者我该如何用http-500以外的另一种方式来处理它。

我建议您放置一个API的框架,它将告诉每个人您是如何编写API的

您可以通过以下方法来处理

1) 对于没有参数的请求,您将请求参数设置为必填项,其中 将给你400个错误代码,参数丢失,有时会给你不同的错误代码。你能应付的

您可以按照本教程进行操作。

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

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


2) 在控制器中写入逻辑以验证输入。

处理此问题的最佳方法是:

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


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

我建议您从阅读基础教程开始,该教程向您解释如何使用spring实现restful端点。你基本上是在利用我们为你写这样的教程。这不是这个社区的重点。我们会帮助你完成单独的步骤,但这个地方不能代替你坐下来学习你打算使用的技术。可能是@GhostCat冷静的复制品,我只是问是否有类似于
HttpRequestMethodNotSupportedException
MethodArgumentTypeMismatchException
的方法来自动处理错误的查询参数。我认为所需的异常只是没有得到处理,所以它抛出了默认的http-500错误,因为它使用了不正确的内容类型头或类似的东西。为什么会有这么多消极因素?只是想给我一个建议应该调查到哪里去解决问题。GlobaExceptionHandler或controller或任何其他位置。对不起,如果这个问题不合适,而且不知怎么冒犯了你
@RequestParam(name="currency", required=false) String currency