0% encontró este documento útil (0 votos)
36 vistas12 páginas

Tema 1 - Servicios Web Idat

Cargado por

J PC
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
36 vistas12 páginas

Tema 1 - Servicios Web Idat

Cargado por

J PC
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Guía 1 Escuela de Soluciones de Inteligencia de Negocios

Tecnología

Desarrollo de
Servicios Web 2

Tema Nº1:
TEMA 01
INTRODUCCIÓN Teoría
AL API RESTde los

TEMA de
Indicador Nº1:
logro Nº1:
Aplica los fundamentos de API Rest a través de los conceptos generales de GET,
POST, PUT, etc.
1
Guía 1 Escuela de Soluciones de Inteligencia de Negocios
Tecnología

INTRODUCCIÓN AL API REST


Subtema 1.1:
¿Qué es una API?
MARCO TEÓRICO

La abreviatura viene del término en inglés Application Programming Interfaces (Interfaces de programación de
aplicaciones), una API es una especificación formal sobre cómo un módulo de un software se comunica o interactúa con
otro.

En otras palabras, las API son un conjunto de comandos, funciones y protocolos informáticos que permiten a los
desarrolladores crear programas específicos para ciertos sistemas operativos. Las API simplifican en gran medida el
trabajo de un creador de programas, ya que no tiene que «escribir» códigos desde cero. Estas permiten al informático
usar funciones predefinidas para interactuar con el sistema operativo o con otro programa.

Por ejemplo, cuando el usuario compra entradas a través de la página web de una sala de cine e introduce la
información de su tarjeta de crédito, la web usa una API para enviar dicha información de forma remota a otro
programa que verifica si los datos bancarios son correctos. Una vez que se confirma el pago, la aplicación remota envía
la información al sitio web del cine y le da un «OK», por lo que esta página emite los tickets.

En todo ese proceso, el usuario solo ve una cara del proceso, la página del cine, pero tras bambalinas hay muchas
aplicaciones que se están comunicando gracias a las API.

API Rest

API REST llegó para quedarse, solo bastaría ver las tendencias de Google Trends para darse cuenta que REST ha
superado por creces a los servicios tradicionales SOAP y desde hace ya un tiempo.

API REST es un estilo de arquitectura de software que se utiliza para describir cualquier interfaz entre diferentes
sistemas que utilicen HTTP. Este último es un protocolo de comunicación que permite la transferencia de datos en la
web.

REST significa Representational State Transfer o en español transferencia de estado representacional, es un estándar
para la comunicación y creación de servicios para transferir información entre un cliente y un servidor. Esta

2
Guía 1 Escuela de Soluciones de Inteligencia de Negocios
Tecnología

transferencia de información, nos permitirán manipular datos a través de peticiones realizadas por el cliente hacia la
API; las cuales involucran al antes mencionado CRUD.

El CRUD tiene métodos bien definidos para realizar las operaciones, estos son los siguientes: GET para consultar, PUT
para actualizar/reemplazar, POST para crear y DELETE para eliminar.

Código de estado

Las API REST poseen otros aspectos muy importantes como el código de estado que se relaciona con el CRUD; sirve
para informar al cliente cómo fue procesada cierta petición dentro de la API. GET, POST, PUT, PATCH o DELETE, la
API responde con estos códigos que ayudan al cliente a decidir qué hacer una vez finalizada su petición. En resumen,
los códigos de estado indican si se ha completado satisfactoriamente una solicitud específica.

Los códigos de estado se agrupan en cinco tipos: respuestas informativas, respuestas satisfactorias, redirecciones,
errores de los clientes y errores de los servidores. A continuación, se enlistan algunos de los más utilizados agrupados
por tipo:

Respuestas informativas
 100 Continue
Respuestas satisfactorias
 200 OK
 201 Created
Redirecciones
 300 Multiple Choice
Errores de cliente
 400 Bad Request
 401 Unauthorized
 402 Payment Required
 403 Forbidden
 404 Not Found
Errores de servidor
 500 Internal Server Error

Desarrollar software basado en una API proporciona ventajas significativas para quien desarrolla y consume el
software, como los siguientes:

3
Guía 1 Escuela de Soluciones de Inteligencia de Negocios
Tecnología

 Flexibilidad al momento de elegir el lenguaje de programación que puede ser diferente al utilizado en el
cliente.
 La separación de cliente y servidor permite desarrollar proyectos de software segmentadamente y que
en su momento generan estabilidad y portabilidad a cualquier plataforma.
 Es posible reutilizar servicios ya existentes desarrollados por terceros e incorporarlos a nuestro negocio;
por ejemplo, los sistemas de identificación de Facebook y la autenticación en los servicios de Google.

Por todos lo expuesto, de concluye que el uso de las API ha permitido construir relaciones con otros negocios y llegar a
muchos más clientes, por lo que se han convertido en una herramienta clave para el crecimiento de los negocios.

