pccomponentes/apixception-bundle
Composer 安装命令:
composer require pccomponentes/apixception-bundle
包简介
Bundle to handle and render custom exceptions in API-Style projects using symfony kernel events.
README 文档
README
El objetivo de esta librería es ofrecer una pequeña ayuda al programador a la hora de renderizar las excepciones que llegan al controlador, como respuestas del API.
Está integrado usando el evento Kernel.exception del Kernel de Symfony Framework v4.
Las respuestas serán en formato JSON (Symfony\Component\HttpFoundation\JsonResponse).
Instalación
-
Descarga e instala el vendor usando composer.
$ composer require pccomponentes/apixception-bundle
-
Añade el bundle en
config\bundles.php. Por ejemplo:<?php return [ Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true], PcComponentes\Apixception\ApixceptionBundle::class => ['all' => true] ];
-
Escribe el fichero de configuración del bundle indicando las excepciones que deseas capturar, y su transformación para generar la respuesta. Para ello, crea un archivo con nombre
apixception.yamlen la rutaconfig/packages. Un ejemplo de su contenido es:apixception: - exception: PcComponentes\Ddd\Domain\Exception\NotFoundException transformer: PcComponentes\Apixception\Core\Transformer\JsonSerializableTransformer http_code: 404 - exception: PcComponentes\Ddd\Domain\Exception\ExistsException transformer: PcComponentes\Apixception\Core\Transformer\JsonSerializableTransformer http_code: 409 - exception: PcComponentes\Ddd\Domain\Exception\LogicException transformer: PcComponentes\Apixception\Core\Transformer\JsonSerializableTransformer http_code: 409 - exception: \Throwable transformer: PcComponentes\Apixception\Core\Transformer\NoSerializableTransformer http_code: 500
Este archivo se modificará para añadir o quitar las reglas que sean necesarias para el proyecto en el que se use.
Configuración
Este archivo debe contener un listado de reglas. Cada regla debe tener:
exception: Nombre de la clase o interface, namespace incluído, que representa el tipo de la excepción que se quiere capturar.http_code: Código HTTP que devolverá el objetoSymfony\Component\HttpFoundation\JsonResponse.transformer: Clase con namespace incluído, que transformará la excepción en un array de datos serializables por el objetoSymfony\Component\HttpFoundation\JsonResponse.
Creación de un nuevo transformador
Aunque la aplicación proporciona un par de transformadores básicos, está abierto para que cada proyecto pueda inyectar sus propios transformadores.
Las excepción deben implementar la interfaz \Throwable o de heredar de clases que ya lo hagan.
Los transformadores son clases que deben heredar de la clase PcComponentes\Apixception\Core\Transformer\ExceptionTransformer.
Por cuestiones de simplicidad, no se permite inyectar dependencias, así que heredar de esta clase implica tener un constructor vacío y contener lógica de transformación ligera.
Un ejemplo de un transformador propio sería:
<?php namespace MyApp\Transformers; use PcComponentes\Apixception\Core\Transformer\ExceptionTransformer; class CustomTransformer extends ExceptionTransformer { public function transform(\Throwable $exception): array { return [ 'exception' => \get_class($exception), 'message' => $exception->getMessage(), ]; } }
Si llegara una excepción personalizada, con métodos únicos, puedes usarlas. Asegúrate que en la configuración garantice que a tu transformador sólo llegan excepciones del tipo que esperas, o haz que tu transformador actúe en consecuencia.
Transformadores disponibles
La librería proporciona dos transformadores que puedes usar desde el primer momento.
PcComponentes\Apixception\Core\Transformer\NoSerializableTransformer: Este transformador es capaz de renderizar cualquier tipo de excepción. En la respuesta meterá un objeto JSON con las propiedadesexceptioncon el nombre de la excepción, ymessage, con el mensaje de la excepción.PcComponentes\Apixception\Core\Transformer\JsonSerializableTransformer: Este transformador será capaz de renderizar cualquier excepción que implemente la interfaz\JsonSerializable. El array que devuelva dicho método, será lo que se incluya en la respuesta.
Excepciones
Como se ha comentado anteriormente, esta librería acepta excepciones de todo tipo.
pccomponentes/apixception-bundle 适用场景与选型建议
pccomponentes/apixception-bundle 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 105.69k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2018 年 05 月 09 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 pccomponentes/apixception-bundle 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 pccomponentes/apixception-bundle 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 105.69k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 30
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-05-09