SlideShare uma empresa Scribd logo
1 de 4
Baixar para ler offline
Rest Introdução
Definição
O termo REST significa "Transferência de Estado de representação." A
definição formal possível de que poderia ser como segue.
estilo API arquitetônico baseado em transferência de uma representação do
estado (documentos) entre cliente e servidor, a fim de avançar o estado de
um aplicativo.
Restrições
Para considerar os pedidos como RESTful, os aplicativos precisam estar
em conformidade com as seguintes restrições REST. Cumprindo com as
restrições permite que um sistema hipermídia distribuído para ter as
seguintes propriedades desejáveis não-funcionais: desempenho,
escalabilidade, simplicidade, extensibilidade, visibilidade, portabilidade e
confiabilidade.
Servidor cliente
Um modelo cliente-servidor favorece a separação de interesses para que os
clientes não estão preocupados com o armazenamento de dados. Assim, a
portabilidade de código clientes é melhorada. Por outro lado, o servidor não
está preocupado com a interface de utilizador ou estado do utilizador, para
que o servidor possa ser mais simples e mais escalável. Servidores e
clientes podem ser desenvolvidos de forma independente, desde que
estejam em conformidade com o contrato definido.
Stateless
contexto de cliente nunca é armazenado no servidor entre as solicitações.
Cada pedido tem de conter todas as informações necessárias. Um servidor
sem estado melhora a escalabilidade, permitindo que o servidor para
recursos rapidamente livres e simplifica a implementação. Confiabilidade
facilita a recuperação de falhas parciais. Visibilidade, sistema de
monitorização não tem que olhar para além de um único pedido para
determinar a natureza do pedido.
Uma das desvantagens de ter um servidor é diminuída sem estado de
desempenho da rede, como todos os dados necessários tem de ser enviado
em cada pedido.
Interface uniforme
Usando uma interface uniforme simplifica e desacopla a arquitetura e
favorece a evolução independente de partes diferentes. Como explicado
mais adiante neste post, URIs, recursos e ajuda hipermídia para produzir
uma interface padrão que melhora a visibilidade das interações, simplifica a
arquitetura geral do sistema e incentivar a evolução independente. O trade-
off é que ele degrada a eficiência já que a informação é transferida em um
formato padrão, em vez de um que é especial às necessidades de um
aplicativo.
Sistema de camadas
Usando um sistema em camadas reduz a complexidade, restringir o seu
comportamento componente de tal forma que cada elemento não pode
acessar além de sua camada de imediato. Favorece a independência
substrato, restringindo o conhecimento de outras partes do sistema. As
camadas podem encapsular componentes legados e proteger novos serviços
de clientes legados. Intermediários podem ser usados para melhorar a
escalabilidade, permitindo que o balanceamento de carga através das redes.
A principal desvantagem é que os sistemas em camadas adicionar uma
sobrecarga e latência para o processamento de dados, portanto, reduzindo o
desempenho percebido pelo usuário.
Code-On-Demand (Opcional)
RESTO permite que os clientes para estender sua funcionalidade fazendo o
download e execução de scripts de código. Isto simplifica e melhora a
extensibilidade clientes. Por outro lado, reduz a visibilidade, o que é por
isso que ele é apenas uma restrição opcional.
elementos
DESCANSO tem vários elementos na sua caixa de ferramentas para
construir apátridas, escaláveis e simples APIs web.
HTTP
recursos
URIs
hipermídia
HTTP - Documento de Protocolo de Transferência de Aplicação
RESTO é normalmente usado junto com HTTP como seu protocolo de
transferência, uma vez que oferece várias vantagens. Entre eles estão os
verbos de HTTP, códigos de status e cabeçalhos.
Verbos
Em vez de definir novos verbos para cada comportamento possível em
nosso serviço web, o HTTP introduz um conjunto padrão de verbos para
lidar com situações semelhantes, da mesma forma, a remoção de variação
desnecessária e criando uma API mais intuitiva. Cada verbo tem uma
combinação diferente de duas propriedades que as tornam adequadas para
diferentes cenários.
Idempotente: A operação pode ser repetida em caso de falhas.
Seguro: A operação não tem efeitos colaterais para o qual o cliente é
responsável.
GET
Usado para ler o estado do servidor. Sendo uma operação segura, ele pode
ser executado várias vezes, sem risco de modificação de dados ou
corrupção - chamando-o de uma vez tem o mesmo efeito que chamá-lo dez
vezes. Como uma operação idempotente, fazendo vários pedidos idênticos
tem o mesmo resultado como um único pedido.
POST
Normalmente usado para criar algum estado no servidor. É seguro nem
idempotente. Portanto várias solicitações irá criar vários recursos no
servidor. Como uma operação não-idempotent, POST não deve ser
utilizado para operações que lidam com dinheiro, como no caso de um
pedido não é feito várias vezes, que poderia potencialmente ser a
transferência de dinheiro ou pagar várias vezes.
PUT
É principalmente utilizado para atualizar estado no servidor, embora
também possa ser utilizado para criar estado. É idempotent mas não segura
como ela muda o estado do servidor. Sendo um idempotent fez colocar um
bom candidato, por exemplo, para as operações relacionadas com dinheiro.
DELETE
É usado para eliminar estado no servidor. É idempotentmas não seguro,
uma vez que remove o estado do servidor. É idempotentes como apagar
estado que foi excluído anteriormente não deve ter outras implicações.
RESPONSE STATUS CODE
Os códigos de estado de HTTP fornecer metadados na resposta ao estado
dos recursos solicitados. Eles são parte do que torna a web uma plataforma
para a construção de sistemas distribuídos.
Eles estão divididos nas seguintes categorias:
1xx - Metadados.
2xx - Está tudo bem.
3xx - Redirecionamento.
4xx - Cliente fez algo errado.
5xx - Servidor fez algo errado.
HEADER
Os cabeçalhos HTTP são componentes para passar informações adicionais
em pedidos e respostas. Cabeçalhos consistem de um nome de maiúsculas e
minúsculas seguido por dois pontos e seu valor. Cabeçalhos poderiam ser
agrupadas como: cabeçalhos gerais: aplicam-se tanto solicitações e
respostas, mas não há relação aos dados transmitidos no corpo. Cabeçalhos
de solicitação: contêm mais informações sobre o recurso a ser obtido ou
sobre o cliente que fez o pedido. cabeçalhos de resposta: contêm
informações adicionais sobre a resposta. cabeçalhos de entidade: Adicionar
informações sobre o corpo da entidade, como o índice de comprimento ou
do tipo MIME.

