Você está na página 1de 18

12/04/2017 OData,RESTeaSAPBar8

Images havent loaded yet. Please exit printing, wait for images to load, and try to
Erick Carvalho Follow
print again.
Agilista, Desenvolvedor e quando no est discutindo TDD est sendo repreendido por algum coment
Sep 22, 2016 14 min read

OData, REST e aSAP


SAP colocando a bunda para fora da janela, a do sistema
no a suaAntelio I.Abe

E aweeeeeee meu povo maravilhoso!

Acredito que quem esta acompanhando minha srie de publicaes j


percebeu que na hora de colocar a mo na massa o meu real fascnio
no back-end.

Hoje o foco aqui conversar um pouco sobre OData, mas como voc
j me conhece muito bem sou completamente incapaz de iniciar
qualquer assunto sem que eu tenha certeza que no estarei falando
grego, por isso vou voltar um pouco em alguns conceitos que sero a
base da nossa conversa.

#DICA Se voc se ABAP


PI/SOPADELETRINHASPRAAUMENTARTAXA e no conhecer bem o
que vamos conversar aqui, e isso por voc no passar de um criador
de interfaces, o que eu posso dizer Shame on you.

https://bar8.com.br/abapsapgatewaywebserviceodata3206b247ea13 1/18
12/04/2017 OData,RESTeaSAPBar8

This embedded content is from a site that


does not comply with the Do Not Track
(DNT) setting now enabled on your browser.

Please note, if you click through and view it


anyway, you may be tracked by the website
hosting the embed.

Learn More about Medium's DNT policy


Espero que a sopa de letrinhas te aquea quando o inverno chegar;)

Web services
Antes de qualquer introduo muito importante ressaltar que existe
uma arquitetura para Web services. Esta arquitetura conhecida
como Orientada a Servios, mas antes voc precisa familiarizar-se
com o que constitui a plataforma de computao orientada a servio.
Para entender totalmente a computao orientada a servios, voc
precisa compreender o signicado e a importncia de seu bloco
fundamental de construo: O Servio.

Quando converso sobre o que o Web Services (WS) costumo deni-


lo de forma simples:

Web services uma fonte de dados acessada por uma rede local ou pela
internet. Permitindo a exposio de dados armazenados sem que seja
necessrio o fornecimento de acesso a servidores ou banco de dados.

E ai ta difcil? No entendeu? Seguinte, observe o site aberto abaixo:

https://bar8.com.br/abapsapgatewaywebserviceodata3206b247ea13 2/18
12/04/2017 OData,RESTeaSAPBar8

segue l @_Erickfc

Acredito que a grande maioria reconhece a pagina acima como sendo


a uma pagina que mostra a timeline do Twitter.

Para ns como usurios ela serve perfeitamente, consigo olhar as


postagens das pessoas que eu sigo, consigo twitar e etc. No entanto,
eu como desenvolvedor poderia querer utilizar apenas as
informaes, como por exemplo para ler, remover ou postar, isso pois
posso ter o desejo de incorporar estes comportamento em meu site
porm sem toda infra-estrutura de interfaces do Twitter.

Se voc no esta acostumado com o ambiente web deve estar achando


isso uma maluquice, porm boa parte dos sites disponibilizam um
recurso conhecido como WS ou em bom portugus os nossos queridos
Servios, onde voc capaz de obter resultados porm sem os
elementos grcos, apenas as informaes, veja abaixo:

https://bar8.com.br/abapsapgatewaywebserviceodata3206b247ea13 3/18
12/04/2017 OData,RESTeaSAPBar8

A informao acima fornecida pelo servio do Twitter e est


formatada, neste exemplo o formato o JSON mas poderia estar
formatado no padro XML.

Essa formatao necessria pois acontece que os dados no podem


ser enviados de qualquer forma, eles devem ser estruturados antes de
serem enviados.

XML eJSON
Informaes precisam ser armazenados de forma:

Estruturada, Organizada e Semntica;

