MVCBr – Implementando protocolo OData sobre RESTful

O que é OData?

É uma especificação para consumir recursos de banco de dados em servidores que implementam RESTful. A solicitação de operação no banco de dados é enviada para o servidor em uma URL e retorna o resultado da consulta do banco de dados.

Através dos métodos de comunicação com o servidor RESTful é estabelecido o tipo de operação a ser executado:

  • GET – Solicita que retorne um conjunto de dados do banco de dados;
  • POST – Envia um INSERT para o banco de dados;
  • PUT – Envia um UDPATE  para o banco de dados – no OData é necessário enviar todas as colunas;
  • PATCH – Envia um UPDATE  parcial – não precisa mandar todas as colunas;
  • DELETE – apaga um registro no banco de dados;

Exemplo de GET:

  1. http://servidor:8080/OData/OData.svc/produtos(1) – Executa uma busca nos registro de produtos e retornar o produto 1;
  2. http://servidor:8080/OData/OData.svc/produtos(1)/clientes – retorna os clientes que compraram o produto;
  3. http://servidor:8080/OData/OData.svc/produtos(1)/clientes(estado=’SP’) – retorna os clientes que compraram o produto 1 e que estão no estado SP;
  4. http://servidor:8080/OData/OData.svc/produtos?$top=10 – retorna os 10 primeiro itens da tabela/coleção produtos;
  5. http://servidor:8080/OData/OData.svc/produtos?$top=10&$skip=20 – salta os 20 primeiros registros e retornar se próximos 10 produtos;
  6. http://servidor:8080/OData/OData.svc/produtos?$select=codigo,nome,unidade – retorna as colunas codigo,nome,undiade;
  7. http://servidor:8080/OData/OData.svc/produtos?$filter=unidade eq ‘KG’ -> retorna os produto que a unidade seja igual a KG;

Notações de filtro:

  • eq – equal        =
  • lt – less than   <
  • le – less equal   <=
  • ne – not equal   <>
  • gt  – great than  >
  • ge  – great equal >=

 

Ver especificação em:   OData.org

1 comentário

  1. Olá.. Obrigado pela iniciativa;

    É possível você disponibilizar um Demo Simples usando o protocolo OData?

    Estou no aguardo!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *