For historical reasons, the "link manager" services (which handle relation URIs, type URIs etc) for RESTful responses live in the rest
module. But, they actually belong in the hal
module, because it is functionality specific to the HAL module. (The HAL module has normalizers that use this link manager, and they're the only code that use it.)
The https://www.drupal.org/project/default_content uses the HAL normalization (and the HAL+JSON format) and until this change, it required you to also install the REST module. For no reason other than its normalizers would otherwise fail. That's no longer a problem now!
The rest
module provides a default/canonical "RESTful web services" implementation, that exposes e.g. entities via REST. But there are many possible implementations: JSON API (which has a spec too: http://jsonapi.org) is a good example, but also use more specific, non-standardized cases like "Default Content".
Backwards compatibility implications
Services: no code changes necessary
All existing services continue to function: the rest.link_manager
, rest.link_manager.type
and rest.link_manager.relation
services just point to the equivalent services in the hal
module. So, all existing code continues to function.
Of course, you're encouraged to upgrade. It may allow your module to no longer have to depend on the rest
module!
rest.settings.link_domain
configuration: change necessary
Any code that depends on the link_domain
key/value in the rest.settings
configuration will need to be updated to read that from hal.settings
instead. Your current value for that setting is migrated automatically by the update path.
hal
module no longer depends on rest
module
Finally, this also enabled an important bugfix: the hal
module no longer depends on the rest
module, as #2473749: Remove rest as a dependency of hal has been wanting to fix for almost two years now!
If you had tests or modules relying on the implicit dependency of the hal
module depending on the rest
module and hence automatically enabling it, you'll need to add an explicit dependency on the rest
module.