29

OData is used by Netflix and in many of Microsoft's products (servers: CRM, Sharepoint, SQL Server; clients: Excel).

While OData is interesting, it has it's own set of benefits and trade-offs.

I've designed and build a custom search engine for internal use. Many developers are using the search engine for reporting and lists, replacing the reports and custom search/filter functionality in each line of business app with this search engine.

I have a decent system to allow querying/filtering in my search engine. It's all url driven so it's easy to use.

At this point, I want to add a little bit more functionality to the URL "command line". OData is a tempting choice because we use a lot of Microsoft tech already. It also has standard language for filters with Boolean logic, etc.

Are there any other legitimate standards based REST frameworks like OData that I should look at?

I'm not sure I need the full OData stack for what I'm doing. My simple query string based filtering is working very well at this point. Just want to conduct some due diligence so I can make an informed decision.

Thanks.

Edit

What I'm looking for is more of a framework for creating my search API. Lucene/Solr use a url syntax http://lucene.apache.org/solr/tutorial.html as does OData. Lucene/Solr aren't exactly what I'm looking for and are too complex for my scenario. However, they have a well defined url api.

I'm looking for any other well define url-based api examples. I want to see the "prior art" for defining a query/search syntax based on a url and query string parameters.

Will Hartung
  • 115,893
  • 19
  • 128
  • 203
Chris Weber
  • 5,555
  • 8
  • 44
  • 52

5 Answers5

25

While some will certainly argue, rolling your own is certainly an option; provided you can release a consumable schema and syntax or API library. Given that you carefully research the current standards landscape and borrow from established (albeit unfitting) implementations, you (and supporters) could be inclined to produce a new or extended standard; perhaps one that solves an unsolved problem.

However, obligatory:
xkcd #927

Dan Lugg
  • 20,192
  • 19
  • 110
  • 174
10

After some research it appears that no, there is not really a good alternative to OData at this point.

I'm saying this based on the features of Odata. Hopefully we'll see an alternative at some point.

Chris Weber
  • 5,555
  • 8
  • 44
  • 52
7

Facebook is developing GraphQL. Data can be queried using JSON queries:

{
  user(id: 3500401) {
    id,
    name,
    isViewerFriend,
    profilePicture(size: 50)  {
      uri,
      width,
      height
    }
  }
}

At the moment it is not usable. According to the Changelog they plan to release it as a kind of specification.

Here is another whitepaper

schoetbi
  • 12,009
  • 10
  • 54
  • 72
  • An alternatives to GraphQl and Odata is ORDS from Oracle https://www.progress.com/blogs/rest-api-industry-debate-odata-vs-graphql-vs-ords – ndh103 Jul 12 '18 at 09:49
4

Google is pushing for GData, which seems feature crippled.

hammett
  • 705
  • 4
  • 13
  • 2
    according to [the warning in this page](https://developers.google.com/gdata/docs/developers-guide), seems that GData is deprecated. – yair Jul 31 '16 at 17:59
3

If you are looking for a web compliant search mechanism, I suggest looking at Open Search

Darrel Miller
  • 139,164
  • 32
  • 194
  • 243
  • Are you sure this site is the official site? The links seem broken for instance [Open Search URL Template](http://www.opensearch.org/Specifications/OpenSearch/1.1#OpenSearch_URL_template_syntax) which would be very interested in leads to a page with no info??? – Chris Weber Sep 14 '11 at 16:05
  • It is the first result in Google, just looks to be a really bad site. – Chris Weber Sep 14 '11 at 16:06
  • Finally found the spec: http://www.opensearch.org/Specifications/OpenSearch/1.1/Draft_5 – Chris Weber Sep 14 '11 at 16:17
  • After looking at open search, it seems to have stalled. For example it doesn't say anything about faceted search. However, this might be the closest to an answer that I can find. – Chris Weber Sep 19 '11 at 22:54