SlideShare una empresa de Scribd logo
Definición de APIs
con Swagger
JOAQUIN COPETE
JCOPETEG@GMAIL.COM
¿Qué es Swagger?
 Lenguaje de definición agnóstico del lenguaje para APIs REST
 Comprensible tanto para personas como máquinas
 Que permita descubrir y entender las capacidades de un servicio
sin necesidad de acceder a código fuente, documentación,…
 Además Swagger proporciona un gran ecosistema de
herramientas:
 Interfaces de usuario
 Librerías de código
 Editor del lenguaje
jcopete.com
Definición básica de un API REST
 Los elementos mínimos que un API REST debe contemplar en
formato swagger son:
 Swagger: indica la versión, en adelante usaremos la más reciente
actualmente, la 2.0
 Info: indica información de metadatos de las APIs
 Title: Título del API
 Description: breve descripción del API
 Version: describe el número de versión del API
 Paths: registra los diferentes paths y operaciones de las APIs
jcopete.com
Definición básica de un API REST
jcopete.com
Especificando el formato de
respuesta
 Se utiliza el objeto “definitions” para definir los tipos de datos que
pueden ser consumidos o producidos por las operaciones.
 Para definir el tipo de datos “Error” definimos sus propiedades:
 codigo: entero en formato int32
 mensaje: cadena de caracteres
 campos: cadena de caracteres
 Para definir el tipo de datos “Producto” definimos sus propiedades:
 idProducto: cadena de caracteres
 descripcion: cadena de caracteres
 nombre: cadena de caracteres
 capacidad: cadena de caracteres
 imagen: cadena de caracteres
jcopete.com
Especificando el formato de
respuesta
jcopete.com
Definiendo los recursos del API
 Para definir los recursos del API usamos el objeto “path”,
anteriomente habíamos definido un “path” mínimo para los
productos.
 Extendemos el “path” mínimo con los siguientes atributos:
 tags: no es obligatorio, pero nos facilitará las búsquedas en el API.
 summary: un pequeño resumen de la función de esta operación.
 description: una descripción detallada de la operación.
 operationId: un nombre único, y amigable, de operación.
jcopete.com
Definiendo la respuesta del API
 Utilizamos el objeto responses de forma que queda definida la
respuesta de la operación
 responses: se compone de varios elementos (description, schema,
headers, examples), por simplicidad lo resumiremos en dos.
 description: descripción de la respuesta. (Obligatorio).
 schema: define la estructura de la respuesta. Puede ser un tipo básico, una
primitiva o un objeto definido en la sección “definitions” (visto antes).
En nuestro caso definiremos la respuesta para el recurso “productos” de forma que
utilice la definición creada anteriormente. También utilizaremos la definición de error
para devolver respuestas apropiadas en caso de fallo.
jcopete.com
Respuestas
jcopete.com
Definiendo los parámetros del API
 Utilizamos el objeto Parameters para definir los parámetros de
llamada al método; asumiremos que los parámetros se pasan en el
query-string.
 Cada uno de los parámetros se definen de la siguiente forma:
 name: nombre del parámetro (obligatorio)
 in: tipo de parámetro [ query, header, path, formData o body ]. (obligatorio).
En nuestro caso vamos a utilizar el tipo query.
 desciption: breve descripción del parámetro.
 required: determina si el parámetro es obligatorio. [ true, false ]
 En nuestro caso usaremos dos elementos más:
 type: tipo del parámetro (obligatorio si el tipo no es body).
 tormat: formato del tipo de datos definido antes.
jcopete.com
Parámetros
jcopete.com
Gracias
Joaquin copete
jcopeteg@gmail.com
jcopete.com

Más contenido relacionado

La actualidad más candente

CURSORES EN SQL SERVER
CURSORES EN SQL SERVERCURSORES EN SQL SERVER
CURSORES EN SQL SERVER
Lisbeth Ocaña Bueno
 
