São APIs que se comunicam por meio de redes através do protocolo HTTP, independente de linguagens, softwares e hardwares.
Inicialmente foram criados para troca de mensagens usando a linguagem XML (Extensible Markup Language) sobre o protocolo HTTP sendo identificado por URI (Uniform Resource Identifier).
Todo web service (usa protocolo HTTP) é uma API, mas nem toda API (pode usar outros protocolos) é um web service.
Vantagens
- Integração Universal
- Reutilização de Implementação
- Linguagem Comum (XML, JSON, etc)
- Segurança
- Custos
Tecnologias
Arquiteturas
Linguagens de Marcação
API - Application Programming Interface
É um conjunto de rotinas documentadas e disponibilizadas por uma app para que outras apps possam consumir as funcionalidades.
Uma API pode ser REST, SOAP, etc.
SOAP - Simple Object Access Protocol
É um protocolo baseado em XML para acessar serviços web, principalmente por HTTP, define como os serviços web se comunicam.
Vantagens
- Possui as mesmas vantagens dos web services
- Meio de transporte genérico (Pode ser usado por outros protocolos além do HTTP)
XML - Extensible Markup Language
Criada na década de 90 pela W3C.
Facilita a separação de conteúdo de dados.
Não tem limitação de criação de tags.
Linguagem comum para integrações entre apps.
Estrutura SOAP
O "SOAP Message" possui uma estrutura única e fixa.
- SOAP Envelope é o elemento usado para encapsular toda a mensagem
- SOAP Header é o elemento com informações de atributos e metadados da requisição
- SOAP Envelope é o elemento com a mensagem em si
WSDL - Web Service Description Language
Usado para descrever os serviços web, funciona como um contrato do serviço.
A descrição é feito em um documento XML, onde é descrito o serviço, especificações de acesso, operações e métodos.
XSD - XML Schema Definition
É um schema no formato XML usado para definir a estrutura de dados que será validada no XML.
O XSD funciona como uma documentação de como deve ser montado o SOAP Message (XML) que será enviado para o serviço.
REST - Representational State Transfer
A transferência de estado representacional é um estilo de arquitetura de software que foi criado para orientar o projeto e o desenvolvimento da arquitetura para a World Wide Web. REST define um conjunto de restrições de como a arquitetura de um sistema de hipermídia distribuído em escala da Internet, como a Web, deve se comportar.
Não é um protocolo como o SOAP e sempre vai rodar sobre o protocolo HTTP.
Transferência de Estado Representacional de um objeto, como ele está no momento da requisição e não como ele é.
Formatos: JSON, XML, etc.
Vantagens
- Possui as mesmas vantagens dos web services
- Usa métodos do HTTP para definir a operação à ser realizada
- Arquitetura de fácil compreensão
Estrutura REST
Para que um serviço web, API seja considerada REST ela deve seguir o estilo, a arquitetura, os padrões definidos.
Na arquitetura REST usamos os verbos do HTTP como representação do que deve ser feito, métodos.
HTTP Métodos
- GET: Solicita a representação de um recurso
- POST: Solicita a criação de um recurso
- DELETE: Solicita a exclusão de um recurso
- PUT: Solicita a atualização de um recurso
JSON - JavaScript Object Notation
Formatação leve usada para troca de mensagens entre sistemas.
Estrutura de chave e valor, e também de listas ordenadas.
Um dos formatos mais usados.
HTTP Status Code
Usado pelo servidor para avisar o cliente sobre o estado da operação solicitada.
- 1XX - Informativo
- 2XX - Sucesso
- 3XX - Redirecionamento
- 4XX - Erro do Cliente
- 5XX - Erro do Servidor