Watch Youtube Video (HINDI) :
Laravel 6 REST API with Passport is simply called API today IT world also known as a Web service. Web services (API) very important if you are creating web and mobile app development. If you develop a mobile app then you need to create API for your mobile application developer. As we know that laravel is the most popular framework because of the easy way of creating API. If you are a don't know what API and web services then you are the right place. In this example, I will show you how to create simple API and Authentication and get details of the Authenticated user. Before we start this example let us know what is the passport.
What is Passport?
APIs typically use tokens to authenticate users and do not maintain the state of the session between requests. Laravel 6 makes API authentication a platform using Laravel Passport, which provides a full OAuth2 server implement for your Laravel 6 application development in a few seconds.
Here, We must need to follow a few steps to get following web services (API)
1) Register API
2) Login API
3) Details API
Step 1: Install Laravel Application
In the first step we require to get fresh Laravel application using below command. So, Now open your terminal OR command prompt and run below command.
composer create-project --prefer-dist laravel/laravel blog
Step 2: Install Laravel/Passport Package
We need to install the Laravel passport package after running the Laravel Fresh application.
composer require laravel/passport
After successfully install package.
Here, open config/app.php file and add service provider.
config/app.php
'providers' =>[ Laravel\Passport\PassportServiceProvider::class, ],
Step 3: Run Migration
In this step we require to run the migration command, after run migration command you will get few new tables in your database. So, let's follow below command.
php artisan migrate
Now we move on the install passport using the command, it will create a token key for security purposes. So let's run below command on your terminal.
php artisan passport:install
Step 4: Laravel Passport Configuration
Now, In this step we require to the change in three files. So, we have to do the configure on model, service provider and auth config file.
Here, You have to just follow change on that files.
In Model, Add HasApiTokens class of Passport,
In AuthServiceProvider Add “Passport::routes()”,
In auth.php, Add API auth configuration.
app/User.php
<?php namespace App; use Laravel\Passport\HasApiTokens; use Illuminate\Notifications\Notifiable; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { use HasApiTokens, Notifiable; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'name', 'email', 'password', ]; /** * The attributes that should be hidden for arrays. * * @var array */ protected $hidden = [ 'password', 'remember_token', ]; }
app/Providers/AuthServiceProvider.php
<?php namespace App\Providers; use Laravel\Passport\Passport; use Illuminate\Support\Facades\Gate; use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; class AuthServiceProvider extends ServiceProvider { /** * The policy mappings for the application. * * @var array */ protected $policies = [ 'App\Model' => 'App\Policies\ModelPolicy', ]; /** * Register any authentication / authorization services. * * @return void */ public function boot() { $this->registerPolicies(); Passport::routes(); } }
config/auth.php
<?php return [ 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'passport', 'provider' => 'users', ], ],
Step 5: Create API Routes
In the 5th step we require to create routes on the Laravel provides api.php file. Here, we create three routes.
So, let's add the new routes on that file.
routes/api.php
<?php /* |-------------------------------------------------------------------------- | API Routes |-------------------------------------------------------------------------- | | Here is where you can register API routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | is assigned the "api" middleware group. Enjoy building your API! | */ Route::post('register', 'API\UserController@register'); Route::post('login', 'API\UserController@login'); Route::group(['middleware' => 'auth:api'], function(){ Route::post('details', 'API\UserController@details'); });
Step 6 : Create the UserController
In the last step we have to create a User Controller and three API method, So we have to create first API directory on controller folder. So let's run bellow command.
php artisan make:controller API\UserController
After created controller put below UserController code.
app/Http/Controllers/API/UserController.php
<?php namespace App\Http\Controllers\API; use Illuminate\Http\Request; use App\Http\Controllers\Controller; use App\User; use Illuminate\Support\Facades\Auth; use Validator; class UserController extends Controller { public $successStatus = 200; /** * Register api * * @return \Illuminate\Http\Response */ public function register(Request $request) { $validator = Validator::make($request->all(), [ 'name' => 'required', 'email' => 'required|email', 'password' => 'required', 'c_password' => 'required|same:password', ]); if ($validator->fails()) { return response()->json(['error'=>$validator->errors()], 401); } $input = $request->all(); $input['password'] = bcrypt($input['password']); $user = User::create($input); $success['token'] = $user->createToken('MyApp')->accessToken; $success['name'] = $user->name; return response()->json(['success'=>$success], $this->successStatus); } /** * login api * * @return \Illuminate\Http\Response */ public function login(){ if(Auth::attempt(['email' => request('email'), 'password' => request('password')])){ $user = Auth::user(); $success['token'] = $user->createToken('MyApp')->accessToken; return response()->json(['success' => $success], $this->successStatus); } else{ return response()->json(['error'=>'Unauthorised'], 401); } } /** * details api * * @return \Illuminate\Http\Response */ public function details() { $user = Auth::user(); return response()->json(['success' => $user], $this->successStatus); } }
Now we are ready to run this example ,So let's run below command.
php artisan serve
1) Register API
Here we are check in the REST API Response tools. Postman is the best REST API Response tools. You can get postman from this link Download.
Here, we check validation postman
Register Validation
2) Login API
3) Details API
You can also download from github Laravel 6 REST API with Passport.
I hope it can help you.
We always thanks to you for reading our blogs.
Dharmesh Chauhan
(Swapinfoway Founder)Hello Sir, We are brothers origin from Gujarat India, Fullstack developers working together since 2016. We have lots of skills in web development in different technologies here I mention PHP, Laravel, Javascript, Vuejs, Ajax, API, Payment Gateway Integration, Database, HTML5, CSS3, and Server Administration. So you need our service Please Contact Us
Haresh Chauhan
(Co-Founder)We Are Also Recommending You :
- Laravel 6 REST API with Passport Tutorial
- How To Add Google reCAPTCHA v2 In HTML Form Based PHP/Laravel Website
- Error : Trying To Get Property Of ID Non-Object All Possible Solution Guideline In Laravel - PHP
- Force Redirect to www From Non-www Using htaccess In Laravel
- could not encode content to iso-8859-1
- Arr::forget() | Laravel Helper Function
- Email Send Using Queue In Laravel
- Know All About Laravel Mixin Use In Vue Js With Example
- Error : Array to string conversion Laravel
- Different Solutions For Fix 419 Page Expired laravel