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
extse rechaza con415y los perfiles se ignoran. Tampoco haylid. PUT. No se valida salvo conallow_put; la especificación solo definePATCHpara actualizar.includesin relación cargada. Unincludesobre una relación que no se cargó se ignora en silencio: la carga anticipada es trabajo dejsonApiInclude().- Paginadores propios. Un paginador que implemente el contrato de Laravel pero no sea la clase
LengthAwarePaginatorde Illuminate no recibelinksnimeta. - 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
detailde una validación. En un error de validación, eltitlesale en el idioma del paquete, pero eldetailes el mensaje de la regla de Laravel, en el idioma de tu aplicación. Si no tienes traducidos los textos de validación (por ejemplolang/es/validation.php), saldrá en inglés aunque eltitlesalga en español. - La regla
Password. Cuando una contraseña incumple varias reglas dePassword::min(8)->letters()->…, solo el primer error lleva el códigovalidation.; los demás salen conpassword validation., porque esos mensajes no traen el nombre de la regla.failed - Las cabeceras. Con
strict_enheaders true, un cliente que mandaAccept: application/jsondentro del alcance del paquete recibe un406. Si migras una API con clientes que ya existen, mira Configuración.