PHPackages                             pramod/api-consumer - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. pramod/api-consumer

ActiveLibrary

pramod/api-consumer
===================

Api consumer

1.5.5(5y ago)04MITPHPPHP ^7.1CI failing

Since Jul 1Pushed 5y ago2 watchersCompare

[ Source](https://github.com/pkatuwal/api-consumer)[ Packagist](https://packagist.org/packages/pramod/api-consumer)[ Docs](https://github.com/pramod/api-consumer)[ RSS](/packages/pramod-api-consumer/feed)WikiDiscussions master Synced 1w ago

READMEChangelogDependencies (5)Versions (14)Used By (0)

Api Consumer
============

[](#api-consumer)

This Package developed to request various external api without creating external service or traits.

Installation
------------

[](#installation)

You can install the package via composer:

```
composer require pramod/api-consumer
```

Usage
-----

[](#usage)

Copy Config

```
php artisan vendor:publish --provider="Pramod\ApiConsumer\ApiConsumerServiceProvider" --tag="config"
```

If you are using **Lumen**Copy Config

```
cp vendor/pramod/ApiConsumer/config/api-consumer.php config/
```

Autoload Config

```
$app->configure('api-consumer');
```

```
// Register Service Provider
 $this->app->register(ApiConsumerServiceProvider::class);
```

*Please Refer Test Case For Complete Reference which is located in tests/ExampleTest.php*

### Basic Syntax

[](#basic-syntax)

```
Api::consume('ebill')
    ->via('customers/pramodk_home/documents')
    ->with([
        'headers'=>[
                    'Authorization'=>'xx',
                    'Content-Type'=>'',
                    'Accept'=>''
                    ],
        'method'=>'POST',
        'version'=>'v1',
        'payload'=>[
            'name'=>'name is here'
        ]
    ])
    ->superChargedBy([
        'cache'=>[
            'ttl'=>20,
            'key_prefix'=>'documents'
        ]
    ])
    ->toArray();
```

Define your custom settings\[yml\]
----------------------------------

[](#define-your-custom-settingsyml)

You can create your own config to manage and get proper visualization of endpoint used in your app.

1. Create Folder inside App eg, app/Consumers/covid.yml or you can create your own folder where you have to separate **yml** as per your service name.
2. Sample For yaml

```
filename:app/Consumers/covid.yml

```

```
summary:
    uri: summary
    story: this is summary uri
countries:
    uri: countriesRoute
    story: All countries Route
```

```
Where **uri** must be your request path and story for short descriptions or uri.

```

3. Final Request

    Sample Code

    ```
    //add second param on your via method

    //for static uri eg, canvasenx.com.np/users
    return Api::consume('covid19api')
        ->via('summary', true)
        ->toCollection();

    //for dynamic uri you must add your uri payload with value as
    return Api::consume('covid19api')
        ->via('countryDayOneRoute', [
            'country'=>'nepal'
        ])
        ->toCollection();

    ```

    Note: your configuration should look like this

    ```
    summary:
        uri: summary
        story: this is summary uri
    countries:
        uri: countriesRoute
        story: All countries Route
    countryDayOneRoute:
        uri: dayone/country/{country}
        story: Returns all cases by case type for a country from the first recorded case. Country must be the country_slug from /countries. Cases must be one of confirmed, recovered, deaths"
    ```

    Note: Your Dynamic uri must be covered with curly brackets {}.
4. Final Words for **Via** injections

    Adding **true** or **array** on second parameters will observe your custom class which is defined in config file as **custom\_consumer** array file

    ```
    'covid19api'=>[
        'baseUri'=>'https://api.covid19api.com/',
        'custom_consumer' => [
            'Consumers/covid'
        ],
        'timeout'=>10
    ]
    ```

Monitor Your Request Log
========================

[](#monitor-your-request-log)

You can monitor external call request, response and execution time which is stored as json format in your default log. **To activate log monitor** you should enable middleware on your application

```
$app->middleware([
    Pramod\ApiConsumer\Middleware\LogRequestMiddleware::class
]);
```

Call Your **Graphql** Api
=========================

[](#call-your-graphql-api)

1. Add Your Service setting on &lt;&lt;**config/api-consumer.php**&gt;&gt;

```
