---
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 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 JSON, 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 %}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>
</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>
