Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SOAP x REST x GraphQL

SOAP x REST x GraphQL

Apresentação realizada em Setembro de 2020, em evento interno da IXCSoft, Chapecó - SC, Brasil.

Marcos Marcolin

September 22, 2020
Tweet

More Decks by Marcos Marcolin

Other Decks in Programming

Transcript

  1. Comunicação entre aplicações • É a capacidade de sistemas trocarem

    informações. • Mas como isso é feito? ◦ Simples, através de um Webservice.
  2. Comunicação entre aplicações • É a capacidade de sistemas trocarem

    informações. • Mas como isso é feito? ◦ Simples, através de um Webservice. • Ok, mas o que é um Webservice?
  3. Webservice • É uma solução utilizada na integração entre sistemas

    e na comunicação entre aplicações diferentes. Fonte: http://ninjadolinux.com.br/web-services-soap-e-rest/
  4. API • API significa Application Programming Interface, a qual provém

    rotinas para acesso à dados de um Software. Fonte: https://phppot.com/php/php-mysql-rest-api-for-android/
  5. SOAP • Simple Object Access Protocol; • Baseado em XML(Envelope,

    regras/tipos de dados e o layout); • Método de transporte genérico(HTTP, JMS, SMTP, etc).
  6. SOAP • Simple Object Access Protocol; • Baseado em XML(Envelope,

    regras/tipos de dados e o layout); • Método de transporte genérico(HTTP, JMS, SMTP, etc). • Conjunto de regras e padrões estabelecidas(W3C);
  7. SOAP • Simple Object Access Protocol; • Baseado em XML(Envelope,

    regras/tipos de dados e o layout); • Método de transporte genérico(HTTP, JMS, SMTP, etc). • Conjunto de regras e padrões estabelecidas(W3C); • V.1.1(2000) e V.1.2(2007).
  8. Não podemos esquecer do WSDL! WSDL ou Web Service Description

    Language é uma linguagem baseada em XML, utilizada para descrever um Web Service. Um Web Service deve, portanto, definir todas as suas interfaces, operações, esquemas de codificação, entre outros neste documento. Exemplo: http://IP/wsadmin/ws.asmx?wsdl
  9. IXC usa SOAP? • NF; • SMS; • VoIP; •

    Integração SOA(Serasa); • Outros?
  10. REST • REST significa Representational State Transfer, é uma abordagem

    de design estrutural para criação de aplicações baseadas em requisições HTTP.
  11. REST • REST significa Representational State Transfer, é uma abordagem

    de design estrutural para criação de aplicações baseadas em requisições HTTP. Fonte: https://www.seobility.net/en/wiki/REST_API
  12. RESTful • RESTful é a API que está de acordo

    com todas as restrições definidas por Roy T. Fielding no ano de 2000, em sua tese de Doutorado.
  13. RESTful • Client-Server ◦ Separação de tarefas entre os lados;

    ◦ Ex: ▪ Cliente não se preocupa como manipular o banco; ▪ Servidor não se preocupa com experiência do usuário;
  14. RESTful • Uniform Interface ◦ É um contrato para a

    comunicação entre cliente e servidor; ◦ Sem querystring, utiliza recursos/rotas; ◦ As respostas são auto-descritivas, incluindo informação suficiente para que o cliente saiba como utilizá-las. ◦ API deve ser um “livro aberto”.
  15. RESTful • Stateless ◦ Requisições independentes; ◦ Servidor não guarda

    informações do estado do cliente; ◦ Informações ficam no cliente, à exemplo de uma sessão.
  16. RESTful • Cacheable ◦ Quando houver várias requisições da mesma

    resource, a resposta pode ser a mesma, através do cache; ◦ API determina como irá fazer isso.
  17. GraphQL • Linguagem de consulta para API; • Criada pelo

    Facebook em 2012; • Alternativa para REST e demais arquiteturas.
  18. GraphQL • Não é um banco de dados; • Não

    é um ORM; • Não é um framework; • Desconhece verbos HTTP;
  19. GraphQL TUDO no GraphQL é um tipo! Associe tipo à

    uma entidade do banco de dados.
  20. GraphQL TUDO no GraphQL é um tipo! Associe tipo à

    uma entidade do banco de dados.
  21. Caso de Uso 1 • Vamos supor que nosso cliente

    queira trazer dados do Canal do Youtube, Playlist e vídeos, como procederia em uma abordagem REST?
  22. Caso de Uso 2 • Vamos supor que nosso cliente

    queira trazer dados do Cliente, Contratos e Logins. Como procederia em uma abordagem REST?
  23. REST • Chamadas para endpoint: ◦ https://IP/clientes/:id {Dados do cliente}

    ◦ https://IP/clientes/:id/contratos {Dados dos contratos do cliente}
  24. REST • Chamadas para endpoint: ◦ https://IP/clientes/:id {Dados do cliente}

    ◦ https://IP/clientes/:id/contratos {Dados dos contratos do cliente} ◦ https://IP/clientes/:id/contratos/:id/logins {Logins do contrato do cliente}
  25. REST • Chamadas para endpoint: ◦ https://IP/clientes/:id {Dados do cliente}

    ◦ https://IP/clientes/:id/contratos {Dados dos contratos do cliente} ◦ https://IP/clientes/:id/contratos/:id/logins {Logins do contrato do cliente} ▪ https://10.65.1.230/clientes/25/contratos/1350/logins
  26. REST • Chamadas para endpoint: ◦ https://IP/clientes/:id {Dados do cliente}

    ◦ https://IP/clientes/:id/contratos {Dados dos contratos do cliente} ◦ https://IP/clientes/:id/contratos/:id/logins {Logins do contrato do cliente} ▪ https://10.65.1.230/clientes/25/contratos/1350/logins ▪ https://10.65.1.230?clientes=25&contratos=1350&logins
  27. REST Desta maneira, acessamos 3 endpoints para ter as informações

    necessárias para nossa aplicação, portanto, 3 chamadas diferentes no servidor.
  28. REFERÊNCIAS • https://www.php.net/manual/pt_BR/soapclient.soapcall.php • https://www.youtube.com/watch?v=ONAW9mK4-X0 • https://ezdevs.com.br/graphql-x-rest-qual-utilizar/ • https://blog.novatics.com.br/graphql-655896c8faed •

    https://tableless.com.br/graphql-a-nova-era-das-apis-web/ • https://www.php.net/manual/pt_BR/book.curl.php • https://graphql.org/ • https://insomnia.rest/ • https://www.soapui.org/downloads/soapui/ • https://github.com/marcosmarcolin/api_rest_php_nativo • https://lucasconstantino.github.io/graphiql-online/ • https://github.com/alefesouza/talk-graphql-php • https://github.com/marcosmarcolin/api_rest_php_nativo