SABÃO, DESCANSO E CRIATIVIDADE DAS PESSOAS
O SOAP precisa de um documento de descrição como o WSDL, pois cada recurso pode ser consumido com mensagens diferentes; não há definição no protocolo sobre restrições aos possíveis nomes / mensagens que você pode manipular um recurso.
Por exemplo, no SOAP, seu serviço da web que permite que clientes manipulem um usuário pode expor a operação que cria um usuário em muitas mensagens diferentes, como:
addUser
createUser
insertUser
Obviamente, essas são apenas algumas mensagens de amostra, porque eu vejo muitos nomes engraçados de métodos de serviços da web. Existem pessoas realmente criativas por aí.
Por outro lado, se você estiver expondo seu sistema subjacente usando APIs da Web que realmente respeitem os princípios REST, o cliente só precisará saber que você possui um recurso chamado Usuários, pois há 99% de chance de criar um usuário neste maneira
POST /Users
E isso ocorre para cada operação que você deseja expor usando SOAP ou um API REST da API.
Apesar de ser um protocolo SOAP, que restringe o que você pode ou não fazer, e REST é uma arquitetura de estilo, que deixa muitos pontos em aberto de como fazer as coisas. Existem esforços para definir convenções de como expor e consumir APIs da web REST.
DESCRIÇÃO DE UM REST DA API WEB
No campo de como descrever um web API REST, posso citar o Swagger . Não é uma tentativa de criar um WSDL como o REST da API da Web, mas é uma boa tentativa de criar um padrão aberto para descrever o REST da API da Web.
O Swagger é uma especificação e implementação completa da estrutura para descrever, produzir, consumir e visualizar serviços da Web RESTful.
Eu uso muito o Swagger e realmente o amo, principalmente porque a interface do usuário do Swagger permite gerar um bom console ao vivo e documentação para sua API da web.
Existem muitas implementações do Swagger para a maioria das linguagens: C #, Java, Python, Ruby, etc.
Se você estiver usando a API da Web ASP .NET, existem alguns projetos para gerar automaticamente a especificação Swagger, como Swagger.NET
GERANDO CLIENTES PARA UM RESTO DA API WEB
Como as restrições do REST, como o conjunto limitado de verbos (GET, POST, PUT, DELETE etc.), não são tão difíceis de gerar para a biblioteca de clientes de um API REST da API.
Projetos como o WebApiProxy podem facilmente gerar clientes com C # e Javascript.
CONVENÇÕES PARA RESTO DA API WEB
Para manter nossa vida à medida que os desenvolvedores são mais fáceis, é bom definir algumas convenções de como o REST da API da web se comportará, o melhor esforço que conheço nesse campo é o excelente ebook Apigee - Web Api Design . O e-book não é uma tentativa de criar uma Bíblia ou um mantra sobre como projetar sua API, mas uma coleção de convenções observadas em grandes APIs REST da Web, como Twitter, Facebook, Linkedin, Google, etc.