SlideShare una empresa de Scribd logo
1 de 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)

Más contenido relacionado

La actualidad más candente

REST API and CRUD
REST API and CRUDREST API and CRUD
REST API and CRUDPrem Sanil
 
Building Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaBuilding Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaGuido Schmutz
 
Tecnicas esquemas indexados
Tecnicas esquemas indexadosTecnicas esquemas indexados
Tecnicas esquemas indexadosGiovani Ramirez
 
[오픈소스컨설팅] 서비스 메쉬(Service mesh)
[오픈소스컨설팅] 서비스 메쉬(Service mesh)[오픈소스컨설팅] 서비스 메쉬(Service mesh)
[오픈소스컨설팅] 서비스 메쉬(Service mesh)Open Source Consulting
 
REST-API design patterns
REST-API design patternsREST-API design patterns
REST-API design patternsPatrick Savalle
 
Understanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple StepsUnderstanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple StepsTessa Mero
 
Dynamic Content Acceleration: Amazon CloudFront and Amazon Route 53 (ARC309) ...
Dynamic Content Acceleration: Amazon CloudFront and Amazon Route 53 (ARC309) ...Dynamic Content Acceleration: Amazon CloudFront and Amazon Route 53 (ARC309) ...
Dynamic Content Acceleration: Amazon CloudFront and Amazon Route 53 (ARC309) ...Amazon Web Services
 
Oracle Service Bus vs. Oracle Enterprise Service Bus vs. BPEL
Oracle Service Bus vs. Oracle Enterprise Service Bus vs. BPELOracle Service Bus vs. Oracle Enterprise Service Bus vs. BPEL
Oracle Service Bus vs. Oracle Enterprise Service Bus vs. BPELGuido Schmutz
 
