O que é REST?
REpresentational State Transfer. Ele descreve como um sistema pode se comunicar com outro. Um exemplo seria o estado de um produto (nome, descrição, etc.) representado como XML, JSON ou texto sem formatação. A idéia generalizada de estado é denominada recurso.
Que posição ocupa em um ecossistema de arquitetura da web?
O REST é comumente associado à interface de serviços da web, já que o HTTP é de longe o protocolo de operadora mais comum. No modelo de 7 camadas, ele existe na camada de aplicativo . No entanto, consulte a próxima seção.
Quão firmemente (ou frouxamente) é acoplado ao protocolo?
REST não é HTTP. Ele usa HTTP porque, na sua forma mais geral, o REST existe para ajudar uma máquina a mapear o 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 exemplo, GET http://example.org/Product(54 ).
Quais são as alternativas ao REST e como o REST se compara a elas
Isso é semelhante a perguntar "Qual é a minha abordagem de RESTful?" Use a seguinte lista (resumida no Richardson Maturity Model, conforme descrito por Martin Fowler ):
Nível 0 - O pântano de POX
Use POST para tudo (lê, grava, exclui). Isso é SOAP, POX, RPI, etc. Você está apenas usando HTTP como um túnel para seu próprio protocolo. Você direciona um único terminal que faz tudo com base no conteúdo do corpo da solicitação.
Nível 1 - Recursos
Use o POST para tudo. Segmente vários pontos de extremidade projetados para fornecer informações sobre uma coisa específica. Você acabou de descobrir recursos.
Nível 2 - verbos HTTP
Use verbos HTTP contra recursos. Agora você está conseguindo. POST é criar, PUT é sobrescrever, OPTIONS para operações disponíveis, DELETE para, bem, excluir o recurso. Como resultado do uso desses verbos, diferentes códigos de status HTTP começam a se tornar mais relevantes (202 ACEITO ALGUÉM?).
Nível 3 - Controle de hipermídia ( HATEOAS )
Nesse 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 da hipermídia. Isso pode ser comunicado em HTTP através do campo de cabeçalho Content-Type. Os formatos de texto incluem AtomPub e HAL (mais conciso) , enquanto o HyperAudio funciona bem para fluxos de áudio (consulte SoundCloud et al)