我如何 return 来自 dropwizard 的 404 http 状态
how can i return 404 http status from dropwizard
dropwizard 的新手!无论如何,我可以从 api 手动 return 不同的 http 状态代码吗?基本上类似于这个!
@GET
@Timed
public MyObject getMyObject(@QueryParam("id") Optional<String> id) {
MyObj myObj = myDao.getMyObject(id)
if (myObj == null) {
//return status.NOT_FOUND; // or something similar
// or more probably
// getResponseObjectFromSomewhere.setStatus(mystatus)
}
return myObj;
}
就像扔一个 WebApplicationException
一样简单。
@GET
@Timed
public MyObject getMyObject(@QueryParam("id") Optional<String> id) {
MyObject myObj = myDao.getMyObject(id)
if (myObj == null) {
throw new WebApplicationException(404);
}
return myObj;
}
随着您的深入,您可能希望将自定义异常放在一起,您可以 read more about here。
我建议使用 JAX-RS 响应 object 而不是在响应中返回您的实际域 object。它是将元数据包含在您的响应中的优秀标准 object,并提供了一个很好的构建器来处理状态代码、headers、客户内容类型等。
//import javax.ws.rs.core.Response above
@GET
@Timed
public Response getMyObject(@QueryParam("id") Optional<String> id) {
MyObject myObj = myDao.getMyObject(id)
if (myObj == null) {
//you can also provide messaging or other metadata if it is useful
return Response.status(Response.Status.NOT_FOUND).build()
}
return Response.ok(myObj).build();
}
最简单的方法是 return 一个 Optional<MyObject>
。如果您使用 dropwizard-java8 包,当您的结果为 Optional.absent()
或 Optional.empty()
时,Dropwizard 将自动抛出 404。
就这样:
@GET
@Timed
public Optional<MyObject> getMyObject(@QueryParam("id") Optional<String> id) {
Optional<MyObject> myObjOptional = myDao.getMyObject(id)
return myObjOptional;
}
显然,您需要根据 returning Optional.fromNullable(get(id))
for Guava 或 Optional.ofNullable(get(id))
for Java8 bundle 更新您的 DAO。
除非您想 return 在 200
和 404
[=19= 之外使用自定义状态代码,否则无需使用自定义 Response
对象]
dropwizard 的新手!无论如何,我可以从 api 手动 return 不同的 http 状态代码吗?基本上类似于这个!
@GET
@Timed
public MyObject getMyObject(@QueryParam("id") Optional<String> id) {
MyObj myObj = myDao.getMyObject(id)
if (myObj == null) {
//return status.NOT_FOUND; // or something similar
// or more probably
// getResponseObjectFromSomewhere.setStatus(mystatus)
}
return myObj;
}
就像扔一个 WebApplicationException
一样简单。
@GET
@Timed
public MyObject getMyObject(@QueryParam("id") Optional<String> id) {
MyObject myObj = myDao.getMyObject(id)
if (myObj == null) {
throw new WebApplicationException(404);
}
return myObj;
}
随着您的深入,您可能希望将自定义异常放在一起,您可以 read more about here。
我建议使用 JAX-RS 响应 object 而不是在响应中返回您的实际域 object。它是将元数据包含在您的响应中的优秀标准 object,并提供了一个很好的构建器来处理状态代码、headers、客户内容类型等。
//import javax.ws.rs.core.Response above
@GET
@Timed
public Response getMyObject(@QueryParam("id") Optional<String> id) {
MyObject myObj = myDao.getMyObject(id)
if (myObj == null) {
//you can also provide messaging or other metadata if it is useful
return Response.status(Response.Status.NOT_FOUND).build()
}
return Response.ok(myObj).build();
}
最简单的方法是 return 一个 Optional<MyObject>
。如果您使用 dropwizard-java8 包,当您的结果为 Optional.absent()
或 Optional.empty()
时,Dropwizard 将自动抛出 404。
就这样:
@GET
@Timed
public Optional<MyObject> getMyObject(@QueryParam("id") Optional<String> id) {
Optional<MyObject> myObjOptional = myDao.getMyObject(id)
return myObjOptional;
}
显然,您需要根据 returning Optional.fromNullable(get(id))
for Guava 或 Optional.ofNullable(get(id))
for Java8 bundle 更新您的 DAO。
除非您想 return 在 200
和 404
[=19= 之外使用自定义状态代码,否则无需使用自定义 Response
对象]