Jump to content

Overview of RESTful API Description Languages

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by TheSoulKa (talk | contribs) at 13:10, 8 June 2020 (API Blueprint only converts into API Elements. I did not find any parser that consumes API Elements. Thus there is no possibility to convert API Blueprint into server or client code. If anyone finds a source that provides a parser from API Elements into a server or client code I will gladly undo my changes.). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

RESTful (representational state transfer) API (application programming interface) DLs (description languages) are formal languages designed to provide a structured description of a RESTful web API that is useful both to a human and for automated machine processing. API Description Languages are sometimes called interface description languages (IDLs). The structured description might be used to generate documentation for human programmers; such documentation may be easier to read than free-form documentation, since all documentation generated by the same tool follows the same formatting conventions. Additionally, the description language is usually precise enough to allow automated generation of various software artifacts, like libraries, to access the API from various programming languages, which takes the burden of manually creating them off the programmers.

History

There are two previous major description languages: WSDL2.0 (Web Services Description Language) and WADL (Web Application Description Language). Neither is widely adopted in the industry for describing RESTful APIs, citing poor human readability of both and WADL being actually unable to fully describe a RESTful API.[1]

Alternatives

Hypertext-driven APIs

An alternative approach to building RESTful APIs is known under the acronym HATEOAS (Hypermedia as the Engine of Application State). In this approach, the client software is not written to a static interface description shared through documentation. Instead, the client is given a set of entry points and the API is discovered dynamically through interaction with these endpoints. HATEOAS was introduced in Roy Fielding's doctoral thesis Architectural Styles and the Design of Network-based Software Architectures. HATEOAS has been the original vision for RESTful APIs which distinguished them from RPC mechanisms.[2]

List of RESTful API DLs

List of data description languages

A significant part of RESTful API description is the specification of returned data structures. The IDL might either specify its own format or use an existing data description format. A notable example which many RESTful API DLs use is JSON Schema.

  • json:api
  • JSON Schema
    • used by OpenAPI, Google APIs Discovery,[6] I/O Docs
  • Apache Avro
  • JSON-RPC 2.0
    • used by Barrister

Comparison of RESTful API DLs

The community around RESTful API DLs is active and the landscape is still changing. According to a presentation by Akana, the most active projects in this area are OpenAPI, RAML and API Blueprint.[1]

Sponsor Initial commit Latest stable release Stable release date Software license[7] Format Open Source Code generation (client) Code generation (server)
RAML MuleSoft September, 2013 1.0 May 16, 2016 Apache 2.0 YAML Yes Yes Yes
API Blueprint Apiary April, 2013 MIT Markdown Yes No No
OpenAPI Open API Initiative (OAI) July, 2011 3.0 July 26, 2017 Apache 2.0 JSON or YAML Yes Yes Yes
SERIN UNIFOR 2011 2.0 December 2014 Creative Commons RDF Yes No Yes

Frameworks

Many server frameworks interoperate with one or more IDLs.

References

  1. ^ a b http://www.slideshare.net/SOA_Software/api-description-languages
  2. ^ Fielding, Roy. "REST APIs must be hypertext-driven". Retrieved 4 November 2015.
  3. ^ "OASIS Open Data Protocol (OData) TC - OASIS".
  4. ^ "Barrister RPC - About".
  5. ^ Lira, Hermano Albuquerque; Dantas, Jose Renato Villela; Muniz, Bruno de Azevedo; Nunes, Tadeu Matos; Farias, Pedro Porfirio Muniz (2015-01-01). "An Approach to Support Data Integrity for Web Services Using Semantic RESTful Interfaces". Proceedings of the 24th International Conference on World Wide Web. WWW '15 Companion. New York, NY, USA: ACM: 1485–1490. doi:10.1145/2740908.2743042. ISBN 9781450334730.
  6. ^ https://developers.google.com/discovery/v1/reference/apis
  7. ^ Licenses here are a summary, and are not taken to be complete statements of the licenses. Some packages may use libraries under different licenses.