O que é REST?
Transferência de Estado Representacional. Ele descreve como um sistema pode se comunicar com outro. Um exemplo seria o estado de um produto (seu nome, descrição, etc.) representado como XML, JSON ou texto sem formatação. A ideia generalizada de estado é denominada recurso.
Qual é a posição que ocupa em um ecossistema de arquitetura da web?
O REST é comumente associado à interface de serviços da Web, pois o HTTP é, de longe, o protocolo de portadora mais comum. No modelo de sete camadas, ele existe na camada de aplicativo . No entanto, veja a próxima seção.
Quão strong (ou vagamente) é acoplado ao protocolo?
REST não é HTTP. Ele usa HTTP porque, em sua forma mais geral, o REST existe para auxiliar uma máquina no mapeamento do conceito de um verbo contra uma coleção arbitrária de substantivos. O HTTP contém um conjunto útil de verbos genéricos (GET, PUT, PATCH, etc.) que podem ser aplicados a substantivos arbitrários expressos como URIs usando HTTP, por ex. OBTER link ).
Quais são as alternativas para o REST e como o REST se compara a elas
Isto é semelhante a perguntar "Como RESTful é minha abordagem?" Use a lista a seguir (resumida no Richardson Maturity Model descrito por Martin Fowler ):
Nível 0 - O pântano do POX
Use POST para tudo (lê, escreve, apaga). Isso é SOAP, POX, RPI, etc. Você está apenas usando HTTP como um túnel para o seu próprio protocolo. Você segmenta um único ponto de extremidade que faz tudo com base no conteúdo do corpo da solicitação.
Nível 1 - Recursos
Use POST para tudo. Segmente vários pontos de extremidade projetados para fornecer informações sobre uma determinada coisa. Você acabou de descobrir recursos.
Nível 2 - verbos HTTP
Use verbos HTTP contra recursos. Agora você está OBTENDO. POST é criar, PUT é sobrescrever, OPÇÕES para operações disponíveis, DELETE para, bem, deletar o recurso. Como resultado do uso desses verbos, diferentes códigos de status HTTP começam a se tornar mais relevantes (202 ACEITAR qualquer pessoa ?)
Nível 3 - Controle de hipermídia ( HATEOAS )
Neste ponto, você dá o salto final e introduz a hipermídia como um mecanismo de controle de fluxo. Um cliente REST não precisa de conhecimento prévio sobre como interagir com qualquer aplicativo ou servidor específico além de um entendimento genérico de hipermídia. Isso pode ser comunicado em HTTP por meio do campo de cabeçalho Content-Type. Formatos de texto incluem AtomPub e (mais conciso) HAL , enquanto o HyperAudio funciona bem para fluxos de áudio (veja SoundCloud et al)