35
JSON SCHEMA VALIDE E NAVEGUE ENTRE SUAS APIS

JSON Schema: Valide e navegue entre suas APIS

Embed Size (px)

Citation preview

Page 1: JSON Schema: Valide e navegue entre suas APIS

JSON SCHEMAVALIDE E NAVEGUE ENTRE SUAS APIS

Page 2: JSON Schema: Valide e navegue entre suas APIS

WILSON JÚNIOR

ENGENHEIRO DE SOFTWARE NA GLOBO.COM HÁ QUASE 3 ANOS, MANTÉM PARTE DOS SERVIÇOS DE PUBLICAÇÃO DE CONTEÚDO, APAIXONADO POR MAIS DE UMA DÉCADA POR SOFTWARE E PESSOAS.

Page 3: JSON Schema: Valide e navegue entre suas APIS

INTRODUÇÃOMONOLITO VS MICROSERVICES

Page 4: JSON Schema: Valide e navegue entre suas APIS

O JEITO DE ARQUITETAR SOFTWARE MUDOU …

Page 5: JSON Schema: Valide e navegue entre suas APIS

ERA UMA VEZ …

Page 6: JSON Schema: Valide e navegue entre suas APIS

SOFTWARE MONOLITO

Page 7: JSON Schema: Valide e navegue entre suas APIS

CARACTERÍSTICAS DE UM MONOLITO

▸ Codebase grande

▸ Toda regra de negocio

▸ Muitas pessoas mantendo

▸ Uma stack legada

▸ Alto culto de mudança

Page 8: JSON Schema: Valide e navegue entre suas APIS

CASE GLOBO-CORE AT GLOBO.COM

▸ 40+ pessoas

▸ git merge hell

▸ Difícil fazer deploy

Page 9: JSON Schema: Valide e navegue entre suas APIS

PARA RESOLVER ESSE PROBLEMA OS NOVOS MAGOS JOVENS CRIARAM UMA NOVA SOLUÇÃO …

Page 10: JSON Schema: Valide e navegue entre suas APIS

MICRO SERVIÇOS

Page 11: JSON Schema: Valide e navegue entre suas APIS

VANTAGENS DE UTILIZAR MICRO SERVIÇOS

▸ Única responsabilidade

▸ Pequenos times

▸ Rápido de escrever

▸ Stack independente

▸ Banco de dados isolado

Page 12: JSON Schema: Valide e navegue entre suas APIS

EXEMPLO GLOBO.COM

AUTENTICAÇÃO API DE CONTEÚDOS

API DE VÍDEOS API SEMÂNTICA

CLIENTE RENDERIZADOR DE CONTEÚDO

ADMIN SPA

Page 13: JSON Schema: Valide e navegue entre suas APIS

COMO OS SERVIÇOS SE INTERAGEM

▸ HTTP - Restful

▸ JSON

▸ N Clients

Page 14: JSON Schema: Valide e navegue entre suas APIS

CONSEQUÊNCIA DE VÁRIAS APIS

Page 15: JSON Schema: Valide e navegue entre suas APIS

CONSEQUÊNCIA DE VÁRIAS APIS

▸ Muitos contratos para manter

▸ Muita documentação

▸ Validação

▸ Descobrir os endereços

▸ Lidar com breaking changes

▸ Difícil navegação

Page 16: JSON Schema: Valide e navegue entre suas APIS

JSON SCHEMA!

Page 17: JSON Schema: Valide e navegue entre suas APIS

VANTAGENS

▸ Descreve o formato dos dados

▸ limpa para leitura de máquinas e humanos

▸ Completa estrutura de validação

Page 18: JSON Schema: Valide e navegue entre suas APIS

EXEMPLO

{ "id": 1000501, "name": "Wilson Júnior", "city": { "name": "Rio de Janeiro", "state": "RJ" }, "age": 24 }

Page 19: JSON Schema: Valide e navegue entre suas APIS

{ "$schema": "http://json-schema.org/draft-04/schema#", "title": "Pessoa", "type": "object", "properties": { "id": { "type": "number", "title": "Identifier" }, "name": { "type": "string", "minLength": 3, "title": "Person name" }, "city": { "title": "City", "type": "object", "description": "Where person lives", "properties": { "name": { "type": "string", "title": "Name"}, "state": { "type": "string", "title": "State", "enum": ["RJ", "SP", "GO"]} } }, "age": { "type": "number" } }, "required": ["name", "city"] }

Page 20: JSON Schema: Valide e navegue entre suas APIS

CONSEQUÊNCIA VALIDAÇÃO CLIENT-SIDE E SERVER-SIDE

Page 21: JSON Schema: Valide e navegue entre suas APIS

JÁ PODEMOS VALIDAR, O QUE MAIS FALTA …

Page 22: JSON Schema: Valide e navegue entre suas APIS

NAVEGAR ENTRE AS APIS

Page 23: JSON Schema: Valide e navegue entre suas APIS

JSON HYPER-SCHEMA

Page 24: JSON Schema: Valide e navegue entre suas APIS

▸ Descreve a sua API

▸ Descreve links

▸ Descreve formulários

Page 25: JSON Schema: Valide e navegue entre suas APIS

EXEMPLO{ "$schema": "http://json-schema.org/draft-04/schema#", "title": "Pessoa", "type": "object", ... "links": [ { "rel": "photos", "href": “http://my-photo-service/by-person/{id}“ } ] }

Page 26: JSON Schema: Valide e navegue entre suas APIS

TEXT

EXEMPLO (MANUTENABILIDADE){ "$schema": "http://json-schema.org/draft-04/schema#", "title": "Pessoa", "type": "object", ... "links": [ { "rel": "photos", "href": “http://my-photo-v2/photos/{id}“ }, { "rel": "delete", "href": "/api/person/{id}", "method": "DELETE" } ] }

Page 27: JSON Schema: Valide e navegue entre suas APIS

COMO EU AMARRO UM SCHEMA A UM RECURSO DENTRO DE UMA API RESTFUL

Page 28: JSON Schema: Valide e navegue entre suas APIS

curl -i http://myapi.com/people/1000501 HTTP/1.1 200 OK

Content-Type: application/json; charset=utf-8; profile=“http://myapi.com/schemas/people”

{“id”: “xpto”, …}

Page 29: JSON Schema: Valide e navegue entre suas APIS

FERRAMENTAS

Page 30: JSON Schema: Valide e navegue entre suas APIS

VALIDAÇÕES

▸ Python: github.com/Julian/jsonschema

▸ GO: github.com/xeipuuv/gojsonschema

▸ Ruby: github.com/ruby-json-schema/json-schema

▸ Javascript: geraintluff.github.io/tv4/

▸ Mais em: json-schema.org/implementations.html

Page 31: JSON Schema: Valide e navegue entre suas APIS

TEXT

PLUCT

github.com/globocom/pluct

import pluct

# Load a resource item = pluct.resource('http://myapi.com/people/1000501') photos = item.rel('photos', params={'q': 'Roupa bonita'})

Page 32: JSON Schema: Valide e navegue entre suas APIS

TECNOLOGIAS ALTERNATIVAS/RELACIONADAS

▸ GRPC

▸ JSON-LD

▸ GraphQL

Page 33: JSON Schema: Valide e navegue entre suas APIS

GOSTOU DA TECNOLOGIA ?

Page 34: JSON Schema: Valide e navegue entre suas APIS

VENHA TRABALHAR COM A GENTE

talentos.globo.com

Page 35: JSON Schema: Valide e navegue entre suas APIS

OBRIGADO

▸ Github: wpjunior

▸ Outras redes sociais: about.me/wpjunior