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
请求urlentities\{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对我来说不太好。