REST
é um estilo arquitetônico e um design para arquiteturas de software baseadas em rede.
REST
conceitos são referidos como recursos. Uma representação de um recurso deve ser sem estado. É representado através de algum tipo de mídia. Alguns exemplos de tipos de mídia incluem XML
, JSON
e RDF
. Os recursos são manipulados pelos componentes. Os componentes solicitam e manipulam recursos por meio de uma interface uniforme padrão. No caso do HTTP, esta interface é constituído por operações padrão de HTTP por exemplo GET
, PUT
, POST
, DELETE
.
REST
normalmente é usado HTTP
, principalmente devido à simplicidade do HTTP e seu mapeamento muito natural para os princípios RESTful. O REST, no entanto, não está vinculado a nenhum protocolo específico.
Princípios fundamentais do REST
Comunicação Cliente-Servidor
As arquiteturas cliente-servidor têm uma separação muito distinta de preocupações. Todos os aplicativos criados no estilo RESTful também devem ser, em princípio, cliente-servidor.
Sem Estado
Cada solicitação do cliente para o servidor requer que seu estado seja totalmente representado. O servidor deve ser capaz de entender completamente a solicitação do cliente sem usar nenhum contexto ou estado da sessão do servidor. Daqui resulta que todo estado deve ser mantido no cliente. Discutiremos a representação sem estado em mais detalhes posteriormente.
Armazenável em cache
As restrições de cache podem ser usadas, permitindo que os dados de resposta sejam marcados como armazenáveis em cache ou impossíveis de serem armazenados. Quaisquer dados marcados como armazenáveis em cache podem ser reutilizados como resposta à mesma solicitação subsequente.
Interface uniforme
Todos os componentes devem interagir através de uma única interface uniforme. Como toda a interação de componentes ocorre por meio dessa interface, a interação com diferentes serviços é muito simples. A interface é a mesma! Isso também significa que as mudanças na implementação podem ser feitas isoladamente. Tais mudanças não afetarão a interação fundamental dos componentes porque a interface uniforme é sempre inalterada. Uma desvantagem é que você está preso à interface. Se uma otimização puder ser fornecida a um serviço específico alterando a interface, você estará sem sorte, pois o REST proíbe isso. Pelo lado positivo, no entanto, o REST é otimizado para a web, daí a incrível popularidade do REST sobre HTTP!
Os conceitos acima representam características definidoras do REST e diferenciam a arquitetura REST de outras arquiteturas, como serviços da web. É útil observar que um serviço REST é um serviço da Web, mas um serviço da Web não é necessariamente um serviço REST.
Consulte esta postagem do blog sobre os principais de design do REST para obter mais detalhes sobre o REST e os princípios acima.