Surpreendentemente, eu não vejo nas outras respostas o que eu considero a diferença real entre REST e CRUD: o que cada um gerencia.
CRUD significa as operações básicas a serem feitas em um repositório de dados. Você manipula diretamente registros ou objetos de dados; Além dessas operações, os registros são entidades passivas. Normalmente, são apenas tabelas e registros de banco de dados.
O REST, por outro lado, opera em representações de recursos, cada uma identificada por um URL. Normalmente, esses não são objetos de dados, mas abstrações complexas de objetos.
Por exemplo, um recurso pode ser um comentário do usuário. Isso significa não apenas um registro em uma tabela de "comentários", mas também suas relações com o recurso "usuário", a postagem à qual o comentário está anexado, talvez outro comentário ao qual ele responde.
Operar no comentário não é uma operação de banco de dados primitiva, pode ter efeitos colaterais significativos, como disparar um alerta para o cartaz original, ou recalcular alguns "pontos" semelhantes a jogos, ou atualizar alguns "seguidores". / p>
Além disso, uma representação de recursos inclui hipertexto (verifique o princípio HATEOAS ), permitindo que o designer expresse relações entre recursos, ou orientar o cliente REST no fluxo de trabalho de uma operação.
Em suma, o CRUD é um conjunto de operações primitivas (principalmente para bancos de dados e armazenamentos de dados estáticos), enquanto o REST é um estilo de API de alto nível (principalmente para serviços da Web e outros sistemas "ativos").O primeiro manipula dados básicos, o outro interage com um sistema complexo.