Greenfoot 6
Greenfoot 6Greenfoot 6
Greenfoot 6
Elian Maya
 
Functions
Functions Functions
Functions
Dr.Subha Krishna
 
Jsp element
Jsp elementJsp element
Jsp element
kamal kotecha
 
2. Manejo de la sintaxis del lenguaje
2. Manejo de la sintaxis del lenguaje2. Manejo de la sintaxis del lenguaje
2. Manejo de la sintaxis del lenguaje
Laura Folgado Galache
 
Asp.net mvc
Asp.net mvcAsp.net mvc
Asp.net mvc
Er. Kamal Bhusal
 
7. Utilización de mecanismos de comunicación asíncrona
7. Utilización de mecanismos de comunicación asíncrona7. Utilización de mecanismos de comunicación asíncrona
7. Utilización de mecanismos de comunicación asíncrona
Laura Folgado Galache
 
OOP with Java - Continued
OOP with Java - Continued OOP with Java - Continued
OOP with Java - Continued
Hitesh-Java
 
JTABLE
JTABLEJTABLE
Hibernate ORM over JDBC
Hibernate ORM over JDBCHibernate ORM over JDBC
Hibernate ORM over JDBC
Pratyush Katre
 
javaScript.ppt
javaScript.pptjavaScript.ppt
javaScript.ppt
sentayehu
 
Java programming concept
Java programming conceptJava programming concept
Java programming concept
Sanjay Gunjal
 
Lists and scrollbars
Lists and scrollbarsLists and scrollbars
Lists and scrollbarsmyrajendra
 
Java 17
Java 17Java 17
Java 17
Mutlu Okuducu
 
Greenfoot 2
Greenfoot 2Greenfoot 2
Greenfoot 2
Christian Medina
 
JavaScript guide 2020 Learn JavaScript
JavaScript guide 2020 Learn JavaScriptJavaScript guide 2020 Learn JavaScript
JavaScript guide 2020 Learn JavaScript
Laurence Svekis ✔
 
CSS Unit I - Basics of JavaScript Programming
CSS Unit I - Basics of JavaScript ProgrammingCSS Unit I - Basics of JavaScript Programming
CSS Unit I - Basics of JavaScript Programming
RahulTamkhane
 
Generics in java
Generics in javaGenerics in java
Generics in java
suraj pandey
 
Practica- Transacciones y Concurrencia en Oracle y MySQL
Practica- Transacciones y Concurrencia en Oracle y MySQLPractica- Transacciones y Concurrencia en Oracle y MySQL
Practica- Transacciones y Concurrencia en Oracle y MySQL
Ivan Luis Jimenez
 
Java generics
Java genericsJava generics
Java generics
Hosein Zare
 

La actualidad más candente (20)

CURSORES EN SQL SERVER
CURSORES EN SQL SERVERCURSORES EN SQL SERVER
CURSORES EN SQL SERVER
 
Greenfoot 6
Greenfoot 6Greenfoot 6
Greenfoot 6
 
Functions
Functions Functions
Functions
 
Jsp element
Jsp elementJsp element
Jsp element
 
2. Manejo de la sintaxis del lenguaje
2. Manejo de la sintaxis del lenguaje2. Manejo de la sintaxis del lenguaje
2. Manejo de la sintaxis del lenguaje
 
Asp.net mvc
Asp.net mvcAsp.net mvc
Asp.net mvc
 
7. Utilización de mecanismos de comunicación asíncrona
7. Utilización de mecanismos de comunicación asíncrona7. Utilización de mecanismos de comunicación asíncrona
7. Utilización de mecanismos de comunicación asíncrona
 
OOP with Java - Continued
OOP with Java - Continued OOP with Java - Continued
OOP with Java - Continued
 
JTABLE
JTABLEJTABLE
JTABLE
 
Hibernate ORM over JDBC
Hibernate ORM over JDBCHibernate ORM over JDBC
Hibernate ORM over JDBC
 
