Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

Decoding REST: Simplifying Interconnected IT Systems

A high-level introduction to using this technology.

Representational State Transfer (REST) is a software architecture and set of rules to allow easy communication between systems over the internet. It uses HTTP (or HTTPS) for this communication to talk to an internet address (specified by a Uniform Resource Identifier, URI) and was developed alongside this protocol. On one side there is a RESTful server providing data to anyone asking the right questions: GET, POST, PUT, DELETE along a specific term will send back data in a machine-readable format. The other side will often be a software / script that is collection data for a specific object. An example from our word of genomics could be: Find information for a specific gene, i.e. collect annotation (genomic location, expression data, disease links, etc.) from different databases using the common gene name.

A key concept is that the architecture is “stateless”, each query is independent of the previous one. This means that all queries more complex than a single check of a single object have to be constructed as part of a script that is checking the answers and constructing the next query based on these results. (This is in contract to the current artificial intelligence language models like ChatGPT, that “remember” the context of the “conversation” and you can build on previous answers.) For commercial products, there are often specific software libraries (APIs) to communicate with the provided REST server. This allows, e.g. the automation of specific tasks related to these products and the data they produce.

Results are usually provided in XML or JSON format. To test the basic idea or to test a specific server, the command-line tool curl can be used:

# verbose-print the data from this URL:
curl -v http://www.example.com
# print response to a json file
curl -o out.json http://www.example.com/index.html

For further testing and for developing quesry scripts, programs with a user interface might be more useful, examples are: Postman, Insomnia

Examples from our field of genomics: Alongside of other technologies like http (web) and Perl API access, the genome annotation system EnsEMBL has provided data via REST API Endpoints for a long time, allowing the automated retrieval of genetic information. Sequencing company Illumina Inc. makes use of REST, providing libraries e.g. for working with their products BaseSpace, Clarity LIMS and LRM. They also have a nice introduction to the REST concepts here.

Image by Gerd Altmann from Pixabay