Para que os princípios do REST sejam respeitados, um conjunto de restrições deve ser seguido:
Cliente-Servidor: esta característica é mais comumente encontrada em aplicações Web. Um servidor, com um conjunto de serviços disponíveis, escuta requisições a estes serviços. Um cliente, que deseja que um serviço disponível no servidor seja executado, envia uma requisição para o servidor. O servidor então pode tanto rejeitar como executar o serviço solicitado, e retornar uma resposta ao cliente.
Stateless (Sem estado): outra restrição imposta pelo estilo REST diz respeito à interação entre cliente e servidor. A comunicação deve ser feita sem o armazenamento de qualquer tipo de estado no servidor, ou seja, cada requisição do cliente para o servidor deve conter todas as informações necessárias para que ela seja entendida. Portanto, estados de sessão, quando necessários, devem ser totalmente mantidos no cliente.
Cache: uma forma de diminuir o impacto da desvantagem trazida pela redução de desempenho é a utilização de cache. O mesmo exige que os dados de uma resposta, vindos de uma requisição ao servidor, sejam marcados como cacheable ou noncacheable (passíveis ou não de utilização da cache). Se uma resposta é setada como cacheable, então ela será reutilizada como resposta para as futuras requisições equivalentes.
Interface Uniforme: a característica central que diferencia o estilo arquitetural REST de outros estilos baseados em rede é sua ênfase em uma interface uniforme entre os componentes (cliente, servidor).
Multicamada: com o intuito de aperfeiçoar o requisito de escalabilidade da Internet, foi adicionado ao estilo REST a característica de divisão em camadas. Sistemas multicamada utilizam camadas para separar diferentes unidades de funcionalidade. A principal desvantagem deste modelo está na adição de overhead e latência nos dados processados, reduzindo a performance. Para um sistema baseado em rede que suporte cache, esta desvantagem pode ser amenizada.
Code-On-Demand: o último item do conjunto proposto pelo estilo REST é uma característica opcional. REST permite que clientes tenham a funcionalidade de baixar e executar diretamente código no lado cliente. Deste modo, prima pela simplificação da parte cliente e foca na extensibilidade, em contrapartida, reduz a visibilidade.