miércoles, 8 de julio de 2020

RESTful API

Crear un Web Service

Bibliotecas requeridas

  • JAX-RS 2.0
  • Jersey 2.5.1


Estructura del proyecto



Persona.java
  1. package entity;
  2. import java.time.LocalDate;
  3. public class Persona {
  4. private String dni;
  5. private String name;
  6. private LocalDate birthday;
  7. private Float weight;
  8. public Persona() {
  9. }
  10. public String getDni() {
  11. return dni;
  12. }
  13. public void setDni(String dni) {
  14. this.dni = dni;
  15. }
  16. public String getName() {
  17. return name;
  18. }
  19. public void setName(String name) {
  20. this.name = name;
  21. }
  22. public LocalDate getBirthday() {
  23. return birthday;
  24. }
  25. public void setBirthday(LocalDate birthday) {
  26. this.birthday = birthday;
  27. }
  28. public Float getWeight() {
  29. return weight;
  30. }
  31. public void setWeight(Float weight) {
  32. this.weight = weight;
  33. }
  34. }

RestApi.java
  1. package apiRest;
  2. import javax.ws.rs.ApplicationPath;
  3. import javax.ws.rs.core.Application;
  4. @ApplicationPath("/service")
  5. public class RestApi extends Application {
  6. }

TextRest.java
  1. package apiRest.services;
  2. import javax.ws.rs.GET;
  3. import javax.ws.rs.Path;
  4. import javax.ws.rs.Produces;
  5. import javax.ws.rs.core.MediaType;
  6. @Path("/texto")
  7. @Produces(MediaType.TEXT_PLAIN)
  8. public class TextRest {
  9. @GET
  10. @Path("/prueba")
  11. public String dataGet() {
  12. return "Probando un Web Service";
  13. }
  14. }

JsonRest.java
  1. package apiRest.services;
  2. import entity.Persona;
  3. import java.time.LocalDate;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. import javax.ws.rs.GET;
  7. import javax.ws.rs.Path;
  8. import javax.ws.rs.Produces;
  9. import javax.ws.rs.core.GenericEntity;
  10. import javax.ws.rs.core.MediaType;
  11. import javax.ws.rs.core.Response;
  12. @Path("/json")
  13. @Produces(MediaType.APPLICATION_JSON)
  14. public class JsonRest {
  15. @GET
  16. @Path("/objeto")
  17. public Response getObject() {
  18. Persona p = new Persona();
  19. p.setDni("96584422");
  20. p.setName("Paul");
  21. p.setBirthday(LocalDate.of(1993, 5, 17));
  22. p.setWeight(62.7f);
  23. return Response.ok(p).build();
  24. }
  25. @GET
  26. @Path("/lista")
  27. public Response getList() {
  28. Persona p1 = new Persona();
  29. p1.setDni("10084422");
  30. p1.setName("Milagros");
  31. p1.setBirthday(LocalDate.of(1993, 2, 7));
  32. p1.setWeight(52.7f);
  33. Persona p2 = new Persona();
  34. p2.setDni("00084422");
  35. p2.setName("Yadira");
  36. p2.setBirthday(LocalDate.of(1992, 10, 1));
  37. p2.setWeight(57f);
  38. Persona p3 = new Persona();
  39. p3.setDni("41557422");
  40. p3.setName("Alejandra");
  41. p3.setBirthday(LocalDate.of(1990, 1, 21));
  42. p3.setWeight(49.9f);
  43. List<Persona> list = new ArrayList<>();
  44. list.add(p1);
  45. list.add(p2);
  46. list.add(p3);
  47. GenericEntity<List<Persona>> ge = new GenericEntity<List<Persona>>(list){};
  48. return Response.ok(ge).build();
  49. }
  50. }

Si colocamos http://localhost:8082/RestApi/service/texto/prueba en el navegador obtendremos la respuesta:

  • Probando un Web Service


Para consumir los Web Services que devuelven Json se debe invocar a sus URI en los clientes REST que serían:
  • http://localhost:8082/RestApi/service/json/lista
  • http://localhost:8082/RestApi/service/json/objeto


Nota: la dirección (localhost) y el puerto (8082) variarán dependiendo de la ubicación y puerto empleado por el servidor de Java EE.

No hay comentarios:

Publicar un comentario