2017 © Pedro Peláez
 

library api

Laravel Api package

image

maxhill/api

Laravel Api package

  • Sunday, September 11, 2016
  • by MaxHill
  • Repository
  • 1 Watchers
  • 1 Stars
  • 20 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 9 Versions
  • 0 % Grown

The README.md

Laravel api setup

All the api setup I dread creating for every project. Concised down to a single plugin., (*1)

  • It gives you JSON-webtoken authentication (using the awesome tymondesigns/jwt-auth).
  • It gives you model transformation (using the fantastic fractal-package)
  • It also gives you some sweet api-helper methods for returning resources and errors and more.

Install

  1. Add service provider.
// config/app.php
...
Maxhill\Api\ApiServiceProvider::class,
...
  1. Add route middleware.
// app/Http/Kernel.php
...
'jwt.auth' => 'Tymon\JWTAuth\Middleware\GetUserFromToken',
'jwt.refresh' => 'Tymon\JWTAuth\Middleware\RefreshToken',
...
  1. Publish vendors.
$ php artisan vendor:publish --provider="Maxhill\Api\ApiServiceProvider"
$ php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider"
  1. Generate jwt-secret.
$ php artisan jwt:generate
  1. Remove csrf-token middleware.
// app/Http/Kernel.php
'Illuminate\Foundation\Http\Middleware\VerifyCsrfToken',

Usage

Authentication

  • Use route middleware

Require the user to be logged in to access a route:, (*2)

Route::post('whatever', [
    'uses' =>'WhateverController@index',
    'middleware' => 'jwt.auth'
]);

Read more * Use authenticate routes, (*3)

Authentication is already setup. Just post to /authenticate with the email and password of the user you want to sign in., (*4)

You may change the /authenticate-route to whatever you like in the config file config/api.php, (*5)

Controllers

Extend ApiController.

Make sure your api-controllers extends Maxhill\Api\Http\Controllers\ApiController; and not the default App\Http\Controller, (*6)

Use transformers for returning.

Example user model transformer;, (*7)

<?php
# app/Transformers/UserTransformer.php

namespace App\Transformers;

use App\User;
use League\Fractal\TransformerAbstract;

class UserTransformer extends TransformerAbstract
{

    /**
     * Turn this item object into a generic array
     *
     * @param User $user
     * @return array
     */
    public function transform(User $user)
    {
        return [
            'id' => (int)$user->id,
            'name' => $user->name,
            'email' => $user->email
        ];
    }

}

Using the UserTransformer:, (*8)

    # app/Http/Controllers/WhateverController.php

    public function index()
    {
        $users = User::all();
        return $this->respondWithCollection($users, new UserTransformer);
    }

ApiController - methods

  • user() // Returns false or user object parsed from auth token
Respond with data:
  • respondWithItem()
  • respondWithCollection()
  • respondWithArray()
Error-responses:
  • respondWithError()
  • errorForbidden()
  • errorInternalError()
  • errorNotFound()
  • errorUnauthorized()
  • `errorWrongArgs()

The Versions

11/09 2016

dev-master

9999999-dev

Laravel Api package

  Sources   Download

MIT

The Requires

 

by Max Hill

11/09 2016

1.0.7

1.0.7.0

Laravel Api package

  Sources   Download

MIT

The Requires

 

by Max Hill

17/08 2016

v1.0.6

1.0.6.0

Laravel Api package

  Sources   Download

MIT

The Requires

 

by Max Hill

15/06 2016

v1.0.5

1.0.5.0

Laravel Api package

  Sources   Download

MIT

The Requires

 

by Max Hill

13/06 2016

v1.0.4

1.0.4.0

Laravel Api package

  Sources   Download

MIT

The Requires

 

by Max Hill

13/06 2016

v1.0.3

1.0.3.0

Laravel Api package

  Sources   Download

MIT

The Requires

 

by Max Hill

13/06 2016

v1.0.2

1.0.2.0

Laravel Api package

  Sources   Download

MIT

The Requires

 

by Max Hill

13/06 2016

v1.0.1

1.0.1.0

Laravel Api package

  Sources   Download

MIT

The Requires

 

by Max Hill

01/06 2016

v1

1.0.0.0

Laravel Api package

  Sources   Download

MIT

The Requires

 

by Max Hill