javaScript.ppt
javaScript.pptjavaScript.ppt
javaScript.ppt
 
Java programming concept
Java programming conceptJava programming concept
Java programming concept
 
Lists and scrollbars
Lists and scrollbarsLists and scrollbars
Lists and scrollbars
 
Java 17
Java 17Java 17
Java 17
 
Greenfoot 2
Greenfoot 2Greenfoot 2
Greenfoot 2
 
JavaScript guide 2020 Learn JavaScript
JavaScript guide 2020 Learn JavaScriptJavaScript guide 2020 Learn JavaScript
JavaScript guide 2020 Learn JavaScript
 
CSS Unit I - Basics of JavaScript Programming
CSS Unit I - Basics of JavaScript ProgrammingCSS Unit I - Basics of JavaScript Programming
CSS Unit I - Basics of JavaScript Programming
 
Generics in java
Generics in javaGenerics in java
Generics in java
 
Practica- Transacciones y Concurrencia en Oracle y MySQL
Practica- Transacciones y Concurrencia en Oracle y MySQLPractica- Transacciones y Concurrencia en Oracle y MySQL
Practica- Transacciones y Concurrencia en Oracle y MySQL
 
Java generics
Java genericsJava generics
Java generics
 

Similar a Definición de apis con swagger

Aprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDBAprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDB
Abimael Desales López
 
Framework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .netFramework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .netAntonio Palomares Sender
 
Neo Humano - GTUG Labs (12-12-2009)
Neo Humano - GTUG Labs (12-12-2009)Neo Humano - GTUG Labs (12-12-2009)
Neo Humano - GTUG Labs (12-12-2009)Neo Humano
 
Desarrollando un API con REST
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con REST
Alex Puig
 
Hands-on Spring 3: The next generation
Hands-on Spring 3: The next generationHands-on Spring 3: The next generation
Hands-on Spring 3: The next generationSergi Almar i Graupera
 
GWT - Una introducción
GWT - Una introducciónGWT - Una introducción
GWT - Una introducción
Carlos Gavidia-Calderon
 
Escribiendo funciones con Azure Functions
Escribiendo funciones con Azure FunctionsEscribiendo funciones con Azure Functions
Escribiendo funciones con Azure Functions
Víctor Moreno
 
Atrion script 3.0
Atrion script 3.0Atrion script 3.0
Atrion script 3.0skate311
 
POOABD (POO Aplicada a B Datos) - API JDBC - Parte 2
POOABD (POO Aplicada a B Datos) - API JDBC - Parte 2POOABD (POO Aplicada a B Datos) - API JDBC - Parte 2
POOABD (POO Aplicada a B Datos) - API JDBC - Parte 2
Laura Noussan Lettry
 
OpenAPI 3.0.2
OpenAPI 3.0.2OpenAPI 3.0.2
OpenAPI 3.0.2
Pedro J. Molina
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Phputs
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Phputs
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Phputs
 
Guia herramientas de bd
Guia herramientas de bdGuia herramientas de bd
Guia herramientas de bd
lissette_torrealba
 
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corporacion de Industrias Tecnologicas S.A.
 
Fundamentos basicos de visual basic
Fundamentos basicos de visual basicFundamentos basicos de visual basic
Fundamentos basicos de visual basic
Colegio Luis felipe Borja del Alcázar
 
Zope Page Templates
Zope Page TemplatesZope Page Templates
Zope Page Templates
CodeSyntax
 

Similar a Definición de apis con swagger (20)

Aprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDBAprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDB
 
Framework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .netFramework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .net
 
Neo Humano - GTUG Labs (12-12-2009)
Neo Humano - GTUG Labs (12-12-2009)Neo Humano - GTUG Labs (12-12-2009)
Neo Humano - GTUG Labs (12-12-2009)
 
Desarrollando un API con REST
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con REST
 
