O que é REST?
- #RESTful
- #REST
- #API Rest
REST é um acrônimo para Representational State Transfer. É um estilo arquitetural para desenvolver web APIs - aka web services. É uma especificação que define a forma de comunicação entre componentes de software na web.
Surgiu no início dos anos 2000, a partir da tese de PhD do cientista Roy Fielding, com o intuito de formalizar um conjunto de regras (constraints) para desenvolvimento de web services, que devem ser seguidas para que uma web API esteja em conformidade com o REST.
As constraints do REST são:
1. Cliente-servidor: deve ser uma aplicação com clientes e servidores separados.
2. Stateless server: o servidor não deve guardar informações sobre o estado do cliente. Cada requisição deve ser independente, contendo as informações necessárias para ser atendida.
3. Cacheable: é necessário que as respostas possam ser cacheadas, e o cliente deve ser informado sobre as propriedades de cache de um recurso a fim de decidir quando utilizar cache ou não.
4. Interface uniforme: deve existir uma interface uniforme entre cliente e servidor. Para tanto, algumas convenções devem ser seguidas:
- Identificação de recursos por URI: cada recurso deve possuir sua respectiva URI de acesso
- Manipulação de recursos a partir de suas representações (que podem ser em formato HTML, XML, JSON, TXT, etc)
- Mensagens auto-descritivas
- Hypermedia as the engine of application state (HATEOAS): as respostas devem conter todas as informações necessárias para que o cliente possa navegar pela aplicação
5. Sistema em camadas: a aplicação deve ser composta por camadas de fácil alteração, sendo possível adicionar ou remover camadas.
6. Código sob demanda (opcional): o cliente pode solicitar um código do servidor e executá-lo.