Slide 1

Slide 1 text

Creando Web APIs con GraphQL Por Por Omar Berroteran Silva Omar Berroteran Silva J.U.G Nicaragua J.U.G Nicaragua

Slide 2

Slide 2 text

2 Un poco de mí... @berroteranLKF Ómar Berroterán Silva. Consultor Independiente. +15 años como Developer Full Stack +15 años en java +15 años Linuxero (Gentoo & Fedora) ● Blogger, Gamer, Linux contributor. ● Robotica Educativa. ● Entrenador. ● Conferencista nacional e internacional ● Developer Advocate

Slide 3

Slide 3 text

3 Contenido 1)Una breve introduccion: Que es GrahpQL 2)Cuales son sus ventajas y observaciones 3)Implementaciones en Java 4) DEMO

Slide 4

Slide 4 text

4 ¿Que es un A.P.I.? Interfaz de programación para Aplicaciones. API + Webservice (SOAP o REST) = WEB API

Slide 5

Slide 5 text

5 Un WebService REST, Estandart

Slide 6

Slide 6 text

6 RESTful school mode. web-Api

Slide 7

Slide 7 text

7 Rest ● /getClienteByID ● /ClienteMinimo ● /ClienteDireccion ● /Usuario ● /UsuarioRoles ● /UsuarioNombre ● /ClienteSaldo ● /ClientePedidos

Slide 8

Slide 8 text

8 GraphQL : Lenguaje de Consultas Graph https://graphql.org/

Slide 9

Slide 9 text

9 ¿Que es GraphQL ? GraphQL no es una librería o framework: es una especificación de cómo implementarlo en cualquier lenguaje.(casi same RESTful) (2012 - 2015) Por tal razón existen implementaciones ya creadas en lenguajes como JavaScript, Ruby, Python, Scala, Java, Clojure, Go, PHP, .NET, etc. También existen clientes para consumir un API GraphQL desde JS, iOS, Android, React, Angular, entre otras.

Slide 10

Slide 10 text

10 ¿Como Funciona?

Slide 11

Slide 11 text

11 Características Principales 1) Un solo EndPoint (personalizado) /graphql 2) Lenguaje (Query) 3) “fuertemente tipado” 4) POO

Slide 12

Slide 12 text

12 CONCEPTOS

Slide 13

Slide 13 text

13 Formas de Interactuar 1

Slide 14

Slide 14 text

14 Formas de Interactuar 1

Slide 15

Slide 15 text

15 Formas de Interactuar 2: mutación

Slide 16

Slide 16 text

16 Formas de Interactuar 3: Subscripcion Recibir notificaciones, Enterarse de lo que pasa en el servidor. No esta implementado en todos. WebSockets

Slide 17

Slide 17 text

17 Formas de Interactuar 3: Subscripción

Slide 18

Slide 18 text

18 Formas de Interactuar 4: Introspección A menudo es útil pedir un esquema de GraphQL para obtener información sobre las consultas que admite.

Slide 19

Slide 19 text

19 test

Slide 20

Slide 20 text

20 Herramientas Graphil http://graphql.org/learn/ https://www.howtographql.com/ Apollo GraphQL : react, ios, android, server https://github.com/apollographql Ports a casi todas las plataformas.

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

22 Ventajas de GraphQL - Un solo EndPoint (mantemimiento) - PayLoad (definido x por el cliente, redux, relay) - IntrosPeccion ( Desarrollado ) - Especificacion ( Implementacion, documentado ) - Releases ( CI, versionado ) - Documentación (GraphFiQL) - Suscripciones (Automáticas) - validaciones, seguridad, restricciones. (tipado)

Slide 23

Slide 23 text

23 Aceptacion https://nordicapis.com/10-awesome-tools-and-extensions-for-graphql-apis/

Slide 24

Slide 24 text

24 Java: Implementacion ¿Que tener en cuenta? - Conceptos - Arquitectura - Implementación (Introspeccion) - Es algo que y conocemos. Fuertemente tipiado y todo es un Objeto, json

Slide 25

Slide 25 text

25 Java: ¿Que tener en cuenta?

Slide 26

Slide 26 text

26 Equema (Scheme)

Slide 27

Slide 27 text

27 Consultas (QUERY)

Slide 28

Slide 28 text

28 MUTACIONES:

Slide 29

Slide 29 text

29 GraphiQL (Grafical) Es la herramienta de consultas en tiempo real del desarrollador cliente.

Slide 30

Slide 30 text

30 Implementacion a GranEscala

Slide 31

Slide 31 text

31 Implementacion a GranEscala

Slide 32

Slide 32 text

32 CLIENTES

Slide 33

Slide 33 text

33 Clientes WEB

Slide 34

Slide 34 text

34 Clientes :

Slide 35

Slide 35 text

35 SEGURIDAD Al ser una especificación se puede aplicar la seguridad de cada plataforma, y en el servidor que se esté ejecutando, también: - vía programación (mutator) - SSL / VPN - via keyCloACK - Apache Shiro - Oauth

Slide 36

Slide 36 text

36 Páginas para probar/trastear, test. ● https://github.com/APIs-guru/graphql-apis ● https://docs.github.com/en/graphql ● https://gitlab.com/-/graphql-explorer

Slide 37

Slide 37 text

37 Comentarios Finales ¿Es la solución definitiva? PRO Y CONTRAS Nueva solucion, Nuevos problemas. Restricciones - migración - legacy Opciones: - reuso: > API REST con HyperMedia. !

Slide 38

Slide 38 text

38 http://graphql.org/swapi-graphql/

Slide 39

Slide 39 text

39 Muchas Gracias, ¿Preguntas? @berroteranLKF