Diferença entre serviços da web OData e REST

196

Enquanto olhava para alguns serviços da web, deparei-me com essa "nova" tecnologia que a Microsoft está chamando de OData . Ao ler sua descrição nas Perguntas frequentes sobre o que é OData, estou tendo dificuldade em distinguir os serviços da Web OData e REST-ful. Alguém poderia me ajudar a entender as diferenças?

Scott
fonte
2
Um é produtor, o outro é facilitador para os consumidores.
Kangkan

Respostas:

98

ATUALIZAÇÃO Aviso, esta resposta está extremamente desatualizada agora que o OData V4 está disponível.


Eu escrevi um post sobre o assunto há um tempo atrás aqui .

Como disse Franci, o OData é baseado no Atom Pub. No entanto, eles colocaram algumas funcionalidades na parte superior e, infelizmente, ignoraram algumas das restrições REST no processo.

O recurso de consulta de um serviço OData requer que você construa URIs com base nas informações que não estão disponíveis ou vinculadas na resposta. É o que as pessoas REST chamam de informações fora da banda e introduz um acoplamento oculto entre o cliente e o servidor.

O outro acoplamento que é introduzido é através do uso de metadados EDMX para definir as propriedades contidas no conteúdo da entrada. Esses metadados podem ser descobertos em um terminal fixo chamado $ metadata. Novamente, o cliente precisa saber disso com antecedência, não pode ser descoberto.

Infelizmente, a Microsoft não achou adequado criar tipos de mídia para descrever esses dados importantes, portanto, qualquer cliente OData precisa fazer várias suposições sobre o serviço com o qual está conversando e os dados que está recebendo.

Darrel Miller
fonte
1
@felickz Desculpe por isso. Eu estava tendo problemas de DNS. Deve estar funcionando agora. Ou será quando o cache do DNS expirar.
Darrel Miller
6
Na verdade, isso está desatualizado. A V3 do OData adicionou o 'JSON Light', que aborda essas duas preocupações (que são realmente apenas uma), ou seja, $ metadados é como você cria consultas, portanto, tudo o que faltava é um link para $ metadados nas representações de recursos. Isso foi adicionado, para que ambos os problemas desapareçam de uma só vez.
Alex James
10
@DarrelMiller Você mencionou que sua resposta está desatualizada. Gostaria de adicionar uma atualização com sua opinião sobre o tópico? Eu ainda estaria interessado em saber a diferença entre o OData 4 e o REST. Muito obrigado
Kurren
2
@ Kurren Está na minha lista de tarefas, mas infelizmente é uma lista longa.
Darrel Miller
2
@DarrelMiller Espero que você encontre algum tempo para atualizar a publicação em breve, para atualizá-la com o OData V4.
LCJ
64

O protocolo OData é construído sobre o protocolo AtomPub. O protocolo AtomPub é um dos melhores exemplos de design da API REST. Portanto, de certa forma, você está certo - o OData é apenas mais uma API REST e cada implementação do OData é um serviço da Web completo para REST.

A diferença é que o OData é um protocolo específico; REST é estilo de arquitetura e padrão de design.

Franci Penov
fonte
Eu posso estar errado nisso (apenas comecei a aprender sobre odata), mas a partir da versão 3 do [protocolo] [ odata.org/documentation] parece que também há um formato JSON especificado, que você pode usar como alternativa. Você pode lançar alguma luz sobre isso?
Johannes Rudolph
1
@JohannesRudolph, sinceramente não faço ideia. Eu não olhei para OData nos últimos dois anos. Mas é bem provável que a Microsoft tenha adicionado suporte a JSON. Observe, porém, que isso não altera de nenhuma maneira as respostas aqui. JSON vs XML é apenas uma questão de apresentação dos recursos REST.
Franci Penov
1
Você pode especificar na solicitação qual formato você gostaria de ter. XML e JSON deve ser ambos suportados pela maioria das implementações por exemplo, regulação do cabeçalho Aceite para aplicação / json (a partir de Odata versão 2)
i000174
31

O REST é uma técnica de design genérica usada para descrever como um serviço da Web pode ser acessado. Usando o REST, você pode fazer solicitações http para obter dados. Se você experimentá-lo em seu navegador, seria como acessar um site, exceto que, em vez de retornar uma página da Web, você retornaria o XML. Alguns serviços também retornam dados no formato JSON, que é mais fácil de usar com Javascript.

OData é uma tecnologia específica que expõe dados através do REST.

Se você quiser resumir bem rápido, pense nisso como:

  • REST - padrão de design
  • OData - habilitando a tecnologia
Rush Frisby
fonte
20

Em 2012, o OData passou por uma padronização, então vou adicionar uma atualização aqui ..

Primeiro as definições:

REST - é uma arquitetura de como enviar mensagens por HTTP.

OData V4 - é uma implementação específica do REST, realmente define o conteúdo das mensagens em diferentes formatos (atualmente eu acho que é AtomPub e JSON). O ODataV4 segue os princípios de descanso.

Por exemplo, o pessoal do asp.net geralmente usa o controlador WebApi para serializar / desserializar objetos em JSON e fazer com que o javascript faça alguma coisa com ele. O objetivo de Odata é poder consultar diretamente a partir da URL com opções prontas para uso.

tatigo
fonte
10

Na documentação do OData :

O Protocolo OData é um protocolo no nível do aplicativo para interagir com dados via serviços da web RESTful.

...

O Protocolo OData é diferente de outras abordagens de serviço da Web baseadas em REST, pois fornece uma maneira uniforme de descrever os dados e o modelo de dados.

Mcanti
fonte
4

OData (Open Data Protocol) é um padrão OASIS que define as práticas recomendadas para criar e consumir APIs RESTful. O OData ajuda você a se concentrar na lógica de negócios ao criar APIs RESTful sem se preocupar com as abordagens para definir cabeçalhos de solicitação e resposta, códigos de status, métodos HTTP, convenções de URL, tipos de mídia, formatos de carga e opções de consulta etc. O OData também orienta você sobre rastreando alterações, definindo funções / ações para procedimentos reutilizáveis ​​e enviando solicitações assíncronas / em lote etc. Além disso, o OData fornece facilidade de extensão para atender a quaisquer necessidades personalizadas de suas APIs RESTful.

As APIs RESTful do OData são fáceis de consumir. Os metadados OData, uma descrição legível por máquina do modelo de dados das APIs, permitem a criação de proxies e ferramentas genéricas poderosas de clientes. Alguns deles podem ajudá-lo a interagir com o OData mesmo sem saber nada sobre o protocolo. As 6 etapas a seguir demonstram 6 cenários interessantes de consumo de OData em diferentes plataformas de programação. Mas se você não é um desenvolvedor e gostaria de simplesmente jogar com o OData, o XOData é o melhor começo para você.

para mais detalhes em http://www.odata.org/

RajeshVerma
fonte
4

ODATA é um tipo especial de REST, no qual podemos consultar dados uniformemente a partir da URL.

Minh Nguyen
fonte
2

RESTO significa RE apresentação S tate T ransferência que é um estilo de arquitetura baseada em recursos. Baseado em recursos significa que dados e funcionalidades são considerados recursos.

OData é um protocolo baseado na Web que define um conjunto de práticas recomendadas para criar e consumir serviços da Web RESTful. OData é uma maneira de criar serviços da Web RESTful, portanto, uma implementação do REST.

Ishara
fonte