SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Desarrollo de servicios Web REST
dirigido por modelos
José Ramón Hilera González
Universidad de Alcalá, España
Noviembre, 2017
(Presentación y ejemplos disponibles en https://github.com/josehilera/rest)
1. Concepto de servicio web o API REST/RESTful
2. Niveles en el desarrollo dirigido por modelos de servicios REST aplicando MDA
3. Nivel CIM (Computer-Independent Model)
• Diagrama de casos de uso
4. Nivel PIM (Platform-Independent Model)
4.1 Modelo basado en un perfil UML
• Creación del un perfil UML para servicios REST
• Aplicación del perfil UML en el diseño de un servicio REST
4.2 Modelo basado en un lenguaje específico para describir API REST
• Editores online
• Modelo con formato OpenAPI
• Modelo con formato RAML
5. Nivel PSM (Platform-Specific Model)
• Modelo basado en un perfil UML para una plataforma Java (JAX-RS)
6. Nivel de código fuente
• Generación automática de código para servidor Web
• Generación automática de código para aplicación cliente consumidora del servicio
7. Lecturas recomendadas 2
Contenido
Un servicio es una funcionalidad ofrecida por un servidor web, en base al protocolo HTTP
(NOTA: Se considerarán los siguientes sinónimos: servicio=API, REST=RESTful, operación=método,
recurso=endpoint)
• Un servicio REST tiene una ruta/path base (host y aplicación web a la que pertenece)
• Ej. http://universidad.org/agenda/v1
• Se compone de recursos y sub-recursos, cada uno con una ruta (path)
• Ej. http://universidad.org/agenda/v1/Profesores/
• Ofrece a sus consumidores métodos asociados a los recursos (GET, POST, PUT, DELETE,..)
• Los métodos tienen datos de entrada (en la propia ruta o en el cuerpo del mensaje HTTP)
• Ej. http://universidad.org/agenda/v1/Profesores/234
• Los métodos generan resultados con diferentes formatos (JSON, XML).
• Ej. JSON: {“idProfesor": 234, “nombre”: “Juan Pérez García”, “departamento”: “Ciencias”}
3
1. Concepto de servicio Web o API REST/RESTful
1. A trailing forward slash (/) should not be included at the end of URIs
2. Forward slash separator (/) must be used to indicate a hierarchical
relationship
3. Hyphens (-) should be used to improve the readability of URIs
4. Underscores (_) should not be used in URIs
5. Lowercase letters should be preferred in URI paths
6. File extensions should not be included in URIs
7. Should the endpoint name be singular or plural?
Fuente: http://blog.restcase.com/7-rules-for-rest-api-uri-design/
4
1. Concepto de servicio Web o API REST/RESTful
(7 Rules for REST API URI Design)
5
2. Niveles en el desarrollo dirigido por modelos de
servicios REST aplicando MDA
Código
Código fuente del servicio para el servidor Web (Java, PHP, ..)
+ Código fuente del cliente consumidor del servicio (aplicación de escritorio, consola, app móvil, aplicación/página web)
PSM (Platform-Specific Model)
Modelo según perfil UML específico
(Ej. IBM JAX-RS profile)
---
PIM (Platform-Indepent Model)
Modelo basado en un perfil UML REST genérico
(Ej. IBM REST profile)
Modelo en formato estándar de texto para especificar API REST
(Ej. OpenAPI o RAML)
CIM (Computer-Indepent Model)
Diagrama de Casos de Uso
6
3. Nivel CIM (Computer-Independent Model)
Diagrama de Casos de Uso
uc CIM
Profesores Tutorías
Usuario del servicio
Obtener listado de los
profesores
Crear un nuevo profesor
Encontrar un profesor por
su número de identificación
Borrar un profesor a partir de
su identificador
Encontrar una tutoría
según su identificador
Crear una tutoría para un
profesor
Obtener todas las tutorías
programadas en la agenda
para un profesor o en una
fecha determinada
Borrar una tutoría de un
profesor
1. Crear o conseguir un perfil UML para REST
• Ejemplo. REST Profile propuesto por IBM:
https://www.ibm.com/support/knowledgecenter/SS8PJ7_9.6.1/com.ibm.xtoo
ls.rest.doc/topics/r_rest_profile.html
2. Exportar el perfil en formato XMI
3. Importar el perfil en una herramienta UML
4. Realizar modelos del servicios REST usando el perfil
7
4. Nivel PIM (Platform-Independent Model)
4.1 Modelo basado en perfil UML (pasos)
8
4.1 Modelo basado en perfil UML
Ejemplo de perfil (Estereotipos)
Estereotipo Elemento UML base Atributos (Tagged values)
<<Resource>> Class produces, consumes
<<VirtualResource>> Class
<<Application>> Class
<<GET>> Operation produces, consumes
<<PUT>> Operation produces, consumes
<<POST>> Operation produces, consumes
<<DELETE>> Operation produces, consumes
<<HEAD>> Operation produces, consumes
<<Param>> Parameter paramType, paramName, defaultValue
NOTA: Valores posibles de paramType: query, header,
path, cookie, body.
<<Path>> Dependency relationship
9
4.1 Modelo basado en perfil UML
Ejemplo de perfil (Metamodelo)
class REST profile
«metaclass»
Class
Resource
- produces: string
- consumes: string
Application
GET
- produces: string
- consumes: string
PUT
- produces: string
- consumes: string
POST
- produces: string
- consumes: string
DELETE
- produces: string
- consumes: string
HEAD
- produces: string
- consumes: string
«metaclass»
Operation
«metaclass»
Dependency
Path
«metaclass»
Parameter
Param
- paramType: ParamType
- paramName: string
- defaultValue: string
VirtualResource
«enumeration»
ParamType
query
header
path
cookie
body
10
4.1 Modelo basado en perfil UML
Ejemplo de modelo de un servicio usando el perfil
class PIM
«Application»
Agenda
«Resource»
Profesores
«POST»
+ crearProfesor(Profesor)
«GET»
+ obtenerProfesores(): Profesor[]
«VirtualResource»
Profesor
«GET»
+ buscarProfesor(int): Profesor
«POST»
+ borrarProfesor(int)
«Resource»
Tutorias
«POST»
+ crearTutoria(Tutoria)
«GET»
+ obtenerTutorias(string): Tutoria[]
«VirtualResource»
Tutoria
«DELETE»
+ borrarTutoria(string)
«GET»
+ buscarTutoria(string): Tutoria
Profesor
- idProfesor: string
- nombre: string
- departamento: string
Tutoria
- idTutoria: string
- fecha: string
- hora: string
- lugar: string
/tutorias
«Path»
/profesores
«Path»
1 0..*
/{idProfesor}
«Path»
/{idTutoria}
«Path»
11
4.1 Modelo basado en perfil UML
Ejemplo de modelo (parámetro de tipo“path”)
Ejemplo URI para buscar un profesor con id=234: http://universidad.org/agenda/v1/profesores/234
12
4.1 Modelo basado en perfil UML
Ejemplo de modelo (parámetro de tipo“query”)
Ejemplo URI para obtener tutorías: http://universidad.org/agenda/v1/profesores/234/tutorías?fecha=“20/03/2018”
Se han propuesto varios lenguajes:
• OpenAPI Specification (OAS): https://www.openapis.org
• Patrocinado por: Linux Foundation, Google, Atlassian, ebay, IBM, Microsoft,
SAP, PayPal, salesforce, Adobe, MuleSoft, …
• Anteriormente denominada “Swagger”
• Versión 2.0 aprobada en 2014. Borrador de versión 3.0 publicado en 2017
• RAML (RESTful API Modeling Language): https://raml.org
• Patrocinado por: Cisco, vmware, Spotify, …
• API Blueprint: https://apiblueprint.org
13
4. Nivel PIM (Platform-Independent Model)
4.2 Modelo basado en un lenguaje específico para describir API REST
• Swagger Editor (https://editor.swagger.io) y SwaggerHub (https://app.swaggerhub.com)
(Permiten editar descripciones OpenAPI 2.0 y 3.0 utilizando notación JSON o YAML)
14
4.2 Modelo basado en leguaje de descripción de API
Editores online: Swagger
• AMF Playground (https://mulesoft-labs.github.io/amf-playground/)
(Permite editar descripciones OpenAPI 2.0 y RAML, sólo utilizando notación JSON)
15
4.2 Modelo basado en leguaje de descripción de API
Editores online: AMF
Es un lenguaje que utiliza la notación JSON
o YAML para describir servicios/API REST,
con las siguientes secciones básicas:
• info
• host, basePath, tags, schemes
• paths
• Operaciones por path: get, put, delete, post
• Campos por operacion: operationId, consumes,
produces, parameters, responses
• definitions
16
4.2 Modelo basado en leguaje de descripción de API
Modelado con OpenAPI Specification 2.0
swagger: ‘2.0‘
info:
title: Servicio de gestión de Agenda de una Universidad
version: 1.0.0
description: Se ofrecen métodos para la gestión de citas para
tutorías con los profesores de la universidad
host: universidad.org
basePath: /agenda/v1
tags:
- name: Profesores
description: Operaciones sobre profesores
- name: Tutorias
description: Operaciones sobre las
tutorías de los profesores
schemes:
- http
17
4.2 Modelo basado en leguaje de descripción de API
Ejemplo de modelo OpenAPI 2.0 (1/5)
Secciones: info, host, basePath, tags, schemes
Versión visual del modelo
que ofrece “Swagger Editor”:
definitions:
Profesor:
type: object
required:
- idProfesor
properties:
idProfesor:
type: string
description: Identifcador único de un profesor
example: 234
nombre:
type: string
description: Nombre y apellidos del profesor
example: Juan Pérez García
departamento:
type: string
description: Nombre del departamento del profesor
example: Ciencias de la Computación
xml:
name: profesor
18
4.2 Modelo basado en leguaje de descripción de API
Ejemplo de modelo OpenAPI 2.0 (2/5)
Sección: definitions
Versión visual del modelo
que ofrece “Swagger Editor”:
paths:
/profesores:
post:
tags:
- Profesores
summary: Crear un nuevo profesor
description: '‘
operationId: crearProfesor
consumes:
- application/json
- application/xml
parameters:
- in: body
name: body
description: Datos del profesor a crear
required: true
schema:
$ref: '#/definitions/Profesor‘
responses:
'200':
description: Operación realizada correctamente
'405':
description: Datos de entrada incorrectos
19
4.2 Modelo basado en leguaje de descripción de API
Ejemplo de modelo OpenAPI 2.0 (3/5)
Sección: paths (ejemplo “profesores” y operación POST)
Versión visual del modelo
que ofrece “Swagger Editor”:
/profesores/{idProfesor}':
parameters:
- name: idProfesor
in: path
description: Identificador de un profesor
required: true
type: number
format: int32
delete:
tags:
- Profesores
summary: Borrar un profesor a partir de su identif.
description: '‘
operationId: borrarProfesor
responses:
'400':
description: Identificador de profesor no válido
'404':
description: Profesor no encontrado
20
4.2 Modelo basado en leguaje de descripción de API
Ejemplo de modelo OpenAPI 2.0 (4/5)
Sección: paths (ejemplo operación DELETE con parámetro path)
Versión visual del modelo
que ofrece “Swagger Editor”:
/profesores/{idProfesor}/tutorias':
. . .
get:
tags:
- Tutorias
summary: Obtener todas las tutorías programadas en la agenda para un
profesor o en una fecha determinada
description: Si no se proporciona una fecha, se obtienen todas las
tutorías del profesor en la agenda
operationId: obtenerTutorias
produces:
- application/json
- application/xml
parameters:
- name: fecha
in: query
description: Fecha para la que se quiere obtener la lista de tutorías.
required: false
type: string
responses:
'200':
description: Operación realizada con éxito
schema:
type: array
items:
$ref: '#/definitions/Tutoria'
21
4.2 Modelo basado en leguaje de descripción de API
Ejemplo de modelo OpenAPI 2.0 (5/5)
Sección: paths (ejemplo operación GET con parámetro query)
Versión visual del modelo
que ofrece “Swagger Editor”:
#%RAML 1.0
title: Servicio de gestión de Agenda de una Universidad
description: Se ofrecen métodos para la gestión de citas para
tutorías con los profesores de la universidad
version: 1.0.0
baseUri: universidad.org/agenda/v1
types:
Profesor:
properties:
. . .
protocols: http
/profesores:
post:
description: ‘’
body:
type: Profesor
displayName: crearProfesor
responses:
'200':
description: Operación realizada correctamente
'405':
description: Datos de entrada incorrecto ...
22
4.2 Modelo basado en leguaje de descripción de API
Ejemplo de modelo RAML
Conversión automática OpenAPI  RAML con el editor AMF
Versión visual del modelo
que ofrece “AMF”:
23
5. Nivel PSM (Platform-Specific Model)
Ejemplo de perfil UML para Java (JAX-RS).
Propuesto por IBM: https://www.ibm.com/support/knowledgecenter/SS8PJ7_9.6.1/com.ibm.xtools.rest.doc/topics/r_jaxrs_profile.html
Estereotipo Elemento UML Atributos (Tagged values) Anotaciones correspondientes en el código Java
<<Resource>> Class Produces, consumes @Produces("string_value"), @Consumes("string_value")
<<Application>> Class
<<GET>> Operation produces, consumes @GET
<<PUT>> Operation produces, consumes @PUT
<<POST>> Operation produces, consumes @POST
<<DELETE>> Operation produces, consumes @DELETE
<<HEAD>> Operation produces, consumes @HEAD
<<Param>> Parameter PathParam, QueryParam, FormParam, MatrixParam,
CookieParam, HeaderParam, DefaultValue
@PathParam, @QueryParam, @FormParam, @MatrixParam,
@CookieParam, @HeaderParam, @DefaultValue
<<Path>> Dependency
relationship
@Path("string_value")
<<Provider>> @Provider
<<Providers>> Class @Providers
<<Context>> Parameter, field,
operation
@Context
<<SubResourceLocator>> Operation
• Algunos editores de ofrecen utilidades de generación automática de parte del
código fuente a partir de un modelo de un servicio REST
• Permiten la generación de código para implementar el servicio en un servidor
• Permiten la generación del código que debería utilizar una aplicación cliente que utilice o
consuma el servicio
• Generación a partir de modelos basados en perfiles UML:
• Usando herramientas que incluyan un generador de código REST predefinido: IBM Rational
Software Architect
• Usando herramientas que soportan perfiles UML y permiten al desarrollador crear
generadores de código a medida: Enterprise Architect, Eclipse, ..
• Generación a partir de modelos basados en lenguajes de descripción de servicios
• Para OpenAPI: Herramientas como Swagger Editor, SwaggerHub, AMF
• Para RAML: Herramientas como AMF
24
6. Nivel de código fuente
• En el menú “Generate Server” se puede elegir un gran número de
tecnologías de servidor y generar el código fuente para ellas
25
6. Nivel de código fuente
Generación de código de servidor con Swagger
• En el menú “Generate Server” se puede elegir un gran número de
tecnologías de cliente y generar el código fuente para ellas
26
6. Nivel de código fuente
Generación de código de cliente con Swagger
• Stowe, M. (2015). Undisturbed REST: A Guide to Designing the Perfect API.
https://www.mulesoft.com/sites/default/files/resource-assets/ebook-
UndisturbedREST_v1.pdf
• Es un libro sobre diseño, no sobre programación
• Indice:
1. What is an API
2. Planning Your API
3. Designing the Spec
4. Using RAML
5. Prototyping and Agile Testing
6. Authorization and Authentication
7. Designing Your Resources
8. Designing Your Methods
9. Handling Responses
10. Adding Hypermedia
11. Managing with a Proxy
12. Documenting and Sharing Your API
27
7. Lecturas recomendadas
Diseño de servicios Web REST
• IBM (2017). Creating and modeling web services according to the REST architectural style.
https://www.ibm.com/support/knowledgecenter/SS8PJ7_9.6.1/com.ibm.xtools.rest.doc/topics/t
_trans_overview.html
• Katoch (2011). Design and implement RESTful web services with Rational Software Architect.
https://www.ibm.com/developerworks/rational/library/design-implement-restful-web-services/
• Thunman, O. (2014). Modelling a REST API with UML and keeping it agile.
http://callistaenterprise.se/blogg/teknik/2014/08/05/modelling-a-rest-api-with-uml-and-
keeping-it-agile/
• StackOverflow (2016). Create spec for REST API in Enterprise Architect.
https://stackoverflow.com/questions/38097840/create-spec-for-rest-api-in-enterprise-architect
• Github (2017). An add in to Sparx Enterprise Architect that allows for modeling and exporting
REST APIs as RAML and JSON Schema. https://github.com/bayeslife/api-add-in
• Visual Paradigm (2017). Modeling REST API.
https://www.visual-
paradigm.com/support/documents/vpuserguide/276/3420/85154_modelingrest.html
28
7. Lecturas recomendadas
Modelado de servicios REST con UML
• OAI (2017). The OpenAPI Specification. https://github.com/OAI/OpenAPI-Specification
• Lauret, A. (2016). Writing OpenAPI (Swagger) Specification Tutorial.
https://apihandyman.io/writing-openapi-swagger-specification-tutorial-part-1-
introduction/
• SmartBear (2017). Video: How to Design and Document APIs with the Latest OpenAPI
Specification 3.0. https://youtu.be/6kwmW_p_Tig
• Gardiner, M. (2017). Video: API Design and What's new with Open API? (Google Cloud
Next '17). https://youtu.be/4lBMQteMd6Y
• Lane, K. (2017). OpenAPI Toolbox. http://openapi.toolbox.apievangelist.com/
• Swagger (2017). Commercial Tools. https://swagger.io/commercial-tools/
• Ed-douibi, H., Cánovas, J.L., Cabot, J. (2017). Example-driven Web API Specification
Discovery.
https://modeling-languages.com/wp-content/uploads/2017/05/ecmfa2017.pdf
29
7. Lecturas recomendadas
Modelado de servicios REST con OpenAPI
Desarrollo de servicios Web REST
dirigido por modelos
José Ramón Hilera González
Universidad de Alcalá, España
Noviembre, 2017
(Presentación y ejemplos disponibles en https://github.com/josehilera/rest)

Weitere ähnliche Inhalte

Was ist angesagt?

Diagrama de actividades inscripcion, evaluacion, Asistencia
Diagrama de actividades inscripcion, evaluacion, AsistenciaDiagrama de actividades inscripcion, evaluacion, Asistencia
Diagrama de actividades inscripcion, evaluacion, AsistenciaRobert Rodriguez
 
Historia delas bases de datos orientada a objetos.
Historia delas bases de datos orientada a objetos.Historia delas bases de datos orientada a objetos.
Historia delas bases de datos orientada a objetos.Noel Ruiz Gimenez
 
Ejemplos de proyectos al modelo en cascada
Ejemplos de proyectos  al modelo en cascadaEjemplos de proyectos  al modelo en cascada
Ejemplos de proyectos al modelo en cascadaaics-1986-13-saraguro
 
Ventajas y desventajas de las bdoo
Ventajas y desventajas de las bdooVentajas y desventajas de las bdoo
Ventajas y desventajas de las bdooNerhys Palacios
 
Desarrollo de Software Orienta a Objetos
Desarrollo de Software Orienta a ObjetosDesarrollo de Software Orienta a Objetos
Desarrollo de Software Orienta a ObjetosDat@center S.A
 
Curso Uml 2.3 Diagramas De InteraccióN
Curso Uml   2.3 Diagramas De InteraccióNCurso Uml   2.3 Diagramas De InteraccióN
Curso Uml 2.3 Diagramas De InteraccióNEmilio Aviles Avila
 
METODOLOGÍA UWE (UML-BASED WEB ENGINEERING)
METODOLOGÍA UWE (UML-BASED WEB ENGINEERING) METODOLOGÍA UWE (UML-BASED WEB ENGINEERING)
METODOLOGÍA UWE (UML-BASED WEB ENGINEERING) Germán Sánchez
 
2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de uso2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de usoSaul Mamani
 
Framework Laravel
Framework LaravelFramework Laravel
Framework LaravelRafael Lobo
 

Was ist angesagt? (20)

Diagrama de actividades inscripcion, evaluacion, Asistencia
Diagrama de actividades inscripcion, evaluacion, AsistenciaDiagrama de actividades inscripcion, evaluacion, Asistencia
Diagrama de actividades inscripcion, evaluacion, Asistencia
 
Diagramas De Caso De Uso
Diagramas De Caso De UsoDiagramas De Caso De Uso
Diagramas De Caso De Uso
 
Historia delas bases de datos orientada a objetos.
Historia delas bases de datos orientada a objetos.Historia delas bases de datos orientada a objetos.
Historia delas bases de datos orientada a objetos.
 
Ejemplos de proyectos al modelo en cascada
Ejemplos de proyectos  al modelo en cascadaEjemplos de proyectos  al modelo en cascada
Ejemplos de proyectos al modelo en cascada
 
Metodologia para el proyecto
Metodologia para el proyectoMetodologia para el proyecto
Metodologia para el proyecto
 
Modelodecasosdeuso planillas
Modelodecasosdeuso planillasModelodecasosdeuso planillas
Modelodecasosdeuso planillas
 
UML
UMLUML
UML
 
Rational rose
Rational roseRational rose
Rational rose
 
Ventajas y desventajas de las bdoo
Ventajas y desventajas de las bdooVentajas y desventajas de las bdoo
Ventajas y desventajas de las bdoo
 
Diagrama de objeto
Diagrama de objetoDiagrama de objeto
Diagrama de objeto
 
Desarrollo de Software Orienta a Objetos
Desarrollo de Software Orienta a ObjetosDesarrollo de Software Orienta a Objetos
Desarrollo de Software Orienta a Objetos
 
ARQUITECTURA EN CAPAS.pdf
ARQUITECTURA EN CAPAS.pdfARQUITECTURA EN CAPAS.pdf
ARQUITECTURA EN CAPAS.pdf
 
Presentacion de Microsoft SQL Server.
Presentacion de Microsoft SQL Server. Presentacion de Microsoft SQL Server.
Presentacion de Microsoft SQL Server.
 
Diseño orientado a objeto
Diseño orientado a objetoDiseño orientado a objeto
Diseño orientado a objeto
 
Curso Uml 2.3 Diagramas De InteraccióN
Curso Uml   2.3 Diagramas De InteraccióNCurso Uml   2.3 Diagramas De InteraccióN
Curso Uml 2.3 Diagramas De InteraccióN
 
METODOLOGÍA UWE (UML-BASED WEB ENGINEERING)
METODOLOGÍA UWE (UML-BASED WEB ENGINEERING) METODOLOGÍA UWE (UML-BASED WEB ENGINEERING)
METODOLOGÍA UWE (UML-BASED WEB ENGINEERING)
 
Modelo Entidad Relación
Modelo Entidad RelaciónModelo Entidad Relación
Modelo Entidad Relación
 
2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de uso2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de uso
 
Framework Laravel
Framework LaravelFramework Laravel
Framework Laravel
 
Características de MySQL
Características de MySQLCaracterísticas de MySQL
Características de MySQL
 

Ähnlich wie Desarrollo de servicios REST dirigido por modelos

Web framework ligeros y micros en java barcamp 2014
Web framework ligeros y micros en java   barcamp 2014Web framework ligeros y micros en java   barcamp 2014
Web framework ligeros y micros en java barcamp 2014Carlos Camacho
 
Desarrollo de Apps Web en Ruby on Rails
Desarrollo de Apps Web en Ruby on RailsDesarrollo de Apps Web en Ruby on Rails
Desarrollo de Apps Web en Ruby on RailsFreelancer
 
Agrega - SPDECE 2007
Agrega - SPDECE 2007Agrega - SPDECE 2007
Agrega - SPDECE 2007red.es
 
Django - Plataforma de sitios web
Django - Plataforma de sitios webDjango - Plataforma de sitios web
Django - Plataforma de sitios webjcarazo
 
Como crear aplicaciones basadas en linked data usando lods pea kr
Como crear aplicaciones basadas en linked data usando lods pea krComo crear aplicaciones basadas en linked data usando lods pea kr
Como crear aplicaciones basadas en linked data usando lods pea krAlvaro Graves
 
WORKSHOP I: Introducción a API REST
WORKSHOP I: Introducción a API RESTWORKSHOP I: Introducción a API REST
WORKSHOP I: Introducción a API RESTBEEVA_es
 
Desarrollando un API con REST
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con RESTAlex Puig
 
Curso Php y Mysql desde cero de Developero
Curso Php y Mysql desde cero de DeveloperoCurso Php y Mysql desde cero de Developero
Curso Php y Mysql desde cero de Developero⚛️ Juan Correa
 
Curs 2.8. Utilización Automatizada de Datos Publicos (1)
Curs 2.8. Utilización Automatizada de Datos Publicos (1)Curs 2.8. Utilización Automatizada de Datos Publicos (1)
Curs 2.8. Utilización Automatizada de Datos Publicos (1)Iniciativa Barcelona Open Data
 
SHA CEPES un sistema hipermedia adaptativo basado en estilos de aprendizaje
SHA CEPES un sistema hipermedia adaptativo basado en estilos de aprendizajeSHA CEPES un sistema hipermedia adaptativo basado en estilos de aprendizaje
SHA CEPES un sistema hipermedia adaptativo basado en estilos de aprendizajeFriends and Job
 

Ähnlich wie Desarrollo de servicios REST dirigido por modelos (20)

Tecnologias Web Semantica
Tecnologias Web SemanticaTecnologias Web Semantica
Tecnologias Web Semantica
 
Web framework ligeros y micros en java barcamp 2014
Web framework ligeros y micros en java   barcamp 2014Web framework ligeros y micros en java   barcamp 2014
Web framework ligeros y micros en java barcamp 2014
 
Desarrollo de Apps Web en Ruby on Rails
Desarrollo de Apps Web en Ruby on RailsDesarrollo de Apps Web en Ruby on Rails
Desarrollo de Apps Web en Ruby on Rails
 
RAML
RAMLRAML
RAML
 
Google apps engine
Google apps engineGoogle apps engine
Google apps engine
 
Agrega - SPDECE 2007
Agrega - SPDECE 2007Agrega - SPDECE 2007
Agrega - SPDECE 2007
 
SPDECE 07 - Agrega
SPDECE  07 - Agrega  SPDECE  07 - Agrega
SPDECE 07 - Agrega
 
El lenguaje html
El lenguaje htmlEl lenguaje html
El lenguaje html
 
Introducción a Kohana Framework
Introducción a Kohana FrameworkIntroducción a Kohana Framework
Introducción a Kohana Framework
 
Django - Plataforma de sitios web
Django - Plataforma de sitios webDjango - Plataforma de sitios web
Django - Plataforma de sitios web
 
Como crear aplicaciones basadas en linked data usando lods pea kr
Como crear aplicaciones basadas en linked data usando lods pea krComo crear aplicaciones basadas en linked data usando lods pea kr
Como crear aplicaciones basadas en linked data usando lods pea kr
 
Manual del desarrollador
Manual del desarrolladorManual del desarrollador
Manual del desarrollador
 
WORKSHOP I: Introducción a API REST
WORKSHOP I: Introducción a API RESTWORKSHOP I: Introducción a API REST
WORKSHOP I: Introducción a API REST
 
Desarrollando un API con REST
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con REST
 
Curso Php y Mysql desde cero de Developero
Curso Php y Mysql desde cero de DeveloperoCurso Php y Mysql desde cero de Developero
Curso Php y Mysql desde cero de Developero
 
Diapositiva
DiapositivaDiapositiva
Diapositiva
 
cliente servidor
cliente servidorcliente servidor
cliente servidor
 
Curs 2.8. Utilización Automatizada de Datos Publicos (1)
Curs 2.8. Utilización Automatizada de Datos Publicos (1)Curs 2.8. Utilización Automatizada de Datos Publicos (1)
Curs 2.8. Utilización Automatizada de Datos Publicos (1)
 
HMSSC
HMSSCHMSSC
HMSSC
 
SHA CEPES un sistema hipermedia adaptativo basado en estilos de aprendizaje
SHA CEPES un sistema hipermedia adaptativo basado en estilos de aprendizajeSHA CEPES un sistema hipermedia adaptativo basado en estilos de aprendizaje
SHA CEPES un sistema hipermedia adaptativo basado en estilos de aprendizaje
 

Mehr von Jose R. Hilera

Tema 3. Herramientas para laInteligencia Tecnológica
Tema 3. Herramientas para laInteligencia TecnológicaTema 3. Herramientas para laInteligencia Tecnológica
Tema 3. Herramientas para laInteligencia TecnológicaJose R. Hilera
 
Tema 2. Sistema de Inteligencia Tecnológica: Norma UNE 166006:2018
Tema 2. Sistema de Inteligencia Tecnológica: Norma UNE 166006:2018Tema 2. Sistema de Inteligencia Tecnológica: Norma UNE 166006:2018
Tema 2. Sistema de Inteligencia Tecnológica: Norma UNE 166006:2018Jose R. Hilera
 
Tema 1. Conceptos básicos sobre Inteligencia Tecnológica
Tema 1. Conceptos básicos sobre Inteligencia TecnológicaTema 1. Conceptos básicos sobre Inteligencia Tecnológica
Tema 1. Conceptos básicos sobre Inteligencia TecnológicaJose R. Hilera
 
Tema 4. Aprendizaje a lo largo de la vida
Tema 4. Aprendizaje a lo largo de la vidaTema 4. Aprendizaje a lo largo de la vida
Tema 4. Aprendizaje a lo largo de la vidaJose R. Hilera
 
Tema 5. Evaluación y comparación de tecnologías
Tema 5. Evaluación y comparación de tecnologíasTema 5. Evaluación y comparación de tecnologías
Tema 5. Evaluación y comparación de tecnologíasJose R. Hilera
 
Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)Jose R. Hilera
 
Evaluación de la accesibilidad de aplicaciones para dispositivos móviles apli...
Evaluación de la accesibilidad de aplicaciones para dispositivos móviles apli...Evaluación de la accesibilidad de aplicaciones para dispositivos móviles apli...
Evaluación de la accesibilidad de aplicaciones para dispositivos móviles apli...Jose R. Hilera
 
Aspectos generales sobre accesibilidad de aplicaciones móviles (apps)
Aspectos generales sobre accesibilidad de aplicaciones móviles (apps)Aspectos generales sobre accesibilidad de aplicaciones móviles (apps)
Aspectos generales sobre accesibilidad de aplicaciones móviles (apps)Jose R. Hilera
 
Accesibilidad de aplicaciones para dispositivos móviles aplicando el RD 1112/...
Accesibilidad de aplicaciones para dispositivos móviles aplicando el RD 1112/...Accesibilidad de aplicaciones para dispositivos móviles aplicando el RD 1112/...
Accesibilidad de aplicaciones para dispositivos móviles aplicando el RD 1112/...Jose R. Hilera
 
Contenidos accesibles para las redes sociales
Contenidos accesibles para las redes socialesContenidos accesibles para las redes sociales
Contenidos accesibles para las redes socialesJose R. Hilera
 
Ejemplos WAI-ARIA con HTML, CSS y JavaScript
Ejemplos WAI-ARIA con HTML, CSS y JavaScriptEjemplos WAI-ARIA con HTML, CSS y JavaScript
Ejemplos WAI-ARIA con HTML, CSS y JavaScriptJose R. Hilera
 
Herramientas de evaluación de accesibilidad web WCAG 2.0
Herramientas de evaluación de accesibilidad web WCAG 2.0Herramientas de evaluación de accesibilidad web WCAG 2.0
Herramientas de evaluación de accesibilidad web WCAG 2.0Jose R. Hilera
 
Ejemplo de corrección de errores de accesibilidad WCAG 2.0 en una página web
Ejemplo de corrección de errores de accesibilidad WCAG 2.0 en una página webEjemplo de corrección de errores de accesibilidad WCAG 2.0 en una página web
Ejemplo de corrección de errores de accesibilidad WCAG 2.0 en una página webJose R. Hilera
 
Resumen de las pautas WCAG 2.0 de W3C
Resumen de las pautas WCAG 2.0 de W3CResumen de las pautas WCAG 2.0 de W3C
Resumen de las pautas WCAG 2.0 de W3CJose R. Hilera
 
Integración de WAI-ARIA en HTML5
Integración de WAI-ARIA en HTML5Integración de WAI-ARIA en HTML5
Integración de WAI-ARIA en HTML5Jose R. Hilera
 
PAUTAS W3C DE ACCESIBILIDAD PARA HERRAMIENTAS DE EDICIÓN WEB (ATAG 2.0)
PAUTAS W3C DE ACCESIBILIDAD PARA HERRAMIENTAS DE EDICIÓN WEB (ATAG 2.0)PAUTAS W3C DE ACCESIBILIDAD PARA HERRAMIENTAS DE EDICIÓN WEB (ATAG 2.0)
PAUTAS W3C DE ACCESIBILIDAD PARA HERRAMIENTAS DE EDICIÓN WEB (ATAG 2.0)Jose R. Hilera
 
Estándares de accesibilidad web
Estándares de accesibilidad webEstándares de accesibilidad web
Estándares de accesibilidad webJose R. Hilera
 
Metodologías de ingeniería Web dirigida por modelos
Metodologías de ingeniería Web dirigida por modelosMetodologías de ingeniería Web dirigida por modelos
Metodologías de ingeniería Web dirigida por modelosJose R. Hilera
 

Mehr von Jose R. Hilera (20)

Tema 3. Herramientas para laInteligencia Tecnológica
Tema 3. Herramientas para laInteligencia TecnológicaTema 3. Herramientas para laInteligencia Tecnológica
Tema 3. Herramientas para laInteligencia Tecnológica
 
Tema 2. Sistema de Inteligencia Tecnológica: Norma UNE 166006:2018
Tema 2. Sistema de Inteligencia Tecnológica: Norma UNE 166006:2018Tema 2. Sistema de Inteligencia Tecnológica: Norma UNE 166006:2018
Tema 2. Sistema de Inteligencia Tecnológica: Norma UNE 166006:2018
 
Tema 1. Conceptos básicos sobre Inteligencia Tecnológica
Tema 1. Conceptos básicos sobre Inteligencia TecnológicaTema 1. Conceptos básicos sobre Inteligencia Tecnológica
Tema 1. Conceptos básicos sobre Inteligencia Tecnológica
 
Tema 4. Aprendizaje a lo largo de la vida
Tema 4. Aprendizaje a lo largo de la vidaTema 4. Aprendizaje a lo largo de la vida
Tema 4. Aprendizaje a lo largo de la vida
 
Tema 5. Evaluación y comparación de tecnologías
Tema 5. Evaluación y comparación de tecnologíasTema 5. Evaluación y comparación de tecnologías
Tema 5. Evaluación y comparación de tecnologías
 
Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)
 
Evaluación de la accesibilidad de aplicaciones para dispositivos móviles apli...
Evaluación de la accesibilidad de aplicaciones para dispositivos móviles apli...Evaluación de la accesibilidad de aplicaciones para dispositivos móviles apli...
Evaluación de la accesibilidad de aplicaciones para dispositivos móviles apli...
 
Aspectos generales sobre accesibilidad de aplicaciones móviles (apps)
Aspectos generales sobre accesibilidad de aplicaciones móviles (apps)Aspectos generales sobre accesibilidad de aplicaciones móviles (apps)
Aspectos generales sobre accesibilidad de aplicaciones móviles (apps)
 
Accesibilidad de aplicaciones para dispositivos móviles aplicando el RD 1112/...
Accesibilidad de aplicaciones para dispositivos móviles aplicando el RD 1112/...Accesibilidad de aplicaciones para dispositivos móviles aplicando el RD 1112/...
Accesibilidad de aplicaciones para dispositivos móviles aplicando el RD 1112/...
 
Perfiles UML
Perfiles UMLPerfiles UML
Perfiles UML
 
Contenidos accesibles para las redes sociales
Contenidos accesibles para las redes socialesContenidos accesibles para las redes sociales
Contenidos accesibles para las redes sociales
 
Ejemplos WAI-ARIA con HTML, CSS y JavaScript
Ejemplos WAI-ARIA con HTML, CSS y JavaScriptEjemplos WAI-ARIA con HTML, CSS y JavaScript
Ejemplos WAI-ARIA con HTML, CSS y JavaScript
 
Herramientas de evaluación de accesibilidad web WCAG 2.0
Herramientas de evaluación de accesibilidad web WCAG 2.0Herramientas de evaluación de accesibilidad web WCAG 2.0
Herramientas de evaluación de accesibilidad web WCAG 2.0
 
Ejemplo de corrección de errores de accesibilidad WCAG 2.0 en una página web
Ejemplo de corrección de errores de accesibilidad WCAG 2.0 en una página webEjemplo de corrección de errores de accesibilidad WCAG 2.0 en una página web
Ejemplo de corrección de errores de accesibilidad WCAG 2.0 en una página web
 
Ejemplos de WCAG 2.0
Ejemplos de WCAG 2.0Ejemplos de WCAG 2.0
Ejemplos de WCAG 2.0
 
Resumen de las pautas WCAG 2.0 de W3C
Resumen de las pautas WCAG 2.0 de W3CResumen de las pautas WCAG 2.0 de W3C
Resumen de las pautas WCAG 2.0 de W3C
 
Integración de WAI-ARIA en HTML5
Integración de WAI-ARIA en HTML5Integración de WAI-ARIA en HTML5
Integración de WAI-ARIA en HTML5
 
PAUTAS W3C DE ACCESIBILIDAD PARA HERRAMIENTAS DE EDICIÓN WEB (ATAG 2.0)
PAUTAS W3C DE ACCESIBILIDAD PARA HERRAMIENTAS DE EDICIÓN WEB (ATAG 2.0)PAUTAS W3C DE ACCESIBILIDAD PARA HERRAMIENTAS DE EDICIÓN WEB (ATAG 2.0)
PAUTAS W3C DE ACCESIBILIDAD PARA HERRAMIENTAS DE EDICIÓN WEB (ATAG 2.0)
 
Estándares de accesibilidad web
Estándares de accesibilidad webEstándares de accesibilidad web
Estándares de accesibilidad web
 
Metodologías de ingeniería Web dirigida por modelos
Metodologías de ingeniería Web dirigida por modelosMetodologías de ingeniería Web dirigida por modelos
Metodologías de ingeniería Web dirigida por modelos
 

Kürzlich hochgeladen

proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñotapirjackluis
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSYadi Campos
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
CLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfCLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfJonathanCovena1
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...JAVIER SOLIS NOYOLA
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaDecaunlz
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxKarlaMassielMartinez
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfNancyLoaa
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptxdeimerhdz21
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...JonathanCovena1
 
plande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfplande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfenelcielosiempre
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 

Kürzlich hochgeladen (20)

proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
CLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfCLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdf
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdf
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
plande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfplande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdf
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
 

Desarrollo de servicios REST dirigido por modelos

  • 1. Desarrollo de servicios Web REST dirigido por modelos José Ramón Hilera González Universidad de Alcalá, España Noviembre, 2017 (Presentación y ejemplos disponibles en https://github.com/josehilera/rest)
  • 2. 1. Concepto de servicio web o API REST/RESTful 2. Niveles en el desarrollo dirigido por modelos de servicios REST aplicando MDA 3. Nivel CIM (Computer-Independent Model) • Diagrama de casos de uso 4. Nivel PIM (Platform-Independent Model) 4.1 Modelo basado en un perfil UML • Creación del un perfil UML para servicios REST • Aplicación del perfil UML en el diseño de un servicio REST 4.2 Modelo basado en un lenguaje específico para describir API REST • Editores online • Modelo con formato OpenAPI • Modelo con formato RAML 5. Nivel PSM (Platform-Specific Model) • Modelo basado en un perfil UML para una plataforma Java (JAX-RS) 6. Nivel de código fuente • Generación automática de código para servidor Web • Generación automática de código para aplicación cliente consumidora del servicio 7. Lecturas recomendadas 2 Contenido
  • 3. Un servicio es una funcionalidad ofrecida por un servidor web, en base al protocolo HTTP (NOTA: Se considerarán los siguientes sinónimos: servicio=API, REST=RESTful, operación=método, recurso=endpoint) • Un servicio REST tiene una ruta/path base (host y aplicación web a la que pertenece) • Ej. http://universidad.org/agenda/v1 • Se compone de recursos y sub-recursos, cada uno con una ruta (path) • Ej. http://universidad.org/agenda/v1/Profesores/ • Ofrece a sus consumidores métodos asociados a los recursos (GET, POST, PUT, DELETE,..) • Los métodos tienen datos de entrada (en la propia ruta o en el cuerpo del mensaje HTTP) • Ej. http://universidad.org/agenda/v1/Profesores/234 • Los métodos generan resultados con diferentes formatos (JSON, XML). • Ej. JSON: {“idProfesor": 234, “nombre”: “Juan Pérez García”, “departamento”: “Ciencias”} 3 1. Concepto de servicio Web o API REST/RESTful
  • 4. 1. A trailing forward slash (/) should not be included at the end of URIs 2. Forward slash separator (/) must be used to indicate a hierarchical relationship 3. Hyphens (-) should be used to improve the readability of URIs 4. Underscores (_) should not be used in URIs 5. Lowercase letters should be preferred in URI paths 6. File extensions should not be included in URIs 7. Should the endpoint name be singular or plural? Fuente: http://blog.restcase.com/7-rules-for-rest-api-uri-design/ 4 1. Concepto de servicio Web o API REST/RESTful (7 Rules for REST API URI Design)
  • 5. 5 2. Niveles en el desarrollo dirigido por modelos de servicios REST aplicando MDA Código Código fuente del servicio para el servidor Web (Java, PHP, ..) + Código fuente del cliente consumidor del servicio (aplicación de escritorio, consola, app móvil, aplicación/página web) PSM (Platform-Specific Model) Modelo según perfil UML específico (Ej. IBM JAX-RS profile) --- PIM (Platform-Indepent Model) Modelo basado en un perfil UML REST genérico (Ej. IBM REST profile) Modelo en formato estándar de texto para especificar API REST (Ej. OpenAPI o RAML) CIM (Computer-Indepent Model) Diagrama de Casos de Uso
  • 6. 6 3. Nivel CIM (Computer-Independent Model) Diagrama de Casos de Uso uc CIM Profesores Tutorías Usuario del servicio Obtener listado de los profesores Crear un nuevo profesor Encontrar un profesor por su número de identificación Borrar un profesor a partir de su identificador Encontrar una tutoría según su identificador Crear una tutoría para un profesor Obtener todas las tutorías programadas en la agenda para un profesor o en una fecha determinada Borrar una tutoría de un profesor
  • 7. 1. Crear o conseguir un perfil UML para REST • Ejemplo. REST Profile propuesto por IBM: https://www.ibm.com/support/knowledgecenter/SS8PJ7_9.6.1/com.ibm.xtoo ls.rest.doc/topics/r_rest_profile.html 2. Exportar el perfil en formato XMI 3. Importar el perfil en una herramienta UML 4. Realizar modelos del servicios REST usando el perfil 7 4. Nivel PIM (Platform-Independent Model) 4.1 Modelo basado en perfil UML (pasos)
  • 8. 8 4.1 Modelo basado en perfil UML Ejemplo de perfil (Estereotipos) Estereotipo Elemento UML base Atributos (Tagged values) <<Resource>> Class produces, consumes <<VirtualResource>> Class <<Application>> Class <<GET>> Operation produces, consumes <<PUT>> Operation produces, consumes <<POST>> Operation produces, consumes <<DELETE>> Operation produces, consumes <<HEAD>> Operation produces, consumes <<Param>> Parameter paramType, paramName, defaultValue NOTA: Valores posibles de paramType: query, header, path, cookie, body. <<Path>> Dependency relationship
  • 9. 9 4.1 Modelo basado en perfil UML Ejemplo de perfil (Metamodelo) class REST profile «metaclass» Class Resource - produces: string - consumes: string Application GET - produces: string - consumes: string PUT - produces: string - consumes: string POST - produces: string - consumes: string DELETE - produces: string - consumes: string HEAD - produces: string - consumes: string «metaclass» Operation «metaclass» Dependency Path «metaclass» Parameter Param - paramType: ParamType - paramName: string - defaultValue: string VirtualResource «enumeration» ParamType query header path cookie body
  • 10. 10 4.1 Modelo basado en perfil UML Ejemplo de modelo de un servicio usando el perfil class PIM «Application» Agenda «Resource» Profesores «POST» + crearProfesor(Profesor) «GET» + obtenerProfesores(): Profesor[] «VirtualResource» Profesor «GET» + buscarProfesor(int): Profesor «POST» + borrarProfesor(int) «Resource» Tutorias «POST» + crearTutoria(Tutoria) «GET» + obtenerTutorias(string): Tutoria[] «VirtualResource» Tutoria «DELETE» + borrarTutoria(string) «GET» + buscarTutoria(string): Tutoria Profesor - idProfesor: string - nombre: string - departamento: string Tutoria - idTutoria: string - fecha: string - hora: string - lugar: string /tutorias «Path» /profesores «Path» 1 0..* /{idProfesor} «Path» /{idTutoria} «Path»
  • 11. 11 4.1 Modelo basado en perfil UML Ejemplo de modelo (parámetro de tipo“path”) Ejemplo URI para buscar un profesor con id=234: http://universidad.org/agenda/v1/profesores/234
  • 12. 12 4.1 Modelo basado en perfil UML Ejemplo de modelo (parámetro de tipo“query”) Ejemplo URI para obtener tutorías: http://universidad.org/agenda/v1/profesores/234/tutorías?fecha=“20/03/2018”
  • 13. Se han propuesto varios lenguajes: • OpenAPI Specification (OAS): https://www.openapis.org • Patrocinado por: Linux Foundation, Google, Atlassian, ebay, IBM, Microsoft, SAP, PayPal, salesforce, Adobe, MuleSoft, … • Anteriormente denominada “Swagger” • Versión 2.0 aprobada en 2014. Borrador de versión 3.0 publicado en 2017 • RAML (RESTful API Modeling Language): https://raml.org • Patrocinado por: Cisco, vmware, Spotify, … • API Blueprint: https://apiblueprint.org 13 4. Nivel PIM (Platform-Independent Model) 4.2 Modelo basado en un lenguaje específico para describir API REST
  • 14. • Swagger Editor (https://editor.swagger.io) y SwaggerHub (https://app.swaggerhub.com) (Permiten editar descripciones OpenAPI 2.0 y 3.0 utilizando notación JSON o YAML) 14 4.2 Modelo basado en leguaje de descripción de API Editores online: Swagger
  • 15. • AMF Playground (https://mulesoft-labs.github.io/amf-playground/) (Permite editar descripciones OpenAPI 2.0 y RAML, sólo utilizando notación JSON) 15 4.2 Modelo basado en leguaje de descripción de API Editores online: AMF
  • 16. Es un lenguaje que utiliza la notación JSON o YAML para describir servicios/API REST, con las siguientes secciones básicas: • info • host, basePath, tags, schemes • paths • Operaciones por path: get, put, delete, post • Campos por operacion: operationId, consumes, produces, parameters, responses • definitions 16 4.2 Modelo basado en leguaje de descripción de API Modelado con OpenAPI Specification 2.0
  • 17. swagger: ‘2.0‘ info: title: Servicio de gestión de Agenda de una Universidad version: 1.0.0 description: Se ofrecen métodos para la gestión de citas para tutorías con los profesores de la universidad host: universidad.org basePath: /agenda/v1 tags: - name: Profesores description: Operaciones sobre profesores - name: Tutorias description: Operaciones sobre las tutorías de los profesores schemes: - http 17 4.2 Modelo basado en leguaje de descripción de API Ejemplo de modelo OpenAPI 2.0 (1/5) Secciones: info, host, basePath, tags, schemes Versión visual del modelo que ofrece “Swagger Editor”:
  • 18. definitions: Profesor: type: object required: - idProfesor properties: idProfesor: type: string description: Identifcador único de un profesor example: 234 nombre: type: string description: Nombre y apellidos del profesor example: Juan Pérez García departamento: type: string description: Nombre del departamento del profesor example: Ciencias de la Computación xml: name: profesor 18 4.2 Modelo basado en leguaje de descripción de API Ejemplo de modelo OpenAPI 2.0 (2/5) Sección: definitions Versión visual del modelo que ofrece “Swagger Editor”:
  • 19. paths: /profesores: post: tags: - Profesores summary: Crear un nuevo profesor description: '‘ operationId: crearProfesor consumes: - application/json - application/xml parameters: - in: body name: body description: Datos del profesor a crear required: true schema: $ref: '#/definitions/Profesor‘ responses: '200': description: Operación realizada correctamente '405': description: Datos de entrada incorrectos 19 4.2 Modelo basado en leguaje de descripción de API Ejemplo de modelo OpenAPI 2.0 (3/5) Sección: paths (ejemplo “profesores” y operación POST) Versión visual del modelo que ofrece “Swagger Editor”:
  • 20. /profesores/{idProfesor}': parameters: - name: idProfesor in: path description: Identificador de un profesor required: true type: number format: int32 delete: tags: - Profesores summary: Borrar un profesor a partir de su identif. description: '‘ operationId: borrarProfesor responses: '400': description: Identificador de profesor no válido '404': description: Profesor no encontrado 20 4.2 Modelo basado en leguaje de descripción de API Ejemplo de modelo OpenAPI 2.0 (4/5) Sección: paths (ejemplo operación DELETE con parámetro path) Versión visual del modelo que ofrece “Swagger Editor”:
  • 21. /profesores/{idProfesor}/tutorias': . . . get: tags: - Tutorias summary: Obtener todas las tutorías programadas en la agenda para un profesor o en una fecha determinada description: Si no se proporciona una fecha, se obtienen todas las tutorías del profesor en la agenda operationId: obtenerTutorias produces: - application/json - application/xml parameters: - name: fecha in: query description: Fecha para la que se quiere obtener la lista de tutorías. required: false type: string responses: '200': description: Operación realizada con éxito schema: type: array items: $ref: '#/definitions/Tutoria' 21 4.2 Modelo basado en leguaje de descripción de API Ejemplo de modelo OpenAPI 2.0 (5/5) Sección: paths (ejemplo operación GET con parámetro query) Versión visual del modelo que ofrece “Swagger Editor”:
  • 22. #%RAML 1.0 title: Servicio de gestión de Agenda de una Universidad description: Se ofrecen métodos para la gestión de citas para tutorías con los profesores de la universidad version: 1.0.0 baseUri: universidad.org/agenda/v1 types: Profesor: properties: . . . protocols: http /profesores: post: description: ‘’ body: type: Profesor displayName: crearProfesor responses: '200': description: Operación realizada correctamente '405': description: Datos de entrada incorrecto ... 22 4.2 Modelo basado en leguaje de descripción de API Ejemplo de modelo RAML Conversión automática OpenAPI  RAML con el editor AMF Versión visual del modelo que ofrece “AMF”:
  • 23. 23 5. Nivel PSM (Platform-Specific Model) Ejemplo de perfil UML para Java (JAX-RS). Propuesto por IBM: https://www.ibm.com/support/knowledgecenter/SS8PJ7_9.6.1/com.ibm.xtools.rest.doc/topics/r_jaxrs_profile.html Estereotipo Elemento UML Atributos (Tagged values) Anotaciones correspondientes en el código Java <<Resource>> Class Produces, consumes @Produces("string_value"), @Consumes("string_value") <<Application>> Class <<GET>> Operation produces, consumes @GET <<PUT>> Operation produces, consumes @PUT <<POST>> Operation produces, consumes @POST <<DELETE>> Operation produces, consumes @DELETE <<HEAD>> Operation produces, consumes @HEAD <<Param>> Parameter PathParam, QueryParam, FormParam, MatrixParam, CookieParam, HeaderParam, DefaultValue @PathParam, @QueryParam, @FormParam, @MatrixParam, @CookieParam, @HeaderParam, @DefaultValue <<Path>> Dependency relationship @Path("string_value") <<Provider>> @Provider <<Providers>> Class @Providers <<Context>> Parameter, field, operation @Context <<SubResourceLocator>> Operation
  • 24. • Algunos editores de ofrecen utilidades de generación automática de parte del código fuente a partir de un modelo de un servicio REST • Permiten la generación de código para implementar el servicio en un servidor • Permiten la generación del código que debería utilizar una aplicación cliente que utilice o consuma el servicio • Generación a partir de modelos basados en perfiles UML: • Usando herramientas que incluyan un generador de código REST predefinido: IBM Rational Software Architect • Usando herramientas que soportan perfiles UML y permiten al desarrollador crear generadores de código a medida: Enterprise Architect, Eclipse, .. • Generación a partir de modelos basados en lenguajes de descripción de servicios • Para OpenAPI: Herramientas como Swagger Editor, SwaggerHub, AMF • Para RAML: Herramientas como AMF 24 6. Nivel de código fuente
  • 25. • En el menú “Generate Server” se puede elegir un gran número de tecnologías de servidor y generar el código fuente para ellas 25 6. Nivel de código fuente Generación de código de servidor con Swagger
  • 26. • En el menú “Generate Server” se puede elegir un gran número de tecnologías de cliente y generar el código fuente para ellas 26 6. Nivel de código fuente Generación de código de cliente con Swagger
  • 27. • Stowe, M. (2015). Undisturbed REST: A Guide to Designing the Perfect API. https://www.mulesoft.com/sites/default/files/resource-assets/ebook- UndisturbedREST_v1.pdf • Es un libro sobre diseño, no sobre programación • Indice: 1. What is an API 2. Planning Your API 3. Designing the Spec 4. Using RAML 5. Prototyping and Agile Testing 6. Authorization and Authentication 7. Designing Your Resources 8. Designing Your Methods 9. Handling Responses 10. Adding Hypermedia 11. Managing with a Proxy 12. Documenting and Sharing Your API 27 7. Lecturas recomendadas Diseño de servicios Web REST
  • 28. • IBM (2017). Creating and modeling web services according to the REST architectural style. https://www.ibm.com/support/knowledgecenter/SS8PJ7_9.6.1/com.ibm.xtools.rest.doc/topics/t _trans_overview.html • Katoch (2011). Design and implement RESTful web services with Rational Software Architect. https://www.ibm.com/developerworks/rational/library/design-implement-restful-web-services/ • Thunman, O. (2014). Modelling a REST API with UML and keeping it agile. http://callistaenterprise.se/blogg/teknik/2014/08/05/modelling-a-rest-api-with-uml-and- keeping-it-agile/ • StackOverflow (2016). Create spec for REST API in Enterprise Architect. https://stackoverflow.com/questions/38097840/create-spec-for-rest-api-in-enterprise-architect • Github (2017). An add in to Sparx Enterprise Architect that allows for modeling and exporting REST APIs as RAML and JSON Schema. https://github.com/bayeslife/api-add-in • Visual Paradigm (2017). Modeling REST API. https://www.visual- paradigm.com/support/documents/vpuserguide/276/3420/85154_modelingrest.html 28 7. Lecturas recomendadas Modelado de servicios REST con UML
  • 29. • OAI (2017). The OpenAPI Specification. https://github.com/OAI/OpenAPI-Specification • Lauret, A. (2016). Writing OpenAPI (Swagger) Specification Tutorial. https://apihandyman.io/writing-openapi-swagger-specification-tutorial-part-1- introduction/ • SmartBear (2017). Video: How to Design and Document APIs with the Latest OpenAPI Specification 3.0. https://youtu.be/6kwmW_p_Tig • Gardiner, M. (2017). Video: API Design and What's new with Open API? (Google Cloud Next '17). https://youtu.be/4lBMQteMd6Y • Lane, K. (2017). OpenAPI Toolbox. http://openapi.toolbox.apievangelist.com/ • Swagger (2017). Commercial Tools. https://swagger.io/commercial-tools/ • Ed-douibi, H., Cánovas, J.L., Cabot, J. (2017). Example-driven Web API Specification Discovery. https://modeling-languages.com/wp-content/uploads/2017/05/ecmfa2017.pdf 29 7. Lecturas recomendadas Modelado de servicios REST con OpenAPI
  • 30. Desarrollo de servicios Web REST dirigido por modelos José Ramón Hilera González Universidad de Alcalá, España Noviembre, 2017 (Presentación y ejemplos disponibles en https://github.com/josehilera/rest)