RESTful API with Laravel 5.4: Definitive Guide

JuanD MeGon, Professional Instructor and Web Developer

Play Speed
  • 0.5x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 2x
197 Videos (13h 23m)
    • About the Instructor and the Course

      1:32
    • Downloading and Installing PHP with XAMPP

      2:33
    • Downloading and Installing Composer

      2:10
    • Downloading and Installing Virtual Box

      1:48
    • Downloading and Installing Vagrant

      2:01
    • Downloading and Installing Sublime Text 3(2)

      2:24
    • Downloading and Installing Github Shell(2)

      3:16
    • Downloading and Installing Node and NPM(2)

      3:27
    • Downloading and Installing Postman(2)

      2:48
    • Obtaining Laravel Using Composer

      2:06
    • Adding Homestead as a Dependency for The Project

      1:25
    • Preparing and Configuring Homestead

      4:19
    • Adding the Virtual Domain on The System(2)

      2:18
    • Using Vagrant to Manage the Homestead Virtual Machine(2)

      4:48
    • Keep The Project Updated

      3:32
    • Installing the Package Control(2)

      1:35
    • Creating and Using Projects(2)

      2:17
    • Installing and Using SublimeCodeIntel(2)

      2:59
    • Installing and Using SideBarEnhancement(2)

      2:07
    • Installing and Using SublimeLinter for PHP(2)

      2:15
    • Installing and Using PHPCompanion(2)

      4:00
    • Understanding the Resources(Models) and Its Relationships(2)

      4:14
    • Understanding the Main End Points for the RESTful API

      3:28
    • Discovering the Laravel Structure(2)

      7:29
    • Discovering PHP Artisan(2)

      4:53
    • Configuring the Environment Variables

      4:02
    • Understanding the Routes on Laravel(2)

      3:01
    • Creating Initial Structure for The Models and Its Migrations(2)

      4:44
    • Creating an Initial Basic Structure of Controllers(2)

      3:34
    • Creating the Initial Resource Routes for The Controllers

      6:50
    • Implementing the properties for Category

      2:16
    • Implementing the properties for Product

      3:45
    • Implementing the properties for Transaction

      1:16
    • Implementing the properties for User

      5:42
    • Implementing the relationships between models

      5:28
    • Solving a Common Issue with Migrations

      2:42
    • Implementing The Migration for Users

      2:27
    • Implementing The Migration for Categories

      1:09
    • Implementing The Migration for Products

      2:01
    • Implementing The Migration for Transactions

      1:36
    • Creating the Migration for The Pivot Table

      4:44
    • Creating The Factory for User

      3:22
    • Creating The Factory for Category

      1:25
    • Creating The Factory for Product

      3:51
    • Creating The Factory for Transaction

      4:52
    • Using The Factories from The DatabaseSeeder

      6:04
    • Executing The Migrations and The Seeder

      5:10
    • Implementing The Index Method for UserController

      2:51
    • Implementing The Show Method for UserController

      2:29
    • Implementing The Store Method for UserController

      9:29
    • Implementing The Update Method for UserController

      8:25
    • Implementing The Destroy Method for UserController

      1:38
    • Implementing The Index Method for BuyerController

      2:43
    • Implementing The Show Method for BuyerController

      1:34
    • Implementing The Index Method for SellerController

      2:15
    • Implementing The Show Method for SellerController

      1:32
    • Defining Mutators and Accessor for Models

      5:54
    • Generalizing The Response Methods

      8:51
    • Using The Generalized Methods

      3:09
    • Using The Generalized Methods for Error Responses

      1:53
    • Returning Validation Errors as a JSON Response

      4:36
    • Returning Model Not Found Errors as a JSON Response

      2:59
    • Handling AuthenticationException

      3:12
    • Handling AuthorizationException

      2:08
    • Handling NotFoundHttpException

      2:02
    • Handling MethodNotAllowedHttpException

      2:15
    • Handling General HttpException

      1:32
    • Catching Exceptions When Removing Related Resources

      4:10
    • Handling Unexpected Exceptions

      4:28
    • Using Implicit Model Binding for Some Methods

      2:50
    • Resolving Buyer Using Global Scopes

      6:24
    • Resolving Seller Using Global Scopes

      2:00
    • Modifying the Migrations for Soft Deleting

      2:15
    • Using soft Deleting for All the Models

      3:13
    • Implementing the Index Method for CategoryController

      3:09
    • Implementing the Show Method for CategoryController

      1:23
    • Implementing the Store Method for CategoryController

      3:54
    • Implementing the Update Method for CategoryController

      4:09
    • Implementing the Destroy Method for CategoryController

      2:01
    • Implementing the Index Method for ProductController

      2:25
    • Implementing the Show Method for ProductController

      1:15
    • Implementing the Index Method for TransactionCategoryController

      4:25
    • Implementing the Index Method for TransactionSellerController

      4:24
    • Implementing the Index Method for BuyerTransactionController

      2:54
    • Implementing the Index Method for BuyerProductController

      6:39
    • Implementing the Index Method for BuyerSellerController

      5:07
    • Implementing the Index Method for BuyerCategoryController

      5:30
    • Implementing the Index Method for CategoryProductController

      2:42
    • Implementing the Index Method for CategorySellerController

      3:42
    • Implementing the Index Method for CategoryTransactionController

      5:15
    • Implementing the Index Method for CategoryBuyerController

      5:23
    • Removing the Pivot Table from the Results

      1:47
    • Implementing the Index Method for SellerTransactionController

      3:12
    • Implementing the Index Method for SellerCategoryController

      2:21
    • Implementing the Index Method for SellerBuyerController

      3:03
    • Implementing the Index Method for SellerProductController

      2:50
    • Implementing the Store Method for SellerProductController

      7:30
    • Implementing the Update Method for SellerProductController

      7:18
    • Implementing the Destroy Method for SellerProductController

      2:15
    • [Challenge] Implementing the Index Operation of ProductTransaction

      4:23
    • [Challenge] Implementing the Index Operation of ProductBuyer

      4:17
    • [Challenge] Implementing the Index Operation of ProductCategory

      4:17
    • Implementing the Update Operation of ProductCategory

      7:41
    • Implementing the Destroy Operation of ProductCategory

      2:33
    • Implementing the Store Operation for ProductBuyerTransaction

      11:53
    • Handling the Products Availability Using Events

      3:12
    • Preparing the API for Images Uploading

      3:30
    • Storing an Image When Creating a Product

      4:10
    • Removing the Image When Deleting a Product

      2:31
    • Updating the Image When Editing a product

      4:25
    • Preparing the Project for Email Sending

      6:15
    • Implementing the Verification System

      5:37
    • Creating the Mailable for User Created

      1:47
    • Implementing the UserCreated Mailable

      4:26
    • Send Verification Email Using Events

      3:31
    • Solving the Problem with Factories

      2:50
    • Creating the Mailable for User Mail Changed

      1:18
    • Implementing the UserMailChanged Mailable

      2:03
    • Send Verification for Email Changed Using Events

      3:24
    • Re sending the Verification Email If Requested

      3:22
    • Dealing with Failing Prone Actions

      3:24
    • Using Markdown Mailables

      9:22
    • About the Middleware and How it Works

      5:34
    • Creating a Custom Middleware

      9:02
    • About the Rate Limiting and the Details

      4:20
    • Customizing the Response for “Too Many Attempts”

      3:23
    • About Transformers and Why to Use It

      5:35
    • Preparing the Project for Data Transforming

      3:11
    • Creating the Transformer for User

      7:35
    • Creating the Transformer for Seller and Buyer

      2:23
    • Creating the Transformer for Category

      1:19
    • Creating the Transformer for Transaction

      2:00
    • Creating the Transformer for Product

      2:45
    • Linking the Models with its Respective Transformer

      3:09
    • Returning the New Transformed Responses

      10:06
    • Sorting Results by Any Attribute

      6:17
    • Understanding an Issue with Sorted Responses

      3:08
    • Improving the Transformations to Solve the Problem

      3:30
    • Implementing the Solution Using Transformers

      2:44
    • Filtering Responses Based on Attributes

      6:41
    • About Pagination

      3:57
    • Paginating Already Built Collections

      8:26
    • Allowing Custom Page Size

      3:22
    • Implementing the Cache System

      4:13
    • The Caching System and the Query Parameters

      6:17
    • What is and Why to Use HATEOAS

      3:38
    • Implementing HATEOAS Hypermedia Controls for Category Instances

      6:42
    • Implementing HATEOAS Hypermedia Controls for Product Instances

      3:09
    • Implementing HATEOAS for Transaction Instances

      2:24
    • Implementing HATEOAS for User Instances

      1:56
    • Understanding Two Problems with Transformations and Validations

      2:38
    • Creating and Using a Middleware to Solve the Problem

      5:52
    • Solving the First Problem Using the Middleware

      4:03
    • Improving the Transformations to Solve the Second Problem

      2:38
    • Improving the Middleware to Solve the Second Problem

      7:53
    • Why is It Required for Our API

      2:28
    • Creating the Additional Authentication Structure

      3:02
    • Tuning Some Structures to Avoid Inconsistences

      3:35
    • About CSRF and Handling CSRF Exceptions

      5:40
    • Returning HTML and Redirections When Required

      9:18
    • About OAuth2 and Security on APIs

      3:51
    • What is Laravel Passport

      1:54
    • Preparing the Project to Use Laravel Passport

      1:58
    • Using the Migrations of Laravel Passport

      2:32
    • Installing Passport Definitively on the API

      2:59
    • Making Users Authenticatable Through API Tokens

      2:08
    • Registering the Required Routes

      3:20
    • Configuring the Authentication System

      1:37
    • Defining the Expiration Time for the Tokens

      3:23
    • Using client credentials Grant to Protect Some Routes

      6:17
    • How to Obtain and Use Tokens Using Client Credentials

      3:24
    • Protecting All the Routes

      5:36
    • Using the Password Grant Type

      6:09
    • Preparing the API to Use the Passport Components

      8:10
    • Creating the Views to Manage the Personal Tokens

      5:04
    • About the Personal Tokens and How to Use It

      2:40
    • Allowing the Management of API Clients

      7:55
    • About the Authorization Code Grant Type

      9:37
    • Using the Implicit Grant Type

      5:55
    • Refreshing Tokens

      5:18
    • What are Scopes on OAuth2?

      3:08
    • Registering some required scopes for the API

      5:50
    • Registering the Middleware to Check Scopes

      3:54
    • Restricting the Action that Needs the “purchase product” Scope

      4:42
    • Restricting the Actions that Need the “manage products” Scope

      5:27
    • Restricting the Actions that Need the “manage account” Scope

      3:51
    • Restricting the Actions that Need the “read general” Scope

      8:33
    • About the Final Security Layer

      3:41
    • What are Policies and Gates on Laravel

      4:04
    • Implementing the Restrictions Over Buyer

      7:42
    • Implementing the Restrictions over Seller

      7:15
    • The Restrictions over User

      7:32
    • Implementing the Restrictions over Transaction

      5:00
    • Implementing the Restrictions over Product

      5:04
    • Allowing All Actions for Admin Users

      6:14
    • Allowing Remaining Actions ONLY Admin Users Can Do

      8:42
    • Thanks for Be Here

      1:41

About This Class

Master the most challenging and required features for a real RESTful API - Pagination, cache, HATEOAS, sorting, and more.

In the course you will learn this about Laravel and for your RESTful API, check the details below (or go straight to the contents list)

  • Using PHP artisan for code and components generation
  • Usage and creation of middleware
  • Resource controllers (ideal for RESTful APIs)
  • Fully supported JSON format responses
  • Validation of requests from Controllers
  • Handling all types of exceptions and errors
  • Implementation of complex operations involving two and up to three resources/models for a particular operation
  • Dependency injection and model binding
  • Generation of the structure of the database using migrations
  • Automatic insertion of fake data into the database through "faker," factories, and seeders
  • Validation of users, through sessions and access_token Yes Both!
  • Using Laravel Passport (yes, Passport!!) to protect the RESTful API and use OAuth2
  • Pagination of results
  • Using URL parameters to execute actions
  • Sorting results based on URL parameters
  • Filtering results using URL parameters
  • Caching responses
  • Limitation of requests
  • Use of HATEOAS (A pure RESTful API must use HATEOAS)
  • Using PHP Fractal for transforming responses
  • Much more!!

38

Students

--

Projects

JuanD MeGon

Professional Instructor and Web Developer

I enjoy transmitting knowledge and skills to the people through classes and contents. Then, see how they build their projects and tools using the concepts learned.

Continually work on improving my speech, looking for the best way to reach out the students with the central concepts and skills, I love easy but effective ways to transmit every single idea.

I appreciate every minute deloping, especially when I can use my skills to implement projects that can help other developers to...

See full profile