gpt4 book ai didi

java - 在 REST 端点上使用 throws 子句是否被认为是糟糕的设计?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:18:59 24 4
gpt4 key购买 nike

<分区>

我想从我的 REST 端点抛出异常。但是,我不太熟悉好的 REST 设计技术。考虑以下...

//note the throws clause
@POST
public Response saveNewActivity(@HeaderParam("sessionTokenString") String sessionTokenString, Activity activity) throws Exception {
Activity result = as.saveNewActivity(activity);
if (result == null) {
throw new DuplicateDataException("blah blah blah");
}
return Response.ok(result).build();
}

与处理异常和显式仅返回响应相比

@POST
public Response saveNewActivity(@HeaderParam("sessionTokenString") String sessionTokenString, Activity activity) {
try {
Activity result = as.saveNewActivity(activity);
if (result == null) {
throw new DuplicateDataException("blah blah blah");
}
return Response.ok(result).build();
} catch (Exception e) {
return Response.status(Response.Status.SOME_STATUS).build();
}
}

我可以使用 ExceptionMapper 映射 DuplicateDataException,如下所示

public class DuplicateDataExceptionMapper implements ExceptionMapper<DuplicateDataException> {

@Override
public Response toResponse(DuplicateDataException e) {
ErrorMessage errorMessage = new ErrorMessage ("Activity names must be unique.", <HttpStatusNumber>, "<add documentation here>");
return Response.status(Status.NOT_FOUND).entity(errorMessage).build();
}
}

尽管最后无论如何都会返回一个 Response,但是处理异常(无论它们是否是 RuntimeExceptions)的一种方式比另一种方式更受欢迎,还是它真的不重要?我从未在 REST 端点上看到 throws 语句,这就是我问的原因。

请注意 this questionthis question没有给出我要找的答案。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com