Subtema 1.2:
JSON
Corresponde a las siglas JavaScript Object Notation o Notación de Objetos de JavaScript, es un formato ligero de
intercambio de datos, que resulta sencillo de leer y escribir para los programadores y simple de interpretar y generar
para las máquinas. JSON es un formato de texto completamente independiente de lenguaje, pero utiliza convenciones
que son ampliamente conocidos por los programadores, entre ellos:

 Java
 JavaScript
 Python
 Entre otros

Una de las características de JSON, al ser un formato que es independiente de cualquier lenguaje de programación, es
que los servicios que comparten información por este método no necesitan hablar el mismo idioma, es decir, el emisor
puede ser Java y el receptor Python, pues cada uno tiene su propia librería para codificar y decodificar cadenas en este
formato.

Ventajas

 Es autodescriptivo y fácil de entender


 Su sencillez le ha permitido posicionarse como alternativa a XML
 Es más rápido en cualquier navegador
 Es más fácil de leer que XML

1. MATERIALES

Para la experiencia a realizar se requiere lo siguiente:

a) EQUIPO

4
Guía 1 Escuela de Soluciones de Inteligencia de Negocios
Tecnología

Se requiere tener un equipo de cómputo (PC o laptop).

b) HERRAMIENTAS
 Java Developer Kit (JDK) version 8.x:
 Spring Tool Suite
 Apache Maven
 Postman

2. PROCEDIMIENTO

Se va a crear un proyecto Spring Boot, donde se definirá los métodos GET, POST, PUT, DELETE y también se
conocerán los códigos de respuesta HTTP.

Herramienta de trabajo

Creamos el proyecto en: [Link]

Después de descomprimirlo se procede a realizar el proyecto con los siguientes paquetes:

Se procede a comentar la siguiente dependencia en el [Link] ya que la


aplicación se realizará en memoria por el momento:

5
Guía 1 Escuela de Soluciones de Inteligencia de Negocios
Tecnología

Se define la clase de ejemplo para la aplicación:

package [Link];

import [Link];
import [Link];

public class Instructor implements Serializable


{
private static final long serialVersionUID=1L;

private Integer instructorId;


private String nombre;
private String apellidos;
private String password;
private String email;
private Date fregistro;

public Instructor() {
}

public Instructor(Instructor instructor)


{
this([Link](),[Link](),[Link](),
[Link](),[Link](),[Link]());
}

public Instructor(Integer instructorId, String nombre, String apellidos, String password,


String email, Date fregistro) {
[Link] = instructorId;
[Link] = nombre;
[Link] = apellidos;
[Link] = password;
[Link] = email;
[Link] = fregistro;
6 }

//Getters and Setters


}
Guía 1 Escuela de Soluciones de Inteligencia de Negocios
Tecnología

Se procede a realizar la capa DAO:

package [Link];

import [Link];
import [Link];

public interface InstructorRepository


{
public abstract void insert(Instructor instructor);
public abstract void update(Instructor instructor);
public abstract void delete(Integer instructorId);
public abstract Instructor findById(Integer instructorId);
public abstract Collection<Instructor> findAll();
}

package [Link];

import [Link];
import [Link];
import [Link];
import [Link];
import [Link];

@Repository
public class InstructorRepositoryImpl implements InstructorRepository
{
public static Collection<Instructor> itemsInstructor=new ArrayList<>();

@Override
public void insert(Instructor instructor) {
[Link](instructor);
}

@Override
public void update(Instructor instructor)
{
Instructor oldInstructor=findById([Link]());
[Link](oldInstructor);

Instructor newInstructor=new Instructor(instructor);


[Link](newInstructor);
}

@Override
public void delete(Integer instructorId)
{
Instructor instructor=findById(instructorId);
[Link](instructor);
}

@Override
public Instructor findById(Integer instructorId)
{
Optional<Instructor> instructor=
[Link]().filter(p -> [Link]()==instructorId).findFirst();
return [Link](null);
}

7 @Override
public Collection<Instructor> findAll() {
return itemsInstructor;
}
}
Guía 1 Escuela de Soluciones de Inteligencia de Negocios
Tecnología

Se procede a realizar la capa SERVICE:

package [Link];

import [Link];
import [Link];

public interface InstructorService


{
public abstract void insert(Instructor instructor);
public abstract void update(Instructor instructor);
public abstract void delete(Integer instructorId);
public abstract Instructor findById(Integer instructorId);
public abstract Collection<Instructor> findAll();
}

package [Link];

import [Link];
import [Link];
import [Link];
import [Link];
import [Link];

