Saltar al contenido
MundoProgra JSON:API
Menú

Referencia

Límites conocidos

Lo que el paquete no hace, y algunos detalles que conviene saber antes de encontrarlos por sorpresa.

Límites

  • No registra rutas ni controladores. Los endpoints, y su autorización, son tuyos. Mira Primeros pasos.
  • Extensiones y perfiles. Se negocia JSON:API 1.1, pero las extensiones y los perfiles no se implementan: cualquier ext se rechaza con 415 y los perfiles se ignoran. Tampoco hay lid.
  • PUT. No se valida salvo con allow_put; la especificación solo define PATCH para actualizar.
  • include sin relación cargada. Un include sobre una relación que no se cargó se ignora en silencio: la carga anticipada es trabajo de jsonApiInclude().
  • Paginadores propios. Un paginador que implemente el contrato de Laravel pero no sea la clase LengthAwarePaginator de Illuminate no recibe links ni meta.
  • Endpoints de relación. Las reglas de cardinalidad (un identificador o una lista) y de tipo las escribe tu aplicación. Mira Endpoints de relación.
  • Esquema de las pruebas. El esquema oficial de JSON:API que se usa en las pruebas del paquete es el de la versión 1.0.

Detalles que conviene saber

Observados en una aplicación real que usa el paquete:

  • El idioma del detail de una validación. En un error de validación, el title sale en el idioma del paquete, pero el detail es el mensaje de la regla de Laravel, en el idioma de tu aplicación. Si no tienes traducidos los textos de validación (por ejemplo lang/es/validation.php), saldrá en inglés aunque el title salga en español.
  • La regla Password. Cuando una contraseña incumple varias reglas de Password::min(8)->letters()->…, solo el primer error lleva el código validation.password; los demás salen con validation.failed, porque esos mensajes no traen el nombre de la regla.
  • Las cabeceras. Con strict_headers en true, un cliente que manda Accept: application/json dentro del alcance del paquete recibe un 406. Si migras una API con clientes que ya existen, mira Configuración.