Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java REST:处理GET请求的400错误_Java_Rest_Spring Mvc_Jersey - Fatal编程技术网

Java REST:处理GET请求的400错误

Java REST:处理GET请求的400错误,java,rest,spring-mvc,jersey,Java,Rest,Spring Mvc,Jersey,我有一个GET请求urlentities\{id}。这里RestController要求id为Long格式。测试用例表明,如果用户传递了无效的id,则控制器应返回HTTP-400错误请求。 例如: /entities/21.0,/entities/xx等。 但是在击中控制器本身之前,jersey抛出了一个HTTP-404错误 RestController如下所示: @GET @Path("/{id}") @Produces({ MediaType.APPLICATION_JSON, Media

我有一个
GET
请求url
entities\{id}
。这里RestController要求id为
Long
格式。
测试用例表明,如果用户传递了无效的
id
,则控制器应返回
HTTP-400错误请求。
例如:
/entities/21.0
/entities/xx
等。
但是在击中控制器本身之前,jersey抛出了一个
HTTP-404
错误

RestController如下所示:

@GET
@Path("/{id}")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public Response getEntityById(@PathParam("id") Long id){}

警告:这不是一个很好的解决方案,但它是一个有效的解决方案

第一:我相信@PathVariable是正确的注释,而不是@PathParam(我正在阅读3.2Spring参考)

  • 将id参数的类型更改为字符串
  • 在方法中,执行Long.parseLong(id)并捕获NumberFormatException
  • 返回NumberFormatException所需的错误指示

  • 该方法本身没有注释?我刚刚放置了方法签名,以显示它是如何读取id的。现在正在更新。请提供您的上下文配置以及整个类主体。这是唯一未访问的端点吗?我是说,你能联系到其他的休息服务吗?@tmarwen是的。我可以点击controller类中的其他URL。我相信@DwB打败了我,因为我打算建议将注释更改为
    @PathVariable
    谢谢。我也这么做了。在这里寻找更清洁的解决方案。在控制器类中使用Try/catch对我来说不太好。