@Service
public class InstructorServiceImpl implements InstructorService
{
@Autowired
private InstructorRepository repository;

@Override
public void insert(Instructor instructor) {
[Link](instructor);
}

@Override
public void update(Instructor instructor) {
[Link](instructor);
}

@Override
public void delete(Integer instructorId) {
[Link](instructorId);
}

@Override
public Instructor findById(Integer instructorId) {
return [Link](instructorId);
}

@Override
public Collection<Instructor> findAll() {
return [Link]();
}
}

8
Guía 1 Escuela de Soluciones de Inteligencia de Negocios
Tecnología

Se procede a realizar la capa CONTROLLER:


package [Link];

import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];

@RestController
@RequestMapping("/instructor")
public class InstructorRestController
{
@Autowired
private InstructorService instructorService;

@GetMapping("/listar") //Http Method GET


public ResponseEntity<?> listar() {
Collection<Instructor> itemsInstructor=[Link]();
return new ResponseEntity<>(itemsInstructor,[Link]); //Http status code
}

@GetMapping("/buscar/{instructorId}") //Http Method GET


public ResponseEntity<?> buscar(@PathVariable Integer instructorId) {
Instructor instructor=[Link](instructorId);
if(instructor!=null) {
return new ResponseEntity<>(instructor,[Link]); //Http status code
}
return new ResponseEntity<Void>(HttpStatus.NOT_FOUND); //Http status code
}

@PostMapping("/agregar") //Http Method POST


public ResponseEntity<?> agregar(@RequestBody Instructor instructor) {
[Link](instructor);
return new ResponseEntity<Void>([Link]); //Http status code
}

@PutMapping("/editar/{instructorId}") //Http Method PUT


public ResponseEntity<?> editar(@PathVariable Integer instructorId,
@RequestBody Instructor newInstructor) {
Instructor instructor=[Link](instructorId);
if(instructor!=null) {
[Link]([Link]());
[Link]([Link]());
[Link]([Link]());
[Link]([Link]());
[Link]([Link]());
[Link](instructor);
return new ResponseEntity<Void>([Link]); //Http status code
}
return new ResponseEntity<Void>(HttpStatus.NOT_FOUND); //Http status code

@DeleteMapping("/borrar/{instructorId}") //Http Method DELETE


public ResponseEntity<?> borrar(@PathVariable Integer instructorId)
{
Instructor instructor=[Link](instructorId);

if(instructor!=null) {
[Link](instructorId);
return new ResponseEntity<Void>([Link]); //Http status code
9 }
return new ResponseEntity<Void>(HttpStatus.NOT_FOUND); //Http status code
}
}
Guía 1 Escuela de Soluciones de Inteligencia de Negocios
Tecnología

En el archivo [Link] definimos el path principal:


[Link]=8090
[Link]-path=/rest

Con todo lo anterior se definió los conceptos elementales de Servicios Web Rest con los métodos HTTP para
interactuar con las APIs, ahora se pasa a realizar las pruebas de testeo con POSTMAN:

Postman es una herramienta que se utiliza, sobre todo, para el testing de API REST, aunque también admite otras
funcionalidades que se salen de lo que engloba el testing de este tipo de sistemas.

Postman nos ayuda a ser más eficientes durante todo el ciclo de vida de desarrollo de una API. Hoy en día las API
RESTful están en todas partes, no importa la tematica de la aplicación, ni su tamaño.
Y al mismo tiempo son cada vez más complejas: métodos HTTP, headers, cookies, autenticación, tokens, OAuth y
mucho más.

Postman nos permite crear rápidamente solicitudes con el método HTTP necesario y parámetros en caso de necesitarlo,
enviar la solicitud e inspeccionar fácilmente los resultados.

Prueba de testeo con POSTMAN:

10
Guía 1 Escuela de Soluciones de Inteligencia de Negocios
Tecnología

Todos los resultados deben mostrar el código de estado HTTP de modo satisfactorio.

11
Guía 1 Escuela de Soluciones de Inteligencia de Negocios
Tecnología

ACTIVIDAD VIRTUAL:

a) CUESTIONARIO TÉCNICO

Revisa y analiza el tema desarrollado en la presente sesión, luego responde las siguientes preguntas propuestas:

 ¿Qué es una API?


 ¿En qué se diferencia REST con RESTful?
 ¿En qué rango de código de estado de respuesta HTTP se encuentran los errores de los servidores?
 ¿Qué ventajas tiene JSON sobre XML?
 Realice una App similar aplicando todo lo aprendido de esta guía, además debe mostrar los estados de
respuesta HTTP con Postman.

b) CONCLUSIONES DE LA EXPERIENCIA
____________________________________________________________________________________________
____________________________________________________________________________________________
____________________________________________________________________________________________
____________________________________________________________________________________________
____________________________________________________________________________________________
____________________________________________________________________________________________
____________________________________________________________________________________________
____________________________________________________________________________________________
____________________________________________________________________________________________
__________________________________________________________________________

12

También podría gustarte