logo

Paleta de lienzo: 隆Hazlo colorido!馃帹

Palette - Constructor visual de p谩ginas, no se requiere t铆tulo en dise帽o.

Demo en vivo Descargar Palette

Scroll

JSON:API vs. m贸dulo REST del n煤cleo

18/05/2025, by Ivan

TL;DR

Elige REST si tienes datos que no son entidades y quieres exponerlos. En todos los dem谩s casos, elige JSON:API.

Un poco m谩s detallado:

  • El m贸dulo REST del n煤cleo permite cualquier cosa (cualquier formato, cualquier l贸gica, cualquier m茅todo HTTP) y ofrece una configurabilidad extrema. Es potente pero complejo y, por lo tanto, relativamente fr谩gil.
  • JSON:API se centra en exponer la mayor fortaleza de Drupal (entidades/modelado de datos) de una manera coherente. Sencillo pero suficientemente potente para la mayor铆a de los casos de uso.

Matriz de caracter铆sticas

Comparaci贸n de alto nivel basada en caracter铆sticas entre JSON:API y REST.
Funcionalidad JSON:API REST Observaci贸n
Entidades expuestas como recursos 鉁旓笍 鉁旓笍 REST: necesitas configurar esto por cada tipo de entidad. JSON:API: todo se expone por defecto. Ambos: respetan el acceso a entidades.
Datos personalizados expuestos como recursos   鉁旓笍 Escribe plugins personalizados @RestResource. JSON:API solo admite entidades.
Obtener recursos individuales 鉁旓笍 鉁旓笍  
Obtener listas de recursos 鉁旓笍 m谩s o menos

REST: necesitas configurar una vista y establecer una visualizaci贸n "REST export".

Paginaci贸n de listas de recursos 鉁旓笍 Se requieren m贸dulos adicionales como Pager Serializer. REST: 隆no soportado! Las vistas REST export devuelven todos los recursos.
Filtrado de listas de recursos 鉁旓笍 m谩s o menos

REST: solo si creas un filtro expuesto para cada campo y cada posible operador

Ordenaci贸n de recursos 鉁旓笍    
Inclusiones/embebidos 鉁旓笍 Solo en HAL+JSON  
Sin envoltorio innecesario de valores de campo 鉁旓笍   Tanto la normalizaci贸n HAL como la normalizaci贸n por defecto (y por lo tanto todos los formatos) exponen exactamente las estructuras de datos PHP en memoria que usa Drupal, lo que resulta doloroso para los consumidores. JSON:API simplifica la normalizaci贸n de campos de cardinalidad y propiedad 煤nica.
Capacidad de omitir campos que el consumidor no necesita 鉁旓笍    
URLs consistentes 鉁旓笍    
El consumidor puede descubrir los tipos de recursos disponibles 鉁旓笍    
Estructura de respuesta independiente de Drupal 鉁旓笍   REST: la normalizaci贸n HAL en teor铆a es ajena a Drupal, pero en la pr谩ctica no lo es.
Librer铆as cliente 鉁旓笍    
Especificaci贸n extensible WIP    
Cero configuraci贸n 鉁旓笍   REST: cada definici贸n de plugin @RestResource puede exponerse, pero debe configurarse manualmente. Para cada uno, debes seleccionar los formatos permitidos, los proveedores de autenticaci贸n permitidos y opcionalmente los m茅todos HTTP permitidos.
JSON:API: todas las entidades se exponen autom谩ticamente, se respeta el acceso a entidades/campos, y todos los proveedores de autenticaci贸n instalados se permiten autom谩ticamente.

M谩s informaci贸n

Consulta la justificaci贸n para a帽adir el m贸dulo JSON:API al n煤cleo de Drupal, y la justificaci贸n de la arquitectura del m贸dulo.

Art铆culo de Drupal Documentation.