JAX RS – 25 – javax.ws.rs.core.Response
Merhaba Arkadaslar
Bu bolumde javax.ws.rs.core.Response sinifini inceleyecegiz.
javax.ws.rs.core.Response abstract sinifinda dikkatimizi cekecek su 3 metot yer almaktadir.
public abstract class Response { public abstract Object getEntity(); public abstract int getStatus(); public abstract MultivaluedMap<String, Object> getMetadata(); ... }
javax.ws.rs.core.Response abstract siniftir direkt objesini olusturamayiz.
javax.ws.rs.core.Response.ResponseBuilder abstract sinifinda static yardimci metotlar yardimiyla kullanacagiz.
Response objects cannot be created directly; instead, they are created from javax.ws.rs.core.Response.ResponseBuilder instances returned by one of the static helper methods of Response
PersonResource.java
Basit bir ornek yapalim,metodumuz geriye javax.ws.rs.core.Response tipinde donmektedir.
//imports @GET @Path("/name") public Response getPersonNameById() { String personName = "Levent"; ResponseBuilder builder = Response.ok(personName); // add header builder.header("myHeader", "myHeaderValue"); // add cookie builder.cookie(new NewCookie("myCookie", "myCookieValue")); return builder.build(); }
Response$ResponseBuilder.class
ResponseBuilder sinifi static nested class’tir. ok() metodu icin overloaded metotlar yer almaktadir.
ResponseBuilder#header ve ResponseBuilder#cookie geriye ResponseBuilder donmektedir.
Ornek kodumuzda yeni bir header ve cookie ekledik.
public static abstract class ResponseBuilder {... public abstract ResponseBuilder header(String name, Object value); public abstract ResponseBuilder cookie(NewCookie... cookies); public static ResponseBuilder ok() { return status(Status.OK); } public static ResponseBuilder ok(Object entity) { ResponseBuilder b = ok(); b.entity(entity); return b; } ....
HTTP response code’lari icin Response$Status enum kullanilmaktadir.
Response$Status.class
public enum Status { OK(200, "OK"), CREATED(201, "Created"), ACCEPTED(202, "Accepted"), NO_CONTENT(204, "No Content"), MOVED_PERMANENTLY(301, "Moved Permanently"), SEE_OTHER(303, "See Other"), NOT_MODIFIED(304, "Not Modified"), TEMPORARY_REDIRECT(307, "Temporary Redirect"), BAD_REQUEST(400, "Bad Request"), UNAUTHORIZED(401, "Unauthorized"), FORBIDDEN(403, "Forbidden"), NOT_FOUND(404, "Not Found"), NOT_ACCEPTABLE(406, "Not Acceptable"), CONFLICT(409, "Conflict"), GONE(410, "Gone"), PRECONDITION_FAILED(412, "Precondition Failed"), UNSUPPORTED_MEDIA_TYPE(415, "Unsupported Media Type"), INTERNAL_SERVER_ERROR(500, "Internal Server Error"), SERVICE_UNAVAILABLE(503, "Service Unavailable"); public enum Family { INFORMATIONAL, SUCCESSFUL, REDIRECTION, CLIENT_ERROR, SERVER_ERROR, OTHER } public Family getFamily() public int getStatusCode() public static Status fromStatusCode(final int statusCode) }
Ornegimizi calistiralim ;
http://localhost:8080/injavawetrust.jersey.tutorial/person-response/name http://localhost:8080/injavawetrust.resteasy.tutorial/person-response/name
Dikkat edecek olursak header ve cookie’nin eklendigini gorebiliriz.
Bir baska ornek olarak ;
@GET @Path("/person") @Produces(MediaType.APPLICATION_JSON) public Response getPersonById() { Person person = new Person(100, "Levent", "Erguder"); ResponseBuilder builder = Response.ok(person); return builder.build(); }
Ornegimizi calistirdigimizda ;
http://localhost:8080/injavawetrust.resteasy.tutorial/person-response/person http://localhost:8080/injavawetrust.jersey.tutorial/person-response/person
Bir baska ornek olarak ;
@GET @Path("/persons") @Produces(MediaType.APPLICATION_JSON) public Response getAllPersons() { Person person1 = new Person(100, "Levent", "Erguder"); Person person2 = new Person(101, "James", "Gosling"); Person person3 = new Person(102, "Joshua", "Bloch"); List<Person> persons = Arrays.asList(person1, person2, person3); // GenericEntity<List<Person>> genericEntity = new GenericEntity<List<Person>>(persons) {}; // return Response.ok(genericEntity).build(); return Response.ok(persons).build(); }
The GenericEntity class is a Java generic template. What you do here is create an anonymous class that extends GenericEntity, initializing the GenericEntity’s template with the generic type you’re using.
Ornegi calistirdigimizda ;
http://localhost:8080/injavawetrust.resteasy.tutorial/person-response/persons http://localhost:8080/injavawetrust.jersey.tutorial/person-response/persons
Github kaynak kodlar / source folder
injavawetrust.resteasy
injavawetrust.jersey
Yazimi burada sonlandiriyorum.
Herkese Bol Javali Gunler dilerim.
Be an oracle man , import java.*;
Levent Erguder
OCP, Java SE 6 Programmer
OCE, Java EE 6 Web Component Developer
Leave a Reply