todo sobre mis apis
TRANSCRIPT
![Page 1: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/1.jpg)
![Page 2: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/2.jpg)
Byteflair
http://byteflair.com
Daniel Cerecedo@dcerecedo
Victor Hernandez@uvehachebe
![Page 3: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/3.jpg)
AgendaAgenda
ArquitecturaArquitectura RESTDeveloper UXREST sobre HTTPHypermedia APIsVistas Adaptativas
Actualizaciones & ConcurrenciaI18nLenguajes de especificaciónHerramientas de prueba
Byteflair
![Page 4: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/4.jpg)
ArquitecturaArquitectura
Byteflair
![Page 5: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/5.jpg)
Separación de responsabilidades de presentación y procesamiento
Portabilidad de la interfaz de usuario
Simplicidad del servidor
Capacidad de modificar los componentes por separado
ServidorCliente
Byteflair
Arquitectura RESTArquitectura RESTCliente/ServidorCliente/Servidor
![Page 6: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/6.jpg)
Servidor
Mensajes autodescriptivos: semántica, datos, metadatos y contexto
Cliente2:Cliente
Cliente1:Cliente
Visibilidad Fiabilidad Escalabilidad
Rendimiento de red
Control sobre el comportamiento del cliente
Byteflair
Arquitectura RESTArquitectura RESTSin estadoSin estado
![Page 7: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/7.jpg)
Cliente
Elimina total o parcialmente algunas de las interacciones
Rendimiento de red
Rendimiento percibido por el usuario
Cache
Servidor
Cache
Byteflair
Arquitectura RESTArquitectura RESTCacheableCacheable
![Page 8: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/8.jpg)
1.Identificación por URIs2.Mensajes autodescriptivos3.Manipulación a través de representaciones4.HATEOAS
Simplicidad
Byteflair
Arquitectura RESTArquitectura RESTInterfaz uniformeInterfaz uniforme
![Page 9: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/9.jpg)
Cliente
Cada capa solo conoce a su vecina
Simplicidad
Latencia
Cache
Servidor
Cache
Proxy
Cache
Balanceador
Byteflair
Arquitectura RESTArquitectura RESTPor capasPor capas
![Page 10: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/10.jpg)
Developer UXDeveloper UX
El desarrollador como destinatario del contenido, no los navegadores
Byteflair
![Page 11: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/11.jpg)
¿Porqué REST sobre HTTP?¿Porqué REST sobre HTTP?
Byteflair
“Los límites de mi lenguaje son los límites de mi nundo”
Todo el mundo habla HTTPLudwig Wittgenstein
![Page 12: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/12.jpg)
REST sobre HTTPREST sobre HTTP
Separar la representación del recurso de los metadatos de la petición
Representación Body→Metadatos Headers→
Byteflair
![Page 13: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/13.jpg)
REST sobre HTTPREST sobre HTTP
Utiliza el HTTP Status Code para dar información acerca del resultado de la petición
2xx Ok→4xx El cliente ha hecho algo mal→
5xx El servidor ha fallado →
Byteflair
![Page 14: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/14.jpg)
REST sobre HTTPREST sobre HTTP
Utiliza los HTTP Status Codes existentes que mejor se adapten a la situación
Añade información específica cuando se produzca un error
Byteflair
![Page 15: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/15.jpg)
REST sobre HTTPREST sobre HTTP
Byteflair
Error HTTP
Error de negocio
Error técnico
![Page 16: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/16.jpg)
HypermediaHypermedia
Byteflair
![Page 17: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/17.jpg)
HypermediaHypermedia
Byteflair
![Page 18: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/18.jpg)
HypermediaHypermedia
Byteflair
![Page 19: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/19.jpg)
HypermediaHypermedia
Modela el dominio del problemaIdentifica los recursos del dominio
Identifica las transiciones de estado del sistemaDistingue entre estructura interna y lo que expones como recurso
Byteflair
¡No expongas la base de datos!
![Page 20: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/20.jpg)
HypermediaHypermediaRecursos del dominio
Vehicles DriversUsers Owners
SessionsTransiciones de estado
Crear recursosFiltrar recursos
Asignar conductor a vehículoActivar sesión: conductor + vehículo
Desactivar sesiónByteflair
![Page 21: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/21.jpg)
HypermediaHypermedia
Definir los formatos de representaciónMime Types
Definir roles para cada control hypermediaRel Types
Convenciones semánticasPOST, PUT, GET, DELETE
Byteflair
![Page 22: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/22.jpg)
HypermediaHypermediaGET /HeadersLink: <https://api.domain.com/vehicles>; rel=”vehicles”: <https://api.domain.com/users>; rel=”users”: <https://api.domain.com/sessions>; rel=”sessions”Body...
Byteflair
![Page 23: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/23.jpg)
HypermediaHypermedia
GET /vehiclesHeadersLink: <https://api.domain.com/vehicles?page=1&size=20>; rel=”next”Body[ {... }, {…}, ...] Control links
Byteflair
![Page 24: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/24.jpg)
HypermediaHypermedia
GET /sessions/1374Body{ ….
“vehicle”:”https://api.domain.com/vehicles/1”,“driver”:”https://api.domain.com/users/1”
}
También son control links.
Aplica las convenciones para obtener el significado completo!!
Byteflair
![Page 25: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/25.jpg)
HypermediaHypermedia
GET /vehicles/1Body{ ….
“owner”:”https://api.domain.com/users/1”}
Relation types specify the role of the link
Byteflair
![Page 26: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/26.jpg)
HypermediaHypermedia
El cliente debe descubrir su nivel de acceso a cada recurso
Options
Byteflair
![Page 27: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/27.jpg)
HypermediaHypermedia
ConvencionesRel Types, Media Types, Methods, Status Codes
Byteflair
..o qué debe saber
el desarrollador
de antemano
Las convenciones se convierten en acoplamiento
![Page 28: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/28.jpg)
HypermediaHypermedia
Byteflair
HALHAL
http://stateless.co/hal_specification.html
![Page 29: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/29.jpg)
HypermediaHypermedia
Como proveedor, minimiza el número de cosas que debes saber de antemano
sobre un API
Byteflair
![Page 30: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/30.jpg)
HypermediaHypermedia
No se consigue desacoplar un
cliente de su servidorcon magia
Byteflair
![Page 31: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/31.jpg)
Vistas adaptativasVistas adaptativas
Byteflair
![Page 32: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/32.jpg)
Vistas adaptativasVistas adaptativas
Distintos contextos de seguridad requieren vistas diferentes sobre los
mismos datos
Byteflair
![Page 33: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/33.jpg)
Un administrador debe poder ver todos los datos de un usuario
Un usuario puede ver todos sus datosUn usuario solo puede ver los datos públicos de los
demás usuarios
Scenario
Byteflair
Vistas adaptativasVistas adaptativas
![Page 34: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/34.jpg)
/users/{id}/owner/users/{id}/admin/users/{id}
Una URI por cada rol de seguridad
Scenario
Byteflair
Vistas adaptativasVistas adaptativas
![Page 35: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/35.jpg)
Descomponer el recursoDar diferentes niveles de acceso a cada recurso
Scenario
/users/{id}/users/{id}/my-private-data/users/{id}/data-about-me-only-the-admin-knows
Byteflair
Vistas adaptativasVistas adaptativas
![Page 36: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/36.jpg)
Un único recursoMúltiples vistas sobre el mismo recurso
Seleccionamos la vista en runtime
Scenario
/users/{id}
Byteflair
Vistas adaptativasVistas adaptativas
![Page 37: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/37.jpg)
Actualizaciones & Concurrencia
Byteflair
![Page 38: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/38.jpg)
Dos clientes tratan de actualizar el mismo recurso de forma concurrente
La representación es el estado de la aplicación
Debemos evitar que la segunda petición actualice el recurso a partir de una representación obsoleta
Actualizaciones & ConcurrenciaActualizaciones & ConcurrenciaScenario
Byteflair
![Page 39: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/39.jpg)
Comparar la representación que llega con el recurso existente...
Actualizaciones & ConcurrenciaActualizaciones & Concurrencia
Byteflair
![Page 40: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/40.jpg)
Comparar la representación que llega con el recurso existente...
Si no son iguales, rechazar...
Actualizaciones & ConcurrenciaActualizaciones & Concurrencia
Byteflair
Podemos usar el ETAG
![Page 41: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/41.jpg)
Comparar la representación que llega con el recurso existente...
Si no son iguales, rechazar...Si es posible, informar al cliente de las violaciones
Actualizaciones & ConcurrenciaActualizaciones & Concurrencia
Byteflair
![Page 42: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/42.jpg)
Peticiones asíncronasPeticiones asíncronas
Byteflair
![Page 43: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/43.jpg)
Como identificamos peticiones intrínsecamente asíncronas?
Existen transiciones de estado fuera del control del cliente
No tiene sentido devolver una representación por que no conocemos el estado del recurso tras la llamada
Byteflair
Peticiones asíncronasPeticiones asíncronas
![Page 44: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/44.jpg)
Peticiones asíncronasPeticiones asíncronasScenario
Ok
NeedsRepair
Repaired
Awaiting
Byteflair
Los camiones se revisan regularmente y se seleccionan para reparación
![Page 45: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/45.jpg)
Peticiones asíncronasPeticiones asíncronasScenario
Ok
NeedsRepair
Repaired
Bajo mi controlAwaiting
Byteflair
Los camiones se revisan regularmente y se seleccionan para reparación
![Page 46: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/46.jpg)
Peticiones asíncronasPeticiones asíncronasScenario
Ok
NeedsRepair
Repaired
Bajo mi controlAwaiting
PUT /trucks/6/repair202 Accepted
Byteflair
Los camiones se revisan regularmente y se seleccionan para reparación
![Page 47: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/47.jpg)
Si existen peticiones que consumen mucho tiempo...
Byteflair
Peticiones asíncronasPeticiones asíncronas
![Page 48: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/48.jpg)
Si existen peticiones que consumen mucho tiempo...
las hacemos asíncronas!
Byteflair
Peticiones asíncronasPeticiones asíncronas
![Page 49: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/49.jpg)
Speaking in silverSpeaking in silveri18ni18n
Byteflair
![Page 50: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/50.jpg)
Speaking in silverSpeaking in silveri18ni18n
GET /i18n/es_ESBody{
“country” : “ES”,“lang”: “es”,“data” : { “key”: “localized message”, ….}
}
Byteflair
![Page 51: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/51.jpg)
Byteflair
API API SpecificationSpecification
![Page 52: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/52.jpg)
Byteflair
API API BlueprintBlueprintAPI API SpecificationSpecification
Apiary.io
Primera versión: Abril 2013
Objetivos: Simplicidad Interacción y dialogo entre desarrolladores y consumidores
![Page 53: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/53.jpg)
Byteflair
API API BlueprintBlueprintAPI API SpecificationSpecification
Apiary editor:https://app.apiary.io
Editor local:Atom + Snowcrash + Aglio + Atom plugin
![Page 54: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/54.jpg)
Byteflair
API API BlueprintBlueprintAPI API SpecificationSpecification
Ejemplo
![Page 55: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/55.jpg)
Byteflair
API API BlueprintBlueprintAPI API SpecificationSpecification
Gist : https://gist.github.com/victorhernandezbermejo/9d5a9448a487a71dd503
Blueprint: http://docs.bfphonebook.apiary.io/
![Page 56: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/56.jpg)
Byteflair
API API BlueprintBlueprintAPI API SpecificationSpecification
Enlaces: Sitio web:
https://apiblueprint.org/ En github:
https://github.com/apiaryio/api-blueprint Especificación del lenguaje:
https://github.com/apiaryio/api-blueprint/blob/master/API%20Blueprint%20Specification.md
![Page 57: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/57.jpg)
Byteflair
API API BlueprintBlueprintAPI API SpecificationSpecification
Algunas herramientas
Apiary: http://apiary.io
Dredd: https://github.com/apiaryio/dredd
Drakov: https://www.npmjs.com/package/drakov
Dredd: https://github.com/apiaryio/dredd
Aglio: https://github.com/danielgtaylor/aglio
![Page 58: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/58.jpg)
Byteflair
SwaggerSwaggerAPI API SpecificationSpecification
Reverb
Primera versión: Julio 2011
Objetivos: En un principio documentación de APIs ya existentes. En su versión 2.0 cambiaron el enfoque hacia el diseño y la
especificación.
![Page 59: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/59.jpg)
Byteflair
SwaggerSwaggerAPI API SpecificationSpecification
Swagger editor:http://editor.swagger.io/
En local:https://github.com/Byteflair/docker-swagger-editor
docker pull byteflair/swagger-editor docker run -d -p <port>:9000 byteflair/swagger-editor
![Page 60: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/60.jpg)
Byteflair
SwaggerSwaggerAPI API SpecificationSpecification
Enlaces: Sitio web:
http://swagger.io/ En github:
https://github.com/swagger-api Especificación del lenguaje:
https://github.com/swagger-api/swagger-spec
![Page 61: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/61.jpg)
Byteflair
SwaggerSwaggerAPI API SpecificationSpecification
Ejemplo
![Page 62: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/62.jpg)
Byteflair
SwaggerSwaggerAPI API SpecificationSpecification
Gist : https://gist.github.com/victorhernandezbermejo/efd8093ec45db46836cf
![Page 63: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/63.jpg)
Byteflair
RAMLRAMLAPI API SpecificationSpecification
Mulesoft
Primera versión: Septiembre 2013
Objetivos: Dar un mayor peso a la especificación del API Poder obtener información de todos los actores involucrados lo antes
posible.
![Page 64: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/64.jpg)
Byteflair
RAMLRAMLAPI API SpecificationSpecification
API Designer:http://api-portal.anypoint.mulesoft.com/raml/api-designer
Imagen Docker: https://github.com/Byteflair/docker-raml-editor
docker pull byteflair/raml-editordocker run -d -p <port>:9013 byteflair/raml-editor
![Page 65: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/65.jpg)
Byteflair
RAMLRAMLAPI API SpecificationSpecification
Enlaces: Sitio web:
http://raml.org/ En github:
https://github.com/raml-org Especificación del lenguaje:
https://github.com/raml-org/raml-spec
![Page 66: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/66.jpg)
Byteflair
RAMLRAMLAPI API SpecificationSpecification
Ejemplo
![Page 67: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/67.jpg)
Byteflair
RAMLRAMLAPI API SpecificationSpecification
Gist : https://gist.github.com/victorhernandezbermejo/f5db381cb4cf395f47d1
![Page 68: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/68.jpg)
Byteflair
ComparativaComparativaAPI API SpecificationSpecification
Comunidad de usuarios +
Watch Star Fork Questions
Apiary Blueprint 115 1,891 561 489
Swagger 221 2,482 822 1,541
RAML 96 1,080 77 120
Datos a fecha 16/03/2015
![Page 69: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/69.jpg)
Byteflair
ComparativaComparativaAPI API SpecificationSpecification
Comunidad de usuarios +
Watch Star Fork Questions
Apiary Blueprint 115 1,891 561 489
Swagger 221 2,482 822 1,541
RAML 96 1,080 77 120
![Page 70: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/70.jpg)
Byteflair
ComparativaComparativaAPI API SpecificationSpecification
Apiary Blueprint Swagger RAML +
![Page 71: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/71.jpg)
Byteflair
ComparativaComparativaAPI API SpecificationSpecification
Apiary Blueprint Swagger RAML +
Curva de aprendizaje
![Page 72: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/72.jpg)
Byteflair
ComparativaComparativaAPI API SpecificationSpecification
Apiary Blueprint Swagger RAML +
Curva de aprendizaje
Mock server
![Page 73: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/73.jpg)
Byteflair
ComparativaComparativaAPI API SpecificationSpecification
Apiary Blueprint Swagger RAML +
Curva de aprendizaje
Mock server
Reutilización de código
![Page 74: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/74.jpg)
Byteflair
ComparativaComparativaAPI API SpecificationSpecification
Apiary Blueprint Swagger RAML +
Curva de aprendizaje
Mock server
Reutilización de código
Expresividad
![Page 75: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/75.jpg)
Byteflair
ComparativaComparativaAPI API SpecificationSpecification
Apiary Blueprint Swagger RAML +
Curva de aprendizaje
Mock server
Reutilización de código
Expresividad
Concisión
![Page 76: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/76.jpg)
Byteflair
ComparativaComparativaAPI API SpecificationSpecification
Apiary Blueprint Swagger RAML +
Curva de aprendizaje
Mock server
Reutilización de código
Expresividad
Concisión
Herramientas
![Page 77: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/77.jpg)
Byteflair
ComparativaComparativaAPI API SpecificationSpecification
Apiary Blueprint Swagger RAML +
Curva de aprendizaje
Mock server
Reutilización de código
Expresividad
Concisión
Herramientas
Documentación
![Page 78: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/78.jpg)
Byteflair
ComparativaComparativaAPI API SpecificationSpecification
Apiary Blueprint Swagger RAML +
Curva de aprendizaje
Mock server
Reutilización de código
Expresividad
Concisión
Herramientas
Documentación
Total 27 27 35
![Page 79: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/79.jpg)
Byteflair
API API SpecificationSpecificationConclusionesConclusiones
![Page 80: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/80.jpg)
Byteflair
ToolsToolsDemoDemo
![Page 81: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/81.jpg)
Byteflair
ToolsToolsLinksLinks
Postman: http://www.getpostman.com/
Runscope: https://www.runscope.com/
Soap UI: http://www.soapui.org/
![Page 82: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/82.jpg)
Byteflair
ToolsToolsGistsGists
Gist : https://gist.github.com/victorhernandezbermejo/854271c55cba55749c1d
![Page 83: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/83.jpg)
“Las armas deben adaptarse a tus cualidades personales y
debes ser capaz de manejarlas” Miyamoto Mushashi
Byteflair
![Page 84: Todo sobre mis APIs](https://reader033.vdocuments.net/reader033/viewer/2022052311/55aa0b9d1a28ab66548b45b3/html5/thumbnails/84.jpg)
?ThanksThanks GraciasGracias
http://byteflair.com
Daniel Cerecedo@dcerecedo
Victor Hernandez@uvehachebe