下面是一个web服务,它给出了具有给定ID的所有书籍中的最新版本。//资源控制器
@Path("latestVersionBook/{id}")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getLatestVersionBook(long id){
bookList=service.getLatestVersionBook(id)
return Response.ok(bookList).build();
//下面的Backend Service是使用jpa获取图书的服务方法
public getLatestVersionBook(long id){
Query query = entityManager.createQuery("from Books where id = :id");
query.setParameter("id", id);
return query.getResultList().get(0);
}
如果id无效(表中不存在任何图书),此代码将抛出NullPointerException
。由于从视图层的转换将是UI呈现IDS列表-->用户发送对其中一个IDS的请求。因此,返回的列表将为null的情况并不常见。我应该检查null还是让代码抛出NULLPointerException
并让异常映射器将响应生成为BAD_Request
。
if(!bookList.isEmpty())
return Response.status(Status.BAD_REQUEST).build();
else
return Response.ok(bookList).build();
PS:如果id是一个自动递增的字段,我不确定上面的代码是否会给book对象提供最新的(最后的)id。查询可以修改为只获取最后的id。但是对于上面的问题,假设这是有效的
在这种情况下,我们通常发送404。URL是资源的标识符。如果URL的一部分被用作确定资源的标识符,那么对于该标识符未找到的资源的适当答复是404未找到。
一般来说,我个人所做的只是抛出一个异常,让Jersey来处理它。例如
if (book == null) {
throw new WebApplicationException(Response.Status.NOT_FOUND));
}
泽西将为我们处理这个异常,并发送一个404状态。我们可以很容易地自己处理响应
,但抛出异常只是我养成的习惯。AFAIK,没有真正的约定/最佳实践,至于哪一个更好,但有时您与接口契约绑定在一起,返回响应
是不可能的。在这种情况下,抛出异常是有意义的。
我正在通过函数验证用户输入。 这是我的代码: 我需要验证用户提供的和的值,以确保它们都是0或更大且不为空。不应接受负值或除数字以外的任何内容。 验证代码应该在get\u double函数中,我似乎不知道如何验证驻留在单独函数中的内容。请寻求指导。
我试图找到一个完整的模式列表,用于通过HTML5表单验证各种类型的输入,特别是、、等等,但我找不到任何模式。目前,这些输入验证的内置版本远非完美(甚至不检查输入的内容是否是电话号码)。所以我想知道,我可以使用哪些模式来验证用户在输入中输入了正确的格式? 以下是一些默认验证允许不允许的输入的例子: 这个字段允许在@后面有不正确域的电子邮件,它允许地址以破折号或句号开始或结束,这也是不允许的。因此,是
你好吗 我正在使用Java和Spring Boot开发Rest服务,我有一个关于使用javax.validation.验证用户输入的问题 假设我有一个具有name和age属性的用户模型。 假设我有两个endpoint(A和B),在endpointA中,我只需要验证名称,在endpointB中,我只需要验证年龄。 我面临的问题是使用javax。验证我需要验证两个endpoint上的两个属性。有没有办
问题内容: 我用来设置不接受。但是当我输入自然数(从0到9999999)时,被激活。 我哪里做错了?。请帮忙。 问题答案: 问题是您的REGX模式仅与输入“ 0-9”匹配。 为了满足您的要求(0-9999999),您应该重写regx模式: 我的例子: HTML: JS: 这是一个jsFiddle演示。
问题内容: 我是从记录用户输入使用。我需要验证输入内容,例如: 必须为非负数 它必须是字母 …等等 最好的方法是什么? 问题答案: 示例1:验证正整数 这是一个用于int从输入中验证肯定的简单示例。 结果: 请注意,与更详细组合相比,使用起来要容易得多。通过合同,一个 保证,如果它,然后将安静地给你int,并不会引发任何。 示例2:同一令牌上有多个 请注意,上面的代码段包含一个语句,以使Scann