Skip the setup. Our team will have you taking orders in 24 hours. Get started →
Version notice: This documentation is for version 3, but the latest available version is version 4.
Extensions

API Extension

Introduction Features Installation Manually Create an API resource Resource Transformer Tokens User tokens cURL Example Successful response Using tokens...

APIs is an extension that allows you to build RESTful APIs and manage them within a TastyIgniter application.

However, it accomplishes more than just that, you may override the api actions (verbs) with your own logic. Default behavior logic for several common verbs are supported — create, store, show, edit, update, destroy.

  • Auto Generate Controller (CRUD)
  • Auto Generate Resource Response Class (For modeling JSON response)
  • Support eager loading relationships

To install this extension, click on the Add to Site button on the TastyIgniter marketplace item page or search for Igniter.Api in Admin System > Updates > Browse Extensions

If you are using an Apache installation you will need to add these lines to your .htaccess file for tokens to be passed correctly.

RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]

The below command will generate both Controller and Transformer for the specified resource

php artisan create:apiresource Acme.Extension ResourceName

After the resource has been generated, add it to routes by registering a new api resource.

Register API Resource

public function registerApiResources()
{
    return [
        'menus' => [
            'name' => 'Menus',
            'description' => 'Description of this API resource',
            'controller' => \Acme\Extension\ApiResources\Menus::class,
        ],
    ];
}

The array keys represents the resource endpoints

Response are transformed using laravel's Eloquent API Resources.

Example of a Resource Transformer

<?php namespace Igniter\Local\ApiResources\Transformers;

use League\Fractal\TransformerAbstract;

class MenuTransformer extends TransformerAbstract
{
	public function transform(Mennu $menu)
	{
	    return [
	        'id'      => (int) $menu->menu_id,
	        'name'    => $menu->menu_name,
            'links'   => [
                [
                    'rel' => 'self',
                    'uri' => '/api/menus/'.$menu->menu_id,
                ]
            ],
	    ];
	}
}

If you choose to restrict access to the API to customers, staff or both, you will need to generate a token for each user or customer you want to be able to access the API.

Tokens can be generated for admin and customers users by sending a POST request to: https://your.url/api/token

The post data should contain the following fields:

| field | value | |:----------|:----------| | username | The username of the admin user, required when generating for admin | | email | The email of the customer, required when generating for customer | | password | The admin user's password | | device_name | A unique identifier for the device making the request | | abilities | An optional array of abilities to restrict the token to (e.g. Orders.*) |

curl -X POST --data "username=my_user&password=my_password&device_name=my_device" https://your.url/api/token

If token generation is successful, you will receive a JSON payload in the format: {"status_code":201,"token":"your-api-token"}

Tokens should be passed in the Authorization header with every request to a restricted endpoint. For example:

curl -i -X GET -H "Accept: application/json" -H "Content-Type: application/json" -H "Authorization: Bearer your-api-token" https://your.url/api/orders

  • Categories categories - List, create, retrieve, update and delete categories
  • Coupons coupons - List, create, retrieve, update and delete coupons
  • Customers customers - List, create, retrieve, update and delete customers
  • Locations locations - List, create, retrieve, update and delete locations
  • Menus menus - List, create, retrieve, update and delete menus
  • Orders orders - List, create, retrieve, update and delete orders
  • Reservations reservations - List, create, retrieve, update and delete reservations
  • Reviews reviews - List, create, retrieve, update and delete reviews

Did this answer your question?

Your feedback helps us improve our help articles.

Need more help?

Explore the help center, join the community, or get priority support from the TastyIgniter team.