Mais conteúdo relacionado

Mais procurados

Serviços na Plataforma .NET (SOA, REST, Microservices, WCF, Web API)
Serviços na Plataforma .NET (SOA, REST, Microservices, WCF, Web API)Serviços na Plataforma .NET (SOA, REST, Microservices, WCF, Web API)
Serviços na Plataforma .NET (SOA, REST, Microservices, WCF, Web API)Renato Groff
 
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETArquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETRenato Groff
 
Servidores de aplicação apresentação
Servidores de aplicação apresentaçãoServidores de aplicação apresentação
Servidores de aplicação apresentaçãoMárcia Catunda
 
Principais duvidas sobre mule
Principais duvidas sobre mulePrincipais duvidas sobre mule
Principais duvidas sobre muleJeison Barros
 
Apresentação servidores de aplicação
Apresentação   servidores de aplicaçãoApresentação   servidores de aplicação
Apresentação servidores de aplicaçãoHelen Picoli
 
Arquitetura de software : Cliente-Servidor
Arquitetura de software : Cliente-ServidorArquitetura de software : Cliente-Servidor
Arquitetura de software : Cliente-ServidorAlexsandro Oliveira
 
Principais perguntas sobre mule esb parte 2
Principais perguntas sobre mule esb parte 2 Principais perguntas sobre mule esb parte 2
Principais perguntas sobre mule esb parte 2 Jeison Barros
 
Desenvolvendo Produtos Com Java EE
Desenvolvendo Produtos Com Java EEDesenvolvendo Produtos Com Java EE
Desenvolvendo Produtos Com Java EEelliando dias
 
O básico do uso de rest vs soap
O básico do uso de rest vs soapO básico do uso de rest vs soap
O básico do uso de rest vs soapJeison Barros
 
Introdução à Arquitetura Web
Introdução à Arquitetura WebIntrodução à Arquitetura Web
Introdução à Arquitetura WebBreno Vitorino
 
Arquitetura SOAP e REST
Arquitetura SOAP e RESTArquitetura SOAP e REST
Arquitetura SOAP e RESTRhaniel
 
Explorando mule esb sftp adapter
Explorando mule esb sftp adapterExplorando mule esb sftp adapter
Explorando mule esb sftp adapterJeison Barros
 

Mais procurados (20)

Serviços na Plataforma .NET (SOA, REST, Microservices, WCF, Web API)
Serviços na Plataforma .NET (SOA, REST, Microservices, WCF, Web API)Serviços na Plataforma .NET (SOA, REST, Microservices, WCF, Web API)
Serviços na Plataforma .NET (SOA, REST, Microservices, WCF, Web API)
 
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETArquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
 
Web service
Web serviceWeb service
Web service
 
Gestão de XML
Gestão de XML Gestão de XML
Gestão de XML
 
Servidores de aplicação apresentação
Servidores de aplicação apresentaçãoServidores de aplicação apresentação
Servidores de aplicação apresentação
 
Principais duvidas sobre mule
Principais duvidas sobre mulePrincipais duvidas sobre mule
Principais duvidas sobre mule
 
A Estrutura de um Web Service
A Estrutura de um Web ServiceA Estrutura de um Web Service
A Estrutura de um Web Service
 
O Elefante e a Mula
O Elefante e a MulaO Elefante e a Mula
O Elefante e a Mula
 
Resumo SCEA
Resumo SCEAResumo SCEA
Resumo SCEA
 
Apresentação servidores de aplicação
Apresentação   servidores de aplicaçãoApresentação   servidores de aplicação
Apresentação servidores de aplicação
 
Soa PróS E Contras
Soa PróS E ContrasSoa PróS E Contras
Soa PróS E Contras
 
WCF
WCFWCF
WCF
 
Arquitetura de software : Cliente-Servidor
Arquitetura de software : Cliente-ServidorArquitetura de software : Cliente-Servidor
Arquitetura de software : Cliente-Servidor
 
Dao
DaoDao
Dao
 
Principais perguntas sobre mule esb parte 2
Principais perguntas sobre mule esb parte 2 Principais perguntas sobre mule esb parte 2
Principais perguntas sobre mule esb parte 2
 
Desenvolvendo Produtos Com Java EE
Desenvolvendo Produtos Com Java EEDesenvolvendo Produtos Com Java EE
Desenvolvendo Produtos Com Java EE
 
O básico do uso de rest vs soap
O básico do uso de rest vs soapO básico do uso de rest vs soap
O básico do uso de rest vs soap
 
Introdução à Arquitetura Web
Introdução à Arquitetura WebIntrodução à Arquitetura Web
Introdução à Arquitetura Web
 
Arquitetura SOAP e REST
Arquitetura SOAP e RESTArquitetura SOAP e REST
Arquitetura SOAP e REST
 
Explorando mule esb sftp adapter
Explorando mule esb sftp adapterExplorando mule esb sftp adapter
Explorando mule esb sftp adapter
 

Semelhante a Rest introdução

Desenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EEDesenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EELuan Felipe Knebel
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfBrunoAlbuquerque864673
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfBrunoAlbuquerque864673
 
Workshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIsWorkshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIsHeider Lopes
 
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMASO MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMASHeider Lopes
 
Cliente e servidor
Cliente e servidorCliente e servidor
Cliente e servidorDavi Silva
 
Introdução ASP.NET Core
Introdução ASP.NET CoreIntrodução ASP.NET Core
Introdução ASP.NET Corelacerda2
 
Web Sphere Application Server
Web Sphere Application ServerWeb Sphere Application Server
Web Sphere Application ServerFabricio Carvalho
 
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETArquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETRenato Groff
 
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETArquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETRenato Groff
 
Web Services - Grupo F
Web Services - Grupo FWeb Services - Grupo F
Web Services - Grupo Fmdmansur
 

Semelhante a Rest introdução (20)

Soa Woa Rest
Soa Woa RestSoa Woa Rest
Soa Woa Rest
 
Desenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EEDesenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EE
 
Palestra Sobre REST
Palestra Sobre RESTPalestra Sobre REST
Palestra Sobre REST
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdf
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdf
 
Workshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIsWorkshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIs
 
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMASO MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
 
Cliente e servidor
Cliente e servidorCliente e servidor
Cliente e servidor
 
Apostila Oracle 10g
Apostila Oracle 10gApostila Oracle 10g
Apostila Oracle 10g
 
Introdução ASP.NET Core
Introdução ASP.NET CoreIntrodução ASP.NET Core
Introdução ASP.NET Core
 
Web Sphere Application Server
Web Sphere Application ServerWeb Sphere Application Server
Web Sphere Application Server
 
WebServices-XML
WebServices-XMLWebServices-XML
WebServices-XML
 
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETArquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
 
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETArquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
 
Web Sphere
Web SphereWeb Sphere
Web Sphere
 
Rest
RestRest
Rest
 
Soa woa - rest
Soa   woa - restSoa   woa - rest
Soa woa - rest
 
SOA - WOA - REST
SOA - WOA - RESTSOA - WOA - REST
SOA - WOA - REST
 
Architecture performance using micro services
Architecture performance using micro servicesArchitecture performance using micro services
Architecture performance using micro services
 
Web Services - Grupo F
Web Services - Grupo FWeb Services - Grupo F
Web Services - Grupo F
 

Mais de Jeison Barros

Introdução a RAML - parte 1
Introdução a RAML -  parte 1Introdução a RAML -  parte 1
Introdução a RAML - parte 1Jeison Barros
 
Restful considerada prejudicial - parte 1
Restful considerada prejudicial -  parte 1Restful considerada prejudicial -  parte 1
Restful considerada prejudicial - parte 1Jeison Barros
 
Restful considerada prejudicial parte 2
Restful considerada prejudicial   parte 2Restful considerada prejudicial   parte 2
Restful considerada prejudicial parte 2Jeison Barros
 
Estratégia api e design
Estratégia api e designEstratégia api e design
Estratégia api e designJeison Barros
 
Transformando eficientemente resultados de uma consulta jdbc para json
Transformando eficientemente resultados de uma consulta jdbc para jsonTransformando eficientemente resultados de uma consulta jdbc para json
Transformando eficientemente resultados de uma consulta jdbc para jsonJeison Barros
 
Como criar um http proxy dinamico com mule parte 3
Como criar um http proxy dinamico com mule   parte 3Como criar um http proxy dinamico com mule   parte 3
Como criar um http proxy dinamico com mule parte 3Jeison Barros
 
Como criar um http proxy dinamico com mule parte 1
Como criar um http proxy dinamico com mule   parte 1Como criar um http proxy dinamico com mule   parte 1
Como criar um http proxy dinamico com mule parte 1Jeison Barros
 
Conectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbcConectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbcJeison Barros
 
