---
label: 'Enabling web services'
top_level: true
related:
  - core.content_structure
---
{% set content_structure_topic = render_var(help_topic_link('core.content_structure')) %}
<h2>{% trans %}What is a web service?{% endtrans %}</h2>
<p>{% trans %}A web service allows your site to provide its content and data to other web sites and applications. Typically, the data is transported via <a href="https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol">HTTP</a> in a serialized machine-readable format.{% endtrans %}</p>
<h2>{% trans %}What is serialization?{% endtrans %}</h2>
<p>{% trans %}Serialization is the process of converting complex data structures into text strings, so that they can be exchanged and stored. The reverse process is called <em>deserialization</em>. JSON and XML are the two most-commonly-used data serialization formats for web services.{% endtrans %}</p>
<h2>{% trans %}What is Hypertext Application Language (HAL)?{% endtrans %}</h2>
<p>{% trans %}<a href="http://stateless.co/hal_specification.html">Hypertext Application Language (HAL)</a> is a serialization format that supports linking, which enables web applications to follow links and explore relationships between the data and content items that are provided by the web service. Serialized HAL data can be provided in either JSON or XML format.{% endtrans %}</p>
<h2>{% trans %}What is HTTP Basic authentication?{% endtrans %}</h2>
<p>{% trans %}<a href="http://en.wikipedia.org/wiki/Basic_access_authentication">HTTP Basic authentication</a> is a method for authenticating requests by sending a user name and password along with the request.{% endtrans %}</p>
<h2>{% trans %}What modules provide web services?{% endtrans %}</h2>
<p>{% trans %}The following Drupal core modules provide web services:{% endtrans %}</p>
<dl>
  <dt>{% trans %}JSON:API module{% endtrans %}</dt>
  <dd>{% trans %}Exposes <em>entities</em> to other applications using a fully compliant implementation of the <a href="https://jsonapi.org">JSON:API Specification</a>. See {{ content_structure_topic }} for more information on content entities and fields.{% endtrans %}</dd>
  <dt>{% trans %}RESTful Web Services module{% endtrans %}</dt>
  <dd>{% trans %}Exposes entities and other resources to other applications using a <a href="https://en.wikipedia.org/wiki/Representational_state_transfer">REST</a> implementation. Data is exchanged using a serialization format such as HAL, and transferred using an authentication method such as HTTP Basic Authentication.{% endtrans %}</dd>
  <dt>{% trans %}Serialization module{% endtrans %}</dt>
  <dd>{% trans %}Provides a framework for adding specific serialization formats for other modules to use.{% endtrans %}</dd>
  <dt>{% trans %}HAL module or its contributed replacement.{% endtrans %}</dt>
  <dd>{% trans %}Adds support for serializing content entities using the JSON version of HAL.{% endtrans %}</dd>
  <dt>{% trans %}HTTP Basic Authentication module{% endtrans %}</dt>
  <dd>{% trans %}Provides a way for web services to be authenticated using HTTP Basic authentication against Drupal user accounts.{% endtrans %}</dd>
  <dt>{% trans %}RDF module{% endtrans %}</dt>
  <dd>{% trans %}Enriches your content with metadata to let other applications (e.g., search engines, aggregators, and so on) better understand its relationships and attributes. This semantically enriched, machine-readable output for your website uses the <a href="http://www.w3.org/TR/xhtml-rdfa-primer/">RDFa specification</a>, which allows RDF data to be embedded in HTML markup.{% endtrans %}</dd>
</dl>
<p>{% trans %}There are also contributed modules that provide web services.{% endtrans %}</p>
<h2>{% trans %}Additional resources{% endtrans %}</h2>
<ul>
  <li><a href="https://www.drupal.org/docs/8/core/modules/rest">{% trans %}Online documentation for the RESTful Web Services module{% endtrans %}</a></li>
  <li><a href="https://www.drupal.org/docs/8/modules/json-api">{% trans %}Online documentation for the JSON:API module{% endtrans %}</a></li>
  <li><a href="https://www.drupal.org/docs/8/modules/jsonapi/jsonapi-vs-cores-rest-module">{% trans %}Comparison of the RESTFul Web Services and JSON:API modules{% endtrans %}</a></li>
</ul>
