En este laboratorio aprenderás paso a paso, como crear un API Rest con Java en Netbeans, este a su vez devolverá un json como respuesta a su request.
Primero debemos crear un proyecto Maven Web Application:



Luego en el source package crearemos un paquete al cual le llamaré API, daremos click derecho en el paquete y buscaremos la siguiente opción:


En la siguiente pantalla debemos llenar lo siguientes campos según corresponda:
- Path: nombre por el cual realizaremos la consulta a nuestro API.
- Class Name: nombre de la clase donde programaremos nuestra función GET.
- MIME Type: Tipo de contenido que dará como respuesta nuestro API.
Lo demás quedará igual y presionamos Finish.

Se nos crearán dos clases como las siguientes:

Tenemos un método llamado getJson dentro de la clase ApipruebaResource, a este le cambiaremos el nombre a consultaPersona y le envíaremos 4 parámetros usando la anotación @QueryParam:

Ahora crearemos un nuevo paquete llamado com.api.bean y dentro crearemos dos clases, una llamada Persona y otra llamada Telefono, las cuales tendrán lo siguiente:


Por último crearemos una clase más llamada Json la cuál solamente le enviaremos el objeto persona.

Ahora nos devolvemos a la clase ApipruebaResource y crearemos nuestro objeto persona el cual convertiremos a json:

Antes de continuar, debemos colocar la librería de gson en nuestro archivo pom.xml para poder usar la conversión a json:
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>1.7.1</version> </dependency>

Luego regresamos a la clase ApipruebaResource y colocaremos el siguiente código:

De esta forma nuestro API Rest quedaría terminada, por lo que debemos compilar y probar nuestra API Rest.
Para probar nuestro API Rest lo podemos hacer de 2 maneras:
- Damos click derecho en la carpeta RESTful Web Services y seleccionamos Test RESTful Web Services:

Se nos abrirá la siguiente pantalla donde lo probaremos:

2. La segunda forma de probarlo es por medio de un url en un navegador, para ello deberemos enviar el siguiente url, el puerto puede variar según la configuración de su servidor web:
http://localhost:8080/APIrestJava/webresources/apiprueba?cedula=12345&nombre=Emmanuel+Guzman&telefono=88888888&operador=Movistar

De esta manera hemos logrado crear un API Restful que nos devuelva un json como respuesta, si lo vemos formateado en json queda así:
{ "persona": { "cedula": "12345", "nombre": "Emmanuel Guzman", "telefono": { "telefono": "88888888", "operador": "Movistar" } } }
Luego de esto ya queda a nuestra creatividad la cantidad de contenedores que queramos crear en el json, sus respectivos atributos y la lógica detrás a implementar para responder el request.
Sería bueno que especificaras la ubicación de la clase Json
Hola Manuel,
La clase Json la creo dentro del paquete com.api.bean, como solamente estamos colocando la variable de tipo Persona, también es un bean con sus getters y setters.
Saludos
Hola, mi packege no aparece como API, agradecería tu comentario gracias ☺️
Hola, yo le puse al paquete el nombre API, en el tercer párrafo lo indico.
Qué se debe hacer si no detecta la clase Gson en la clase de Resource?
Eso puede suceder por 2 razones, uno porque probablemente aún no has compilado el pom.xml y no se ha actualizado la lista de librerías, o 2 porqué no hayas colocado el import de gson en la clase donde lo vas a utilizar
Lo despliego pero no me sale los campos para colocar los datos personales ¿sabes que puede estar sucediento? gracias
Como puedo hacer para conectar una base de datos a través de la API?
Depende la base de datos pero si es una base de datos Oracle puedes usar un ORDS, crear los schemas de ORDS y utilizar los paquetes para crear los privilegios y roles, desde el paquete puedes crear el client_id y el client_secret y luego puedes exponer procesos desde la base de datos para comunicarse completamente por API y usando solo json
No puedo crear un proyecto Maven->Web Aplication. Me arroja un error : Cannot run program «cmd» (in directory «C:\Users\scazz\OneDrive\Documentos\NetBeansProjects»): Malformed argument has embedded quote:
Debe haber un problema con tu instalación de Netbeans, intenta probar abrirlo como administrador
no me reconoce la dependencia Gson a pesar de que ya se introdujo
Debes compilar la aplicación para que se cargue la dependencia del pom.xml y luego ya la podrás utilizar
Como le agrego autenticación para que no puedan acceder cualquier persona
Para ello podrías utilizar algún framework como spring security para implementar autenticación oauth2 por ejemplo
Un par de dudas:
– Cómo añades datos a los objetos Persona y Teléfono?
– Al hacer el test del WebService me aparece una pantalla con error 404, con la url:
http://localhost:8080/APIrestJAVA/resources/application.wadl
Eso es que no me encuentra el *.wadl, pero no sé por qué.
Gracias
Hola, segui tu ejemplo… pero al tratar de acceder a la ruta de la API siempre me marca error 404, no se encuentra la ruta lo que no entiendo es el porque tengo que configurar algo en el web.xml o algo por el estilo?
gracias y saludos
El error 404 se da porque no encuentra la aplicación, probablemente no se está desplegando y de ahí que no le encuentra la ruta, revisa el servidor de aplicaciones y verifica que sí está desplegada
mmm… pues es raro, pero si esta desplegado en el servidor tal es así que puedo acceder a la ruta del index.html con el contexto configurado en el proyecto, pero de plano no logro hacerlo trabajar, en cuanto ingreso la ruta de la api siempre me arroja error 404, no se si tenga algo que ver la versión de netbeans y servidor que estoy ocupando (apache netbeans 12 y 15), me confunde mucho porque recuerdo que alguna vez hice algo así con eclipse (otras versiones) y fue muy rápido y ahora que intento con netbeans no se porque no me deja. :'(
Hola, ya descubri cual era el problema… todo tenía que ver con la jdk con la que se ejecuta el servidor de glassfish. caso raro pero si tienes varias jdk en tu sistema ten en cuenta eso. Lo pongo por si a alguien le llega a pasar.