Enterprise Java
Using JAX-RS exceptions for status codes
One way to send specific HTTP (error) status codes from a JAX-RS resource is to use the javax.ws.rs.core.Response
class with its Builder Pattern-like API. If you want to specify the return type according to the response body, you can still do so and send a different status on errors by throwing a WebApplicationException
.
@Path("test") public class TestResource { @GET public String hello() { if (new Random().nextBoolean()) throw new WebApplicationException(Response.Status.CONFLICT); return "Hello World, " + Instant.now(); } }
The constructors of this special type of exception accepts Response
s, Response.Status
es or int
types. The JAX-RS runtime will send the corresponding HTTP statuses and header fields, respectively.
There are also pre-defined subtypes of WebApplicationException
for common errors like NotFoundException
or BadRequestException
.
Published on Java Code Geeks with permission by Sebastian Daschner, partner at our JCG program. See the original article here: Using JAX-RS exceptions for status codes Opinions expressed by Java Code Geeks contributors are their own. |