2017 © Pedro Peláez
 

symfony-bundle api-debug-bundle

Allows easy API consumer debugging with web debug toolbar extension.

image

pinkeen/api-debug-bundle

Allows easy API consumer debugging with web debug toolbar extension.

  • Monday, October 17, 2016
  • by pinkeen
  • Repository
  • 1 Watchers
  • 0 Stars
  • 636 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 1 Open issues
  • 11 Versions
  • 0 % Grown

The README.md

ApiDebugBundle

ApiDebugBundle in action, (*1)

This bundle adds a web debug toolbar tab which displays information about API consumer requests., (*2)

It aims to be universal and allow for easy integration with SDKs and HTTP client libraries., (*3)

Currently it supports Guzzle 6 out-of-the box., (*4)

It should be extremely easy to integrate with any http client using PSR-7 messages., (*5)

For Guzzle4-compatible version use the v1.0 tag., (*6)

For Symfony < 3.3-compatible version use the v2.0 tag., (*7)

Requirements

  • PHP 5.5.9
  • Symfony 3.3

Installation

The usual Symfony stuff., (*8)

The composer.json needs: "pinkeen/api-debug-bundle": "dev-master",., (*9)

The AppKernel.php needs: new Pinkeen\ApiDebugBundle\PinkeenApiDebugBundle(),., (*10)

Add the following to your app/config/routing_dev.yml if you want to be able to view raw body data:, (*11)

_api_debug:
    resource: "@PinkeenApiDebugBundle/Resources/config/routing.yml"
    prefix:   /_profiler

Services

New symfony approach

All services expect GuzzleClientFactory and RingPHPHandlerFactory are private, which means you cannot fetch services directly from the container via $container->get()., (*12)

They are also automatically registered and set to autowire, all you need to do add type-hinted service to your class as an argument of contructor., (*13)

// src/AppBundle/Service/FooService.php
// ...

use Pinkeen\ApiDebugBundle\Bridge\Guzzle\Middleware\DataCollectorMiddleware;

class FooService
{
    private $dataCollectorMiddleware;

    public function __construct(DataCollectorMiddleware $dataCollectorMiddleware)
    {
        $this->dataCollectorMiddleware = $dataCollectorMiddleware;
    }

    // ...
}

Usage

Integrate with your custom client

Firstly you have to subclass AbstractCallData which holds data from a single API request., (*14)

If you are using a PSR-7 comptible client then you can use PsrCallData instead of writing your own data class., (*15)

Then every time your API consumer makes a request dispatch an ApiEvents::API_CALL event., (*16)

    use Pinkeen\ApiDebugBundle\ApiEvents;
    use Pinkeen\ApiDebugBundle\Event\ApiCallEvent;

    /* ... */
    /** @var $eventDispatcher \Symfony\Component\EventDispatcher\EventDispatcher */
    $eventDispatcher->dispatch(
        ApiEvents::API_CALL, 
        new ApiCallEvent(
            new YourApiCallData(/* your params */)
        )
    );

Guzzle

You've got two options here, either:, (*17)

Let the bundle create the client for you..., (*18)

    /** @var $guzzleClientFactory \Pinkeen\ApiDebugBundle\Bridge\Guzzle\Service\GuzzleClientFactory */
    $guzzleClientFactory->create([
        /* Guzzle client config (optional).
         * It is passed directly to GuzzleHttp\Client constructor. */
    ]);

... or push the collector handler to your middleware stack., (*19)

    $handler = new GuzzleHttp\HandlerStack(new GuzzleHttp\Handler\CurlHandler());
    /** @var $dataCollectorMiddleware \Pinkeen\ApiDebugBundle\Bridge\Guzzle\Middleware\DataCollectorMiddleware */
    $dataCollectorMiddlewareHandler = $dataCollectorMiddleware->getHandler();
    $handler->push($dataCollectorMiddlewareHandler);
    $client = new GuzzleHttp\Client(['handler' => $handler]);

RingPHP

Let the bundle create the handler for you:, (*20)

    /** @var $ringPHPHandlerFactory \Pinkeen\ApiDebugBundle\Bridge\RingPHP\Service\RingPHPHandlerFactory */
    $handler = $ringPHPHandlerFactory->create(new CurlHandler());

Use the collector_middleware service to create your RingPHP middleware and wrap it around your base handler:, (*21)

    /** @var $dataCollectorMiddleware \Pinkeen\ApiDebugBundle\Bridge\RingPHP\Middleware\DataCollectorMiddleware */
    $ringPhpHandler = $dataCollectorMiddleware->createHandler(new GuzzleHttp\Ring\Client\CurlHandler(), 'apiname');

PS Nicely integrates with elasticsearch-php 2.0., (*22)

Production

For production environment you probably want to skip all of the data gathering., (*23)

You should take care of that yourself, unless you're using Pinkeen\ApiDebugBundle\Bridge\Guzzle\Service\GuzzleClientFactory or Pinkeen\ApiDebugBundle\Bridge\RingPHP\Service\RingPHPHandlerFactory which skip it when not in debug mode., (*24)

Notes

I haven't found an easy way to get call duration out of guzzle6, so there's a regression here. If anybody has an idea please give me a shout., (*25)

The Versions

17/10 2016

dev-master

9999999-dev

Allows easy API consumer debugging with web debug toolbar extension.

  Sources   Download

MIT

The Requires

 

api debug bundle symfony guzzle toolbar

17/10 2016

v2.3.3

2.3.3.0

Allows easy API consumer debugging with web debug toolbar extension.

  Sources   Download

MIT

The Requires

 

api debug bundle symfony guzzle toolbar

17/10 2016

v2.3.2

2.3.2.0

Allows easy API consumer debugging with web debug toolbar extension.

  Sources   Download

MIT

The Requires

 

api debug bundle symfony guzzle toolbar

17/10 2016

v2.3.1

2.3.1.0

Allows easy API consumer debugging with web debug toolbar extension.

  Sources   Download

MIT

The Requires

 

api debug bundle symfony guzzle toolbar

17/10 2016

v2.3

2.3.0.0

Allows easy API consumer debugging with web debug toolbar extension.

  Sources   Download

MIT

The Requires

 

api debug bundle symfony guzzle toolbar

17/10 2016

v2.2

2.2.0.0

Allows easy API consumer debugging with web debug toolbar extension.

  Sources   Download

MIT

The Requires

 

api debug bundle symfony guzzle toolbar

12/08 2015

v2.1.1

2.1.1.0

Allows easy API consumer debugging with web debug toolbar extension.

  Sources   Download

MIT

The Requires

 

api debug bundle symfony guzzle toolbar

11/08 2015

dev-ringphp

dev-ringphp

Allows easy API consumer debugging with web debug toolbar extension.

  Sources   Download

MIT

The Requires

 

api debug bundle symfony guzzle toolbar

11/08 2015

v2.1

2.1.0.0

Allows easy API consumer debugging with web debug toolbar extension.

  Sources   Download

MIT

The Requires

 

api debug bundle symfony guzzle toolbar

28/06 2015

v2.0

2.0.0.0

Allows easy API consumer debugging with web debug toolbar extension.

  Sources   Download

MIT

The Requires

 

api debug bundle symfony guzzle toolbar

11/04 2015

v1.0

1.0.0.0

Allows easy API consumer debugging with web debug toolbar extension.

  Sources   Download

MIT

The Requires

 

api debug bundle symfony guzzle toolbar