https://bar8.com.br/abapsapgatewaywebserviceodata3206b247ea13 4/18
12/04/2017 OData,RESTeaSAPBar8

Caso contrrio seria impossvel localizar determinada informao.


Ns desenvolvedores ABAPers sabemos muito bem disso. O que seria
de ns se no tivssemos as tabelas do banco de dados para podermos
montar nossos lindos relatrios?

Ento o WS cuja nalidade receber e prover informaes, precisa


respeitar uma estrutura pr denida para que a comunicao entre
mquinas acontea com sucesso e de forma satisfatria.

As duas formas mais usuais de estruturar os dados quando trabalhamos com webservices

XMLExtensible MarkupLanguage
uma das recomendaes da W3C para gerar linguagens de
marcao.

um tipo de SGML (Standard Generalized Markup Language ou


Linguagem Padronizada de Marcao Genrica Ainda vamos conversar
sobre isso aqui no Bar8) capaz de descrever diversos tipos de dados.

Seu propsito principal a facilidade de compartilhamento de


informaes atravs da web.

XML Introduction
Well organized and easy to understand Web building
tutorials with lots of examples of how to use HTML, CSS,
JavaScript
www.w3schools.com

JSONJavaScript ObjectNotation

https://bar8.com.br/abapsapgatewaywebserviceodata3206b247ea13 5/18
12/04/2017 OData,RESTeaSAPBar8

uma maneira de armazenar informaes de forma organizada e de


fcil acesso. Em poucas palavras, ele nos d uma coleo legvel de
dados que podem ser acessados de forma muito lgica.

JSON um formato de texto que completamente independente de


linguagens, mas usa convenes que so familiares aos
programadores de C, C++, C#, Java, JavaScript, Perl, Python, e
muitas outras.

JSON Tutorial
Well organized and easy to understand Web building
tutorials with lots of examples of how to use HTML, CSS,
JavaScript
www.w3schools.com

XML Vs.JSON
No quero me estender sobre essa batalha antiga e espero de verdade
que isso no seja um spoiler para voc, mas o JSON sem dvida
alguma o melhor caminho.

E por que ainda falar de XML? Simples, hoje o maior motivo para
utilizao do XML devido a funcionalidade de schema, onde as
regras de modelagem so explicitadas. Assim, temos o XML como
mais antigo que o JSON, o que resulta que existem muitas
implementaes j consolidadas.

Um timo exemplo disto o XML de Nota Fiscal Eletrnica, a


implementao por meio de JSON no seria to adequada para este
cenrio.

Porm para as recentes implementaes que vm ocorrendo o JSON


a escolha certa, pois o JSON possui similaridades com o XML nos
seguintes aspectos:

JSON texto simples;


JSON auto-descritivo (legvel);
JSON hierrquico (valores dentro de valores);
JSON pode ser analisado pelo JavaScript;
JSON os dados podem ser transportadas usando AJAX;

Mas ganha muito destaque quando o assunto :

https://bar8.com.br/abapsapgatewaywebserviceodata3206b247ea13 6/18
12/04/2017 OData,RESTeaSAPBar8

No utiliza a tag de fechamento;


No faz uso dos caracteres "<" e ">" o que torna menos custoso;
mais curto e simples;
mais rpido de ler e escrever;
Pode ser analisado usando a funo eval() do JavaScript caso voc seja
novato nas webs ainda vai agradecer por esse recurso;
Utiliza matrizes;
No possui palavras reservadas;
Possui parser nas principais linguagens e navegadores;

JSON ganhou muito mais visibilidade com a ascenso do AJAX, mas


tm todo o mrito de seu sucesso, por ser menor do que XML, mais
rpido e mais fcil de analisar.

Mas como estvamos conversando, tanto o XML quanto o JSON so


apenas maneiras de formatar a informao, vamos ento para a ao,
e entender um pouco mais sobre como prover ou receber toda essa
informao formatada.

RESTRepresentational StateTransfer
A maioria dos desenvolvedores expem seus servios utilizando REST,
que faz uso de um padro de URI (Uniform Resource Identier),
assim fazendo uma chamada para um WS como no exemplo do
twitter apresentado acima.

. . .

[OFF-Topic] muito importante que esteja claro as diferenas entre


URL, URI e URN, se no est seguem abaixo as denies:

URI ou Identicador Uniforme de Recursos ou Uniform Resource


Identier (em ingls) uma cadeia de caracteres compacta usada para
identicar ou denominar um recurso na Internet. O principal
propsito desta identicao permitir a interao com
representaes do recurso atravs de uma rede, tipicamente a Rede
Mundial, usando protocolos especcos. URIs so identicados em
grupos denindo uma sintaxe especca e protocolos associados.

Um Nome Uniforme de Recurso, URN (do ingls Uniform Resource


Name) um tipo de URI que usa o URN Scheme e que tem por
objetivo a identicao nica do recurso, de forma persistente e
independente da sua localizao.

https://bar8.com.br/abapsapgatewaywebserviceodata3206b247ea13 7/18
12/04/2017 OData,RESTeaSAPBar8

Um URL (de Uniform Resource Locator), em portugus Localizador-


Padro de Recursos, o endereo de um recurso (como um arquivo,
uma impressora etc.), disponvel em uma rede; seja a Internet, ou
mesmo uma rede corporativa como uma intranet.[/OFF-Topic]

. . .

REST uma metodologia utilizada para implementar um WS. Uma


forte caracterstica de um WS implementado com o REST a
utilizao do protocolo HTTP para transporte de dados, o que algo
extremamente benco, pois o protocolo a base da web e utiliza
verbos como PUT, POST, GET, DELETE, HEAD, OPTIONS ou TRACE
para determinar o tipo de ao a ser tomada.

Ento j que REST faz uso do protocolo HTTP, caractersticas como as


descritas abaixo so inevitveis:

Ele usa o protocolo HTTP (verbos, accept headers, cdigos de


estado HTTP, Content-Type) de forma explcita e representativa
para se comunicar. URIs so usados para expor a estrutura do
servio. Utiliza uma notao comum para transferncia de dados
como XML ou JSON.

No possui estado entre essas comunicaes, ou seja, cada


comunicao independente e uniforme (padronizada)
precisando passar toda informao necessria.

Ele deve facilitar o cache de contedo no cliente.

Deve ter clara denio do que faz parte do cliente e do servidor.


O cliente no precisa saber como o servidor armazena dados, por
exemplo. Assim cada implementao no depende da outra e se
torna mais escalvel.

Permite o uso em camadas tambm facilitando a escalabilidade,


conabilidade e segurana.

Frequentemente criado com alguma forma de extensibilidade.

E ai temos com certeza um post certo para o futuro, como existem


hoje diversos ABAPers que por fazerem ALV utilizando a classe SALV
acham que sabem orientao a objeto, certamente havero ABAPers
que no sabero metade das caractersticas do protocolo HTTP e diro
que esto criando servios RESTful.

. . .

https://bar8.com.br/abapsapgatewaywebserviceodata3206b247ea13 8/18
12/04/2017 OData,RESTeaSAPBar8

[OFF-Topic] Uma grande confuso que ocorre sobre qual a diferena


entre REST e RESTful, confuso essa que acredito que acontea muito
por questes de tradues. REST caracterizado como um paradigma
de arquitetura a ser seguido, enquanto que o o RESTful a aplicao
desse paradigma, simplesmente o servio em si. [/OFF-Topic]

. . .

Outra caracterstica que o REST no guarda o estado da


comunicao, isso quer dizer que o REST STATELESS, isso signica
que o WS no deve manter um estado do cliente no servidor.
responsabilidade do cliente passar seu contexto para o servidor, e
ento o servidor baseado neste novo contexto pode processar o novo
pedido do cliente. O que ser dos ABAPers Old School sem variveis
globais segurando valores desde o comeo da aplicao?