Hands-on Spring 3: The next generation
Hands-on Spring 3: The next generationHands-on Spring 3: The next generation
Hands-on Spring 3: The next generation
 
Sql td a
Sql   td aSql   td a
Sql td a
 
GWT - Una introducción
GWT - Una introducciónGWT - Una introducción
GWT - Una introducción
 
Escribiendo funciones con Azure Functions
Escribiendo funciones con Azure FunctionsEscribiendo funciones con Azure Functions
Escribiendo funciones con Azure Functions
 
Atrion script 3.0
Atrion script 3.0Atrion script 3.0
Atrion script 3.0
 
POOABD (POO Aplicada a B Datos) - API JDBC - Parte 2
POOABD (POO Aplicada a B Datos) - API JDBC - Parte 2POOABD (POO Aplicada a B Datos) - API JDBC - Parte 2
POOABD (POO Aplicada a B Datos) - API JDBC - Parte 2
 
OpenAPI 3.0.2
OpenAPI 3.0.2OpenAPI 3.0.2
OpenAPI 3.0.2
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
 
Guia herramientas de bd
Guia herramientas de bdGuia herramientas de bd
Guia herramientas de bd
 
Atrion script 3.0
Atrion script 3.0Atrion script 3.0
Atrion script 3.0
 
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
 
Fundamentos basicos de visual basic
Fundamentos basicos de visual basicFundamentos basicos de visual basic
Fundamentos basicos de visual basic
 
Zope Page Templates
Zope Page TemplatesZope Page Templates
Zope Page Templates
 
Google apps engine
Google apps engineGoogle apps engine
Google apps engine
 

Último

ayuda en egresos exposición aps 1 grupal
ayuda en egresos exposición aps 1 grupalayuda en egresos exposición aps 1 grupal
ayuda en egresos exposición aps 1 grupal
jesusmedina766305
 
Sistemas-de-Numeración-para-Primero-de-Secundaria.doc
Sistemas-de-Numeración-para-Primero-de-Secundaria.docSistemas-de-Numeración-para-Primero-de-Secundaria.doc
Sistemas-de-Numeración-para-Primero-de-Secundaria.doc
LuisEnriqueCarboneDe
 
FISICA IMPRIMIR MATERIAL ACADEMICO NIVEL SECUNDARIO
FISICA IMPRIMIR MATERIAL ACADEMICO NIVEL SECUNDARIOFISICA IMPRIMIR MATERIAL ACADEMICO NIVEL SECUNDARIO
FISICA IMPRIMIR MATERIAL ACADEMICO NIVEL SECUNDARIO
DarwinNestorArapaQui
 
fase 4-Estudio de la geometria analitica[1].pptx
fase 4-Estudio de la geometria analitica[1].pptxfase 4-Estudio de la geometria analitica[1].pptx
fase 4-Estudio de la geometria analitica[1].pptx
QuerubinOlayamedina
 
estrategias de aprendizaje con ejemplos
estrategias de aprendizaje  con ejemplosestrategias de aprendizaje  con ejemplos
estrategias de aprendizaje con ejemplos
MarilinPaladines
 
EduLearnIAappde IAparatodosdisponible.pptx
EduLearnIAappde IAparatodosdisponible.pptxEduLearnIAappde IAparatodosdisponible.pptx
EduLearnIAappde IAparatodosdisponible.pptx
Elizabeth Mejia
 
EXPERIENCIA PROYECTOS STARTUP JAVIER LASA
EXPERIENCIA PROYECTOS STARTUP JAVIER LASAEXPERIENCIA PROYECTOS STARTUP JAVIER LASA
EXPERIENCIA PROYECTOS STARTUP JAVIER LASA
Javier Lasa
 
blog.pdf de coceptos de personalidad....
blog.pdf de coceptos de personalidad....blog.pdf de coceptos de personalidad....
blog.pdf de coceptos de personalidad....
JosvilAngel
 
