Qual è il bisogno di Odata quando ho JSON?

21

Sto cercando di capire il punto di Odata e quando avrebbe senso. In questo momento, come lavoro, utilizzo il controller ASP.NET e MVC / WebApi per serializzare / deserializzare oggetti in JSON e fare in modo che javascript faccia qualcosa con esso.

Da quello che posso dire del vantaggio di OData è la possibilità di interrogare direttamente dall'URL ... Ma dal momento che sto scrivendo il codice client e server non ce n'è bisogno.

Qualcuno potrebbe mai analizzare i risultati di una query ODaya in javascript ??

Forse OData ha più a che fare con un endpoint generico per TUTTI i client per ottenere informazioni dettagliate da una query che JSON non fornisce? Quindi, se fossi un fornitore di dati, suppongo che questo sia ciò che odata è per?

Aiutami a capire lo scopo e l'uso di REST / JSON / ODATA.

    
posta punkouter2018 07.11.2013 - 16:54
fonte

4 risposte

39

JSON è solo un formato di interscambio dati basato su JavaScript.

REST è uno stile di architettura mentre OData è una specifica implementazione di REST progettata per generare e utilizzare dati, che supporta due formati, AtomPub e JSON.

Quindi la differenza tra JSON con plain REST e OData sono le opzioni in OData per la manipolazione dei dati, ad esempio, se interrogiamo i dati usando il protocollo OData, possiamo specificare le seguenti opzioni nell'URI,

  • $ orderby
  • $ top
  • $ saltare
  • $ filtro
  • $ formato
  • $ selezionare

Possiamo fare proiezione, collegare le risorse, ecc. e tutte queste opzioni sono disponibili immediatamente. Ora immagina se dovessimo fornire tutte queste funzionalità nel nostro servizio REST allora dovremmo,

  • Implementa tutti loro
  • Crea le nostre convenzioni / parole chiave per le diverse operazioni

Non è solo un sacco di lavoro, ma porta anche a incongruenze e crea una curva di apprendimento per i nostri consumatori di dati.

    
risposta data 26.11.2013 - 16:27
fonte
5

JSON o JavaScript Object Notation è semplicemente un formato o uno standard per i dati. È un formato concordato per la trasmissione di qualcosa come un nome di accesso OPPURE qualcosa che deve essere consumato da un servizio REST.

Vedi questa parte: link

Although originally derived from the JavaScript scripting language, JSON is a language-independent data format, and code for parsing and generating JSON data is readily available in a large variety of programming languages.

Non fa parte di alcun particolare linguaggio di programmazione, quindi sistemi diversi possono passare facilmente i dati, se sanno che stanno usando JSON.

Come per REST è semplicemente uno stile di architettura utilizzato per i servizi web.

Vedi questa parte: link

Un modo per pensarci, è se volessi scrivere un servizio web con cui molti computer diversi possano parlare ... e scambiare informazioni. Potresti scrivere il tuo servizio web per accettare i dati tramite l'URL

 http://www.myservice.com/specialRESTService?name=punkouter

La risposta potrebbe essere un oggetto JSON che segnala la ricezione dei tuoi dati.

{
    "name": "punkouter",
    "status": "service downloaded your data",
}

Non avevo mai sentito parlare di OData, quindi l'ho cercato su google:

OData is built on the AtomPub protocol and JSON where the Atom structure is the envelope that contains the data returned from each OData request. An OData request uses the REST model for all requests. Each REST command is a POST, GET, PUT, PATCH, or DELETE http request (mapping to CRUD) where the specifics of the command are in the url.

GET: Get a collection of entities (as a feed document) or a single entity(as an entry document).

POST: Create a new entity from an entry document.

PUT: Update an existing entity with an entry document.

PATCH: Update an existing entity with a partial entry document.

DELETE: Remove an entity.

Sembra che OData sia qualcosa di scritto per accrescere un'architettura in stile REST vaniglia .. Ma sembra che possa darti qualche cosa in più per farti andare, invece di dover scrivere cose da zero in C # o in qualunque lingua tu sia utilizzando.

Se lavori ti sta spingendo a usare OData, staresti ancora usando JSON..ma all'interno del framework OData / standard scritto da Microsoft e altri.

Would anyone ever parse the results of a OData (sic) query in javascript??

Sì, dal momento che (sembra) sta usando JSON. Sarebbe perfettamente naturale usare JS.

Maybe OData is more about providing a generic endpoint for ALL clients to get detailed information from a query that JSON does not provide ? So if I was a provider of data then I suppose that is what Odata is for ?

Odata fornirebbe un servizio REST .. ma con alcuni servizi standard aggiunti su un semplice endpoint del servizio REST "generico". Ai clienti non interessa se si sta utilizzando OData o si sta eseguendo il proprio servizio C #. fino a quando le risposte erano in un formato concordato (come JSON). Tuttavia, per il tuo lavoro forse vogliono usare OData perché fornisce molte funzionalità "out of the box".

    
risposta data 07.11.2013 - 17:31
fonte
2

Per la domanda "perché", c'è una definizione molto buona nel libro API Web RESTful - essenzialmente OData implementa un modello di raccolta, in cui una raccolta è una risorsa che fornisce un elenco di risorse tramite collegamenti.

    
risposta data 26.11.2013 - 04:35
fonte
1

OData è l'implementazione specifica del servizio RESTful con uno standard per l'interfaccia. Il vantaggio è quando esponi l'API del tuo prodotto e dici che è conforme allo standard OData, per gli utenti che hanno già familiarità con OData può utilizzarlo prontamente senza perdere molto tempo a leggere la documentazione dell'API.

Svantaggi: Mentre OData è eccezionale nell'esporre il database sottostante, la specifica non include il supporto per le transazioni e non può essere utilizzata in applicazioni in cui possiamo avere un servizio RESTful che funge sia da interfaccia DB che da interfaccia di transazione.

    
risposta data 29.09.2016 - 04:48
fonte

Leggi altre domande sui tag