Ah, e falando em Old School uma outra tecnologia que pode ser
utilizada para expor um WS o SOAP, essa que sem dvida alguma
o av das interfaces de servios web, no deixar de ser usado to
cedo. Quem consome o servio da SEFAZ sabe muito bem disso.

Mas REST Vs. SOAP outra batalha que deixaremos para outro dia,
mas ca ai a meno. Ambas as tecnologias possuem pontos fortes e
fracos, e que voc como desenvolvedor tem mais que a obrigao de
conhecer.

Mais sobre REST:

Fielding Dissertation: CHAPTER 5:


Representational State Transfer REST
This chapter introduces and elaborates the
Representational State Transfer REST architectural style
for distributed
www.ics.uci.edu

O Protocolo ODataOpen DataProtocol


Ai um belo dia o mundo se v perdido numa innidade de dados
disponveis, e necessita realizar a comunicao de forma transparente
e padronizada entre sistemas. Isso conhecido como
interoperabilidade e to difcil quanto falar essa palavra bota-la em
ao.

https://bar8.com.br/abapsapgatewaywebserviceodata3206b247ea13 9/18
12/04/2017 OData,RESTeaSAPBar8

O OData veio para isto, ele nada mais que um protocolo Web
baseado em padres amplamente difundidos tais como HTTP, Atom
Publishing Protocol (AtomPub) e JSON.

O OData uma iniciativa de cdigo aberto da Microsoft e algumas


outras empresas para criar um padro de intercmbio de dados entre
aplicaes na web, porm hoje administrado por uma organizao
chamada OASIS.

. . .

Agora aquele momento de escovar bit para entender o porque esse


o melhor protocolo.

Conforme publicado pela AtomPub, apropriado para exposio de


servios os quais necessitam de uma interface com padro exvel,
com a nalidade de garantir operaes como criar, recuperar,
apagar ou atualizar (Vulgo, CRUD). O documento que descreve
muito bem o protocolo OData o RFC5023 publicado pela AtomPub,
e est disponvel aqui.

Em resumo o que esta descrito na RFC5023 que se o seu servio vai


fazer um CRUD em dados genricos o OData a escolha certa.

No entanto, existe um grande perigo no que descrevi acima, pois ao


utilizar o REST voc NO deve trata-lo como um ODBC (padro para
acesso a sistemas gerenciadores de bancos de dados SGBD), pois
quando trabalhamos com um ODBC a granularidade das informaes
mais na.

O que tudo isso signica? Seguinte, enquanto que quando voc inicia
seu desenvolvimento voc deve estar atento todo o tempo com coeso
e acoplamento, no servio temos um outro conceito que a
granularidade.

A granularidade de servios utilizada para mensurar a


profundidade da abstrao aplicada em seus servios.

A granularidade pode ser caracterizada como na ou grossa, segue


abaixo suas caractersticas:

Granularidade na (ne-grained): Teremos servios com poucas


operaes, mas dividiremos essas operaes por vrios servios.

. . .

https://bar8.com.br/abapsapgatewaywebserviceodata3206b247ea13 10/18
12/04/2017 OData,RESTeaSAPBar8

Granularidade grossa (coarse-grained): Teremos poucos servios, mas


cada um deles conter uma poro bem maior de operaes.

Assim, granularidade de servio o grau de modularidade dos


servios ou o escopo da funcionalidade exposto por um servio. Um
servio de granularidade na implica em mais exibilidade, por outro
lado, um servio de granularidade grossa possui grandes pedaos de
capacidade funcional.

Voltando ao ODBC, nessa arquitetura trabalhamos em uma camada


onde permitido que o cliente possa iniciar diversas transaes ao
banco de dados atravs de mltiplas requisies, isso quer dizer,
basicamente a forma como voc cria hoje o seu report ou module
pool.

Por isso evidenciei que ao trabalharmos com o REST no devemos


trata-lo simplesmente como um ODBC. As caractersticas da
granularidade de se trabalhar com servio e ODBC so diferentes.

J vi e li muita discusso sobre o assunto, mas as caractersticas de