WordPress training basics - básicos de cómo enseñar WordPress
WordPress training basics - básicos de cómo enseñar WordPressWordPress training basics - básicos de cómo enseñar WordPress
WordPress training basics - básicos de cómo enseñar WordPress
Fernando Tellado
 
Presentación Arduino, proyecto colectivo
Presentación Arduino, proyecto colectivoPresentación Arduino, proyecto colectivo
Presentación Arduino, proyecto colectivo
juanlemus11122
 
Los derechos de autor y Ética Profesional
Los derechos de autor y Ética ProfesionalLos derechos de autor y Ética Profesional
Los derechos de autor y Ética Profesional
bgonzalezm20
 
Estructuras b-sicas_ conceptos b-sicos de programaci-n.pdf
Estructuras b-sicas_  conceptos b-sicos de programaci-n.pdfEstructuras b-sicas_  conceptos b-sicos de programaci-n.pdf
Estructuras b-sicas_ conceptos b-sicos de programaci-n.pdf
edepjuanorozco
 
Clases de Informática primaria para niños de colegios católicos
Clases de Informática primaria para niños de colegios católicosClases de Informática primaria para niños de colegios católicos
Clases de Informática primaria para niños de colegios católicos
mcavero2019
 

Último (13)

ayuda en egresos exposición aps 1 grupal
ayuda en egresos exposición aps 1 grupalayuda en egresos exposición aps 1 grupal
ayuda en egresos exposición aps 1 grupal
 
Sistemas-de-Numeración-para-Primero-de-Secundaria.doc
Sistemas-de-Numeración-para-Primero-de-Secundaria.docSistemas-de-Numeración-para-Primero-de-Secundaria.doc
Sistemas-de-Numeración-para-Primero-de-Secundaria.doc
 
FISICA IMPRIMIR MATERIAL ACADEMICO NIVEL SECUNDARIO
FISICA IMPRIMIR MATERIAL ACADEMICO NIVEL SECUNDARIOFISICA IMPRIMIR MATERIAL ACADEMICO NIVEL SECUNDARIO
FISICA IMPRIMIR MATERIAL ACADEMICO NIVEL SECUNDARIO
 
fase 4-Estudio de la geometria analitica[1].pptx
fase 4-Estudio de la geometria analitica[1].pptxfase 4-Estudio de la geometria analitica[1].pptx
fase 4-Estudio de la geometria analitica[1].pptx
 
estrategias de aprendizaje con ejemplos
estrategias de aprendizaje  con ejemplosestrategias de aprendizaje  con ejemplos
estrategias de aprendizaje con ejemplos
 
EduLearnIAappde IAparatodosdisponible.pptx
EduLearnIAappde IAparatodosdisponible.pptxEduLearnIAappde IAparatodosdisponible.pptx
EduLearnIAappde IAparatodosdisponible.pptx
 
EXPERIENCIA PROYECTOS STARTUP JAVIER LASA
EXPERIENCIA PROYECTOS STARTUP JAVIER LASAEXPERIENCIA PROYECTOS STARTUP JAVIER LASA
EXPERIENCIA PROYECTOS STARTUP JAVIER LASA
 
blog.pdf de coceptos de personalidad....
blog.pdf de coceptos de personalidad....blog.pdf de coceptos de personalidad....
blog.pdf de coceptos de personalidad....
 
WordPress training basics - básicos de cómo enseñar WordPress
WordPress training basics - básicos de cómo enseñar WordPressWordPress training basics - básicos de cómo enseñar WordPress
WordPress training basics - básicos de cómo enseñar WordPress
 
Presentación Arduino, proyecto colectivo
Presentación Arduino, proyecto colectivoPresentación Arduino, proyecto colectivo
Presentación Arduino, proyecto colectivo
 
Los derechos de autor y Ética Profesional
Los derechos de autor y Ética ProfesionalLos derechos de autor y Ética Profesional
Los derechos de autor y Ética Profesional
 
Estructuras b-sicas_ conceptos b-sicos de programaci-n.pdf
Estructuras b-sicas_  conceptos b-sicos de programaci-n.pdfEstructuras b-sicas_  conceptos b-sicos de programaci-n.pdf
Estructuras b-sicas_ conceptos b-sicos de programaci-n.pdf
 
Clases de Informática primaria para niños de colegios católicos
Clases de Informática primaria para niños de colegios católicosClases de Informática primaria para niños de colegios católicos
Clases de Informática primaria para niños de colegios católicos
 

Definición de apis con swagger

  • 1. Definición de APIs con Swagger JOAQUIN COPETE JCOPETEG@GMAIL.COM
  • 2. ¿Qué es Swagger?  Lenguaje de definición agnóstico del lenguaje para APIs REST  Comprensible tanto para personas como máquinas  Que permita descubrir y entender las capacidades de un servicio sin necesidad de acceder a código fuente, documentación,…  Además Swagger proporciona un gran ecosistema de herramientas:  Interfaces de usuario  Librerías de código  Editor del lenguaje jcopete.com
  • 3. Definición básica de un API REST  Los elementos mínimos que un API REST debe contemplar en formato swagger son:  Swagger: indica la versión, en adelante usaremos la más reciente actualmente, la 2.0  Info: indica información de metadatos de las APIs  Title: Título del API  Description: breve descripción del API  Version: describe el número de versión del API  Paths: registra los diferentes paths y operaciones de las APIs jcopete.com
  • 4. Definición básica de un API REST jcopete.com
  • 5. Especificando el formato de respuesta  Se utiliza el objeto “definitions” para definir los tipos de datos que pueden ser consumidos o producidos por las operaciones.  Para definir el tipo de datos “Error” definimos sus propiedades:  codigo: entero en formato int32  mensaje: cadena de caracteres  campos: cadena de caracteres  Para definir el tipo de datos “Producto” definimos sus propiedades:  idProducto: cadena de caracteres  descripcion: cadena de caracteres  nombre: cadena de caracteres  capacidad: cadena de caracteres  imagen: cadena de caracteres jcopete.com
  • 6. Especificando el formato de respuesta jcopete.com
  • 7. Definiendo los recursos del API  Para definir los recursos del API usamos el objeto “path”, anteriomente habíamos definido un “path” mínimo para los productos.  Extendemos el “path” mínimo con los siguientes atributos:  tags: no es obligatorio, pero nos facilitará las búsquedas en el API.  summary: un pequeño resumen de la función de esta operación.  description: una descripción detallada de la operación.  operationId: un nombre único, y amigable, de operación. jcopete.com
  • 8. Definiendo la respuesta del API  Utilizamos el objeto responses de forma que queda definida la respuesta de la operación  responses: se compone de varios elementos (description, schema, headers, examples), por simplicidad lo resumiremos en dos.  description: descripción de la respuesta. (Obligatorio).  schema: define la estructura de la respuesta. Puede ser un tipo básico, una primitiva o un objeto definido en la sección “definitions” (visto antes). En nuestro caso definiremos la respuesta para el recurso “productos” de forma que utilice la definición creada anteriormente. También utilizaremos la definición de error para devolver respuestas apropiadas en caso de fallo. jcopete.com
  • 10. Definiendo los parámetros del API  Utilizamos el objeto Parameters para definir los parámetros de llamada al método; asumiremos que los parámetros se pasan en el query-string.  Cada uno de los parámetros se definen de la siguiente forma:  name: nombre del parámetro (obligatorio)  in: tipo de parámetro [ query, header, path, formData o body ]. (obligatorio). En nuestro caso vamos a utilizar el tipo query.  desciption: breve descripción del parámetro.  required: determina si el parámetro es obligatorio. [ true, false ]  En nuestro caso usaremos dos elementos más:  type: tipo del parámetro (obligatorio si el tipo no es body).  tormat: formato del tipo de datos definido antes. jcopete.com