【发布时间】: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 冷静,我只是问有没有类似
HttpRequestMethodNotSupportedException或MethodArgumentTypeMismatchException的东西可以自动处理错误的查询参数。我认为所需的异常没有得到处理,因此它会引发默认的 http-500 错误,因为它具有不正确的内容类型标头或类似的东西。为什么所有的消极情绪?只是想要一条建议,我应该在哪里调查以解决问题。 GlobaExceptionHandler 或控制器或任何其他地方。抱歉,如果这个问题不恰当并且以某种方式冒犯了您