granularidade referentes a servios que melhor tive experincias
foram as de servios com a granularidade grossa.

Outro ponto que utilizando o REST trabalhamos em uma camada


completamente diferente da ODBC onde os dados de uma consulta
no so mantidos no lado servidor, assim caso voc queira utiliza-los
novamente ter que realizar uma nova requisio, pois como j
conversamos nesse texto, uma das premissas da arquitetura REST
ser STATELESS.

Ento muito cuidado quando voc estiver fazendo cursos da Open


SAP e se deparar com a seguinte frase:

OData o ODBC da Web.

#DICA

[Obrigao de Leitura] Leia atentamente:

RFC 7231 Hypertext Transfer Protocol


HTTP/1.1: Semantics and Content
Internet Engineering Task Force IETF R. Fielding, Ed.
Request for Comments: 7231 Adobe Obsoletes: 2616 J.
Reschke, Ed
tools.ietf.org

https://bar8.com.br/abapsapgatewaywebserviceodata3206b247ea13 11/18
12/04/2017 OData,RESTeaSAPBar8

E depois assista esse video onde exposto que Rest no apropriado


para fazer CRUD:

Confreaks TV| CRUD is not REST Hypermedia for Y&#39;All!


Rocky Mountain Ruby 2011
Confreaks TVconfreaks.tv

Ou voc receber a seguinte indicao de leitura quando comear a


criar seus servios:

Vai arriscar?

EnmSAP Netweaver Gateway

https://bar8.com.br/abapsapgatewaywebserviceodata3206b247ea13 12/18
12/04/2017 OData,RESTeaSAPBar8

Ento atravs do OData o SAP Netweaver Gateway oferece tecnologia


para exposio de seu WS.

Entretanto, o SAP Gateway no o nico que pode se comunicar com


sistemas externos, outra forma bem conhecida o sistema SAP PI,
muito utilizado tambm para troca de informaes entre diferentes
sistemas, ainda mais quando os sistemas envolvidos so sistemas de
terceiros.

Mas ai voc deve esta pensando, por que a SAP faria sistemas com
atribuies to semelhantes? O SAP PI utilizado na comunicao
entre sistemas, como no caso do GRC que faz comunicao com a
SEFAZ, enquanto que o SAP Gateway utilizado entre Cliente-
Servidor, como no caso do SAP UI5.

Ferramentas para testar seusservios


E esse tpico no vou entrar muito em detalhes, mas quem sabe o
Felipe Carvalho no faz um post maneiro expondo sua experincia
com a ferramenta Postman.

Postman
Postman is the swiss army knife of API tools, allowing
you to design, build, test, document and monitor your
services
www.getpostman.com

Utilizo o Postman diversos projetos como uma forma de interagir com


APIs que estou escrevendo ou que simplesmente estou consumindo.

https://bar8.com.br/abapsapgatewaywebserviceodata3206b247ea13 13/18
12/04/2017 OData,RESTeaSAPBar8

Postman um aplicativo do Google Chrome para interagir com APIs


HTTP. Ele apresenta uma interface grca muito bacana para
construir solicitaes e ler as respostas.

O Postman tambm oferece um pacote de add-on chamado Jetpacks,


que inclui algumas ferramentas de automao, e mais importante,
uma biblioteca de testes em Javascript.

Mas caso voc seja mais clssico outra ferramenta o SoapUI, segue
a dica:

SoapUI | Functional Testing for SOAP and REST


APIs
SoapUI, is the world leading Open Source Functional
Testing tool for API Testing. It supports multiple
protocols such
www.soapui.org

E a idia de apresentar essas ferramentas de lhe tirar da caverna e


mostrar que existe uma vida bem interessante fora do SAP.

Concluso
Quando comecei a escrever este post no achei que caria to grande,
tentei ser o mais direto possvel, mas foi inevitvel todas as
referncias. O foco mostrar todo o contexto que o OData est
embutido. Dessa forma, voc que est comeando a se aventurar deve
ser pragmtico e um desenvolvedor de verdade ao estudar sobre o
assunto.

Depois de todo esse texto minhas consideraes para voc que esta
comeando so as seguintes:

Exponha servios, no dados A camada de servio no simples


de trabalhar, basta um descuido e voc estar com um cdigo
anmico, onde toda a lgica de negcio poder estar na mo do
cliente, o que descentralizar seu servio e forar o cliente a realizar
muitas requisies ao servidor.

Cuidado com a granularidade Tudo o que conversamos nas


publicaes sobre S.O.L.I.D ganham uma ateno mais que especial
aqui juntamente com o conceitos de DDD, pois a granularidade do
seu servio no pode ser muito na, caso contrrio seus servios
sofrero com uma enorme quantidade de requisies que sero

https://bar8.com.br/abapsapgatewaywebserviceodata3206b247ea13 14/18
12/04/2017 OData,RESTeaSAPBar8

disparadas para executar pequenas tarefas. Seus servios devem


realizar uma quantidade signicativa de tarefas, para evitar um
nmero alto de roundtrips!

JSON sempre E se com todos os pontos que eu levantei no texto


sobre o porque usar JSON, voc ainda tiver dvidas sobre isso, no
nessa concluso que vou lhe convencer.

. . .

Lembre-se que o ambiente WEB j existe a muitos anos, e no passou


a existir agora que a SAP disponibilizou o SAP Gateway. Isso signica
que o novato aqui voc.

E por que estou sendo to direto? No vou generalizar mas tenho


certeza que a maior parte de desenvolvedores ABAPers-huehuebr
atuantes hoje, tiveram muito pouco contato com tecnologias web e
seus novos paradigmas.

Caso eu esteja errado, me indiquem listas de discusses que j


aconteceram ou acontecem sobre esses assuntos, eu caria realmente
muito grato de participar.

. . .

Ento muito obrigado pela ateno e companhia, e se curtiu o post


no deixe de clicar no CORAO e participar comentando, pois assim
voc nos ajuda muito!

#UltimaDicaBar8

Livro do Eric Evans

DomainDriven Design: Tackling Complexity in


the Heart of Software 8601300201665 Livros
na
Compre o livro DomainDriven Design: Tackling
Complexity in the Heart of Software na Amazon.com.br:
confira as ofertas
www.amazon.com.br

Caso voc queira iniciar seus estudos consumindo algum servio mas
no tem idia por onde comear, abaixo segue um link com diversos

https://bar8.com.br/abapsapgatewaywebserviceodata3206b247ea13 15/18
12/04/2017 OData,RESTeaSAPBar8

servios de humor pra consumir e ter resultados no mnimo


engraados:

Humor APIs
Twilio Launches Voice Insights API to Monitor WebRTC
Performance
www.programmableweb.com

O Abap Zombie j falou sobre o SAP Gateway e existem excelentes


pontos abordados pelo Mauricio R. Cruz:

SAP Netweaver Gateway Do que se trata essa


parada?
HANA, SAPUI5, Gateway, Lumira, HANA, River, Fiori,
Cloud, HANA, HANA, HANA, etc, etc, etc... Tanta coisa
nova, no
www.abapzombie.com

Leia tambm

ABAP on Vim
VIM ROCKSAntelio I. Abe
bar8.com.br

Princpio AbertoFechado
Entidades de software classes, mdulos, funes, etc.
devem ser abertas para extenso, mas fechadas para
modificao
bar8.com.br

O Construtor da classe realmente um mtodo?


Voc diz que ns nunca podemos parar de ser curiosos,
para sempre abrirmos qualquer porta de curiosidade
que podemos
bar8.com.br

https://bar8.com.br/abapsapgatewaywebserviceodata3206b247ea13 16/18
12/04/2017 OData,RESTeaSAPBar8

https://bar8.com.br/abapsapgatewaywebserviceodata3206b247ea13 17/18
12/04/2017 OData,RESTeaSAPBar8

https://bar8.com.br/abapsapgatewaywebserviceodata3206b247ea13 18/18