Microservices
MicroservicesMicroservices
MicroservicesSmartBear
 
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...
Developing event-driven microservices with event sourcing and CQRS  (svcc, sv...Developing event-driven microservices with event sourcing and CQRS  (svcc, sv...
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...Chris Richardson
 
Design Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIsDesign Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIsStormpath
 
Spring data presentation
Spring data presentationSpring data presentation
Spring data presentationOleksii Usyk
 
Azure Event Hubs - Behind the Scenes With Kasun Indrasiri | Current 2022
Azure Event Hubs - Behind the Scenes With Kasun Indrasiri | Current 2022Azure Event Hubs - Behind the Scenes With Kasun Indrasiri | Current 2022
Azure Event Hubs - Behind the Scenes With Kasun Indrasiri | Current 2022HostedbyConfluent
 
Event Driven Architecture
Event Driven ArchitectureEvent Driven Architecture
Event Driven ArchitectureStefan Norberg
 
Building Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaBuilding Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaGuido Schmutz
 

La actualidad más candente (20)

REST API and CRUD
REST API and CRUDREST API and CRUD
REST API and CRUD
 
Building Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaBuilding Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache Kafka
 
Tecnicas esquemas indexados
Tecnicas esquemas indexadosTecnicas esquemas indexados
Tecnicas esquemas indexados
 
[오픈소스컨설팅] 서비스 메쉬(Service mesh)
[오픈소스컨설팅] 서비스 메쉬(Service mesh)[오픈소스컨설팅] 서비스 메쉬(Service mesh)
[오픈소스컨설팅] 서비스 메쉬(Service mesh)
 
API Design- Best Practices
API Design-   Best PracticesAPI Design-   Best Practices
API Design- Best Practices
 
REST-API design patterns
REST-API design patternsREST-API design patterns
REST-API design patterns
 
Understanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple StepsUnderstanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple Steps
 
Dynamic Content Acceleration: Amazon CloudFront and Amazon Route 53 (ARC309) ...
Dynamic Content Acceleration: Amazon CloudFront and Amazon Route 53 (ARC309) ...Dynamic Content Acceleration: Amazon CloudFront and Amazon Route 53 (ARC309) ...
Dynamic Content Acceleration: Amazon CloudFront and Amazon Route 53 (ARC309) ...
 
Oracle Service Bus vs. Oracle Enterprise Service Bus vs. BPEL
Oracle Service Bus vs. Oracle Enterprise Service Bus vs. BPELOracle Service Bus vs. Oracle Enterprise Service Bus vs. BPEL
Oracle Service Bus vs. Oracle Enterprise Service Bus vs. BPEL
 
Microservices
MicroservicesMicroservices
Microservices
 
Front end y Back-end
Front end y Back-end Front end y Back-end
Front end y Back-end
 
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...
Developing event-driven microservices with event sourcing and CQRS  (svcc, sv...Developing event-driven microservices with event sourcing and CQRS  (svcc, sv...
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Expressjs
ExpressjsExpressjs
Expressjs
 
Design Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIsDesign Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIs
 
Soap vs rest
Soap vs restSoap vs rest
Soap vs rest
 
Spring data presentation
Spring data presentationSpring data presentation
Spring data presentation
 
Azure Event Hubs - Behind the Scenes With Kasun Indrasiri | Current 2022
Azure Event Hubs - Behind the Scenes With Kasun Indrasiri | Current 2022Azure Event Hubs - Behind the Scenes With Kasun Indrasiri | Current 2022
Azure Event Hubs - Behind the Scenes With Kasun Indrasiri | Current 2022
 
Event Driven Architecture
Event Driven ArchitectureEvent Driven Architecture
Event Driven Architecture
 
Building Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaBuilding Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache Kafka
 

Similar a 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
 

Similar a 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
 

Más de 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
 

Más de 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
 

Último

Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
plan-de-trabajo-colegiado en una institucion educativa
plan-de-trabajo-colegiado en una institucion educativaplan-de-trabajo-colegiado en una institucion educativa
plan-de-trabajo-colegiado en una institucion educativafiorelachuctaya2
 
BROCHURE EXCEL 2024 FII.pdfwrfertetwetewtewtwtwtwtwtwtwtewtewtewtwtwtwtwe
BROCHURE EXCEL 2024 FII.pdfwrfertetwetewtewtwtwtwtwtwtwtewtewtewtwtwtwtweBROCHURE EXCEL 2024 FII.pdfwrfertetwetewtewtwtwtwtwtwtwtewtewtewtwtwtwtwe
BROCHURE EXCEL 2024 FII.pdfwrfertetwetewtewtwtwtwtwtwtwtewtewtewtwtwtwtwealekzHuri
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosCesarFernandez937857
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialpatriciaines1993
 
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
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinavergarakarina022
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPELaura Chacón
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptxJunkotantik
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxdanalikcruz2000
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PCCesarFernandez937857
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...fcastellanos3
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para eventoDiegoMtsS
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptELENA GALLARDO PAÚLS
 

Último (20)

Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
plan-de-trabajo-colegiado en una institucion educativa
plan-de-trabajo-colegiado en una institucion educativaplan-de-trabajo-colegiado en una institucion educativa
plan-de-trabajo-colegiado en una institucion educativa
 
Repaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia GeneralRepaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia General
 
BROCHURE EXCEL 2024 FII.pdfwrfertetwetewtewtwtwtwtwtwtwtewtewtewtwtwtwtwe
BROCHURE EXCEL 2024 FII.pdfwrfertetwetewtewtwtwtwtwtwtwtewtewtewtwtwtwtweBROCHURE EXCEL 2024 FII.pdfwrfertetwetewtewtwtwtwtwtwtwtewtewtewtwtwtwtwe
BROCHURE EXCEL 2024 FII.pdfwrfertetwetewtewtwtwtwtwtwtwtewtewtewtwtwtwtwe
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos Básicos
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundial
 
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
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karina
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPE
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptx
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PC
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdfTema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para evento
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
 

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)