Habilidades necessárias para integrar aplicativos e dados
Habilidades necessárias para integrar aplicativos e dadosHabilidades necessárias para integrar aplicativos e dados
Habilidades necessárias para integrar aplicativos e dadosJeison Barros
 
Qual integration framework você deve usar parte 2
Qual integration framework você deve usar parte 2Qual integration framework você deve usar parte 2
Qual integration framework você deve usar parte 2Jeison Barros
 
Qual integration framework você deve usar parte 1
Qual integration framework você deve usar parte 1Qual integration framework você deve usar parte 1
Qual integration framework você deve usar parte 1Jeison Barros
 
Consumindo soap wsdl
Consumindo soap wsdlConsumindo soap wsdl
Consumindo soap wsdlJeison Barros
 
Trabalhando com anexos soap usando módulo cxf do mule
Trabalhando com anexos soap usando módulo cxf do muleTrabalhando com anexos soap usando módulo cxf do mule
Trabalhando com anexos soap usando módulo cxf do muleJeison Barros
 
Começando com mulesoft e maven
Começando com mulesoft e mavenComeçando com mulesoft e maven
Começando com mulesoft e mavenJeison Barros
 
Estudo de caso: Mule como um transporte JMS Comum
Estudo de caso: Mule como um transporte JMS ComumEstudo de caso: Mule como um transporte JMS Comum
Estudo de caso: Mule como um transporte JMS ComumJeison Barros
 
Mule esb com framework cucumber part 1
Mule esb com framework cucumber part 1Mule esb com framework cucumber part 1
Mule esb com framework cucumber part 1Jeison Barros
 
Mule esb com framework cucumber part 2
Mule esb com framework cucumber part 2Mule esb com framework cucumber part 2
Mule esb com framework cucumber part 2Jeison Barros
 
Fluxo dinâmicos usando spring aplication
Fluxo dinâmicos usando spring aplicationFluxo dinâmicos usando spring aplication
Fluxo dinâmicos usando spring aplicationJeison Barros
 

Mais de Jeison Barros (20)

Pdfteste
PdftestePdfteste
Pdfteste
 
Introdução a RAML - parte 1
Introdução a RAML -  parte 1Introdução a RAML -  parte 1
Introdução a RAML - parte 1
 
Restful considerada prejudicial - parte 1
Restful considerada prejudicial -  parte 1Restful considerada prejudicial -  parte 1
Restful considerada prejudicial - parte 1
 
Restful considerada prejudicial parte 2
Restful considerada prejudicial   parte 2Restful considerada prejudicial   parte 2
Restful considerada prejudicial parte 2
 
Estratégia api e design
Estratégia api e designEstratégia api e design
Estratégia api e design
 
Transformando eficientemente resultados de uma consulta jdbc para json
Transformando eficientemente resultados de uma consulta jdbc para jsonTransformando eficientemente resultados de uma consulta jdbc para json
Transformando eficientemente resultados de uma consulta jdbc para json
 
Como criar um http proxy dinamico com mule parte 3
Como criar um http proxy dinamico com mule   parte 3Como criar um http proxy dinamico com mule   parte 3
Como criar um http proxy dinamico com mule parte 3
 
Como criar um http proxy dinamico com mule parte 1
Como criar um http proxy dinamico com mule   parte 1Como criar um http proxy dinamico com mule   parte 1
Como criar um http proxy dinamico com mule parte 1
 
Rest api vs SOAP
Rest api vs SOAPRest api vs SOAP
Rest api vs SOAP
 
Conectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbcConectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbc
 
Habilidades necessárias para integrar aplicativos e dados
Habilidades necessárias para integrar aplicativos e dadosHabilidades necessárias para integrar aplicativos e dados
Habilidades necessárias para integrar aplicativos e dados
 
Qual integration framework você deve usar parte 2
Qual integration framework você deve usar parte 2Qual integration framework você deve usar parte 2
Qual integration framework você deve usar parte 2
 
Qual integration framework você deve usar parte 1
Qual integration framework você deve usar parte 1Qual integration framework você deve usar parte 1
Qual integration framework você deve usar parte 1
 
Consumindo soap wsdl
Consumindo soap wsdlConsumindo soap wsdl
Consumindo soap wsdl
 
Trabalhando com anexos soap usando módulo cxf do mule
Trabalhando com anexos soap usando módulo cxf do muleTrabalhando com anexos soap usando módulo cxf do mule
Trabalhando com anexos soap usando módulo cxf do mule
 
Começando com mulesoft e maven
Começando com mulesoft e mavenComeçando com mulesoft e maven
Começando com mulesoft e maven
 
Estudo de caso: Mule como um transporte JMS Comum
Estudo de caso: Mule como um transporte JMS ComumEstudo de caso: Mule como um transporte JMS Comum
Estudo de caso: Mule como um transporte JMS Comum
 
Mule esb com framework cucumber part 1
Mule esb com framework cucumber part 1Mule esb com framework cucumber part 1
Mule esb com framework cucumber part 1
 
Mule esb com framework cucumber part 2
Mule esb com framework cucumber part 2Mule esb com framework cucumber part 2
Mule esb com framework cucumber part 2
 
Fluxo dinâmicos usando spring aplication
Fluxo dinâmicos usando spring aplicationFluxo dinâmicos usando spring aplication
Fluxo dinâmicos usando spring aplication
 

Rest introdução

  • 1. Rest Introdução Definição O termo REST significa "Transferência de Estado de representação." A definição formal possível de que poderia ser como segue. estilo API arquitetônico baseado em transferência de uma representação do estado (documentos) entre cliente e servidor, a fim de avançar o estado de um aplicativo. Restrições Para considerar os pedidos como RESTful, os aplicativos precisam estar em conformidade com as seguintes restrições REST. Cumprindo com as restrições permite que um sistema hipermídia distribuído para ter as seguintes propriedades desejáveis não-funcionais: desempenho, escalabilidade, simplicidade, extensibilidade, visibilidade, portabilidade e confiabilidade. Servidor cliente Um modelo cliente-servidor favorece a separação de interesses para que os clientes não estão preocupados com o armazenamento de dados. Assim, a portabilidade de código clientes é melhorada. Por outro lado, o servidor não está preocupado com a interface de utilizador ou estado do utilizador, para que o servidor possa ser mais simples e mais escalável. Servidores e clientes podem ser desenvolvidos de forma independente, desde que estejam em conformidade com o contrato definido. Stateless contexto de cliente nunca é armazenado no servidor entre as solicitações. Cada pedido tem de conter todas as informações necessárias. Um servidor sem estado melhora a escalabilidade, permitindo que o servidor para recursos rapidamente livres e simplifica a implementação. Confiabilidade facilita a recuperação de falhas parciais. Visibilidade, sistema de monitorização não tem que olhar para além de um único pedido para determinar a natureza do pedido. Uma das desvantagens de ter um servidor é diminuída sem estado de desempenho da rede, como todos os dados necessários tem de ser enviado em cada pedido.
  • 2. Interface uniforme Usando uma interface uniforme simplifica e desacopla a arquitetura e favorece a evolução independente de partes diferentes. Como explicado mais adiante neste post, URIs, recursos e ajuda hipermídia para produzir uma interface padrão que melhora a visibilidade das interações, simplifica a arquitetura geral do sistema e incentivar a evolução independente. O trade- off é que ele degrada a eficiência já que a informação é transferida em um formato padrão, em vez de um que é especial às necessidades de um aplicativo. Sistema de camadas Usando um sistema em camadas reduz a complexidade, restringir o seu comportamento componente de tal forma que cada elemento não pode acessar além de sua camada de imediato. Favorece a independência substrato, restringindo o conhecimento de outras partes do sistema. As camadas podem encapsular componentes legados e proteger novos serviços de clientes legados. Intermediários podem ser usados para melhorar a escalabilidade, permitindo que o balanceamento de carga através das redes. A principal desvantagem é que os sistemas em camadas adicionar uma sobrecarga e latência para o processamento de dados, portanto, reduzindo o desempenho percebido pelo usuário. Code-On-Demand (Opcional) RESTO permite que os clientes para estender sua funcionalidade fazendo o download e execução de scripts de código. Isto simplifica e melhora a extensibilidade clientes. Por outro lado, reduz a visibilidade, o que é por isso que ele é apenas uma restrição opcional. elementos DESCANSO tem vários elementos na sua caixa de ferramentas para construir apátridas, escaláveis e simples APIs web. HTTP recursos URIs hipermídia HTTP - Documento de Protocolo de Transferência de Aplicação RESTO é normalmente usado junto com HTTP como seu protocolo de transferência, uma vez que oferece várias vantagens. Entre eles estão os verbos de HTTP, códigos de status e cabeçalhos.
  • 3. Verbos Em vez de definir novos verbos para cada comportamento possível em nosso serviço web, o HTTP introduz um conjunto padrão de verbos para lidar com situações semelhantes, da mesma forma, a remoção de variação desnecessária e criando uma API mais intuitiva. Cada verbo tem uma combinação diferente de duas propriedades que as tornam adequadas para diferentes cenários. Idempotente: A operação pode ser repetida em caso de falhas. Seguro: A operação não tem efeitos colaterais para o qual o cliente é responsável. GET Usado para ler o estado do servidor. Sendo uma operação segura, ele pode ser executado várias vezes, sem risco de modificação de dados ou corrupção - chamando-o de uma vez tem o mesmo efeito que chamá-lo dez vezes. Como uma operação idempotente, fazendo vários pedidos idênticos tem o mesmo resultado como um único pedido. POST Normalmente usado para criar algum estado no servidor. É seguro nem idempotente. Portanto várias solicitações irá criar vários recursos no servidor. Como uma operação não-idempotent, POST não deve ser utilizado para operações que lidam com dinheiro, como no caso de um pedido não é feito várias vezes, que poderia potencialmente ser a transferência de dinheiro ou pagar várias vezes. PUT É principalmente utilizado para atualizar estado no servidor, embora também possa ser utilizado para criar estado. É idempotent mas não segura como ela muda o estado do servidor. Sendo um idempotent fez colocar um bom candidato, por exemplo, para as operações relacionadas com dinheiro. DELETE
  • 4. É usado para eliminar estado no servidor. É idempotentmas não seguro, uma vez que remove o estado do servidor. É idempotentes como apagar estado que foi excluído anteriormente não deve ter outras implicações. RESPONSE STATUS CODE Os códigos de estado de HTTP fornecer metadados na resposta ao estado dos recursos solicitados. Eles são parte do que torna a web uma plataforma para a construção de sistemas distribuídos. Eles estão divididos nas seguintes categorias: 1xx - Metadados. 2xx - Está tudo bem. 3xx - Redirecionamento. 4xx - Cliente fez algo errado. 5xx - Servidor fez algo errado. HEADER Os cabeçalhos HTTP são componentes para passar informações adicionais em pedidos e respostas. Cabeçalhos consistem de um nome de maiúsculas e minúsculas seguido por dois pontos e seu valor. Cabeçalhos poderiam ser agrupadas como: cabeçalhos gerais: aplicam-se tanto solicitações e respostas, mas não há relação aos dados transmitidos no corpo. Cabeçalhos de solicitação: contêm mais informações sobre o recurso a ser obtido ou sobre o cliente que fez o pedido. cabeçalhos de resposta: contêm informações adicionais sobre a resposta. cabeçalhos de entidade: Adicionar informações sobre o corpo da entidade, como o índice de comprimento ou do tipo MIME.