پیش نیازها:
دامنه اساسی برنامه نویسی Object Oriented بسیار توصیه شده است
دانش اساسی در مورد PHP (کلاسها، توابع، روشها، صفات، وراثت)
این دوره برای چه کسی است؟
این دوره برای همه دوستداران توسعه وب و PHP است
این دوره برای همه کسانی است که نیاز به توسعه API خود را دارند
اگر می خواهید RESTful API کاملاً کاربردی و گام به گام خود را بسازید
- اگر باید مهارت های خود را به روز نگه دارید و رقابت کنید
- اگر می خواهید توسعه کامل پروژه های خود و RESTful API خود را با Laravel انجام دهید

در ادامه با برخی از سرفصل های درسی این مجموعه آموزش آشنا می شویم:
Introduction
• About the Instructor and the Course
• Taking Advantage of the Course and Contents
• How to Ask Questions
Downloading and Installing the Tools to Develop the RESTful API with Laravel
• Downloading and Installing PHP with XAMPP
• Downloading and Installing Composer
• Downloading and Installing Virtual Box
• Downloading and Installing Vagrant
• Downloading and Installing Sublime Text 3
• Downloading and Installing Github Shell
• Downloading and Installing Node and NPM
• Downloading and Installing Postman to Test the Laravel RESTful API
Creating and Setting the Initial Structure of Laravel for the RESTful API
• Obtaining Laravel Using Composer
• Adding Laravel Homestead as a Dependency for The Laravel Project
• Laravel additional step
• Preparing and Configuring Laravel Homestead
• Adding the Virtual Domain on The System
• Using Vagrant to Manage the Laravel Homestead Virtual Machine
• Exercise Find out how to go out from the Virtual Machine
question
• Keep The Laravel Project Updated
Configuring and Using Sublime Text to Develop the RESTful API with Laravel
• Installing the Package Control
• Creating and Using Projects
• Installing and Using SublimeCodeIntel to Resolve Laravel and RESTful API classes
• Installing and Using SideBarEnhancement
• Installing and Using SublimeLinter for PHP
• Installing and Using PHPCompanion to Auto-import Laravel Definitions
Understanding the Case Study for the RESTful API
• Understanding the RESTful API Resources (Models) and its Relationships
• Understanding the Main End-Points for the RESTful API
Discovering and Configuring the Laravel Structure for the RESTful API
• Discovering the Laravel Structure
• Discovering the Laravel PHP Artisan Commands
• Configuring the Laravel Environment Variables
• Understanding the Laravel Routes System for RESTful APIs
Creating the Initial Laravel Components for the RESTful API
• How to Solve Common Errors During the Development of the RESTful API
•
Creating Initial Laravel Structures for The Models and Its Migrations
Preview
• Creating an Initial Laravel Structure for The Controllers
• Creating Some End-Point for the RESTful API Using Laravel Resource Routes
Implementing the RESTful API Models and its Relationships using Laravel Eloquent
Implementing The Properties for Category
• Implementing The Properties for Product
• Implementing The Properties for Transaction
• Implementing The Properties for User
• Implementing The Relationships Between Models
Creating the Database Structure Using Migrations from Laravel
• Solving a Common Issue with the Laravel Migrations
• Implementing The Migration for Users
• Implementing The Migration for Categories
• Implementing The Migration for Products
• Implementing The Migration for Transactions
• Creating the Migration for The Pivot Table
Creating the Laravel Factories for Database Seeding
• Creating The Laravel Factory for User
• Creating The Factory for Category
• Creating The Factory for Product
• Creating The Factory for Transaction
• Using The Factories from The DatabaseSeeder of Laravel
• Executing The Migrations and Seeder using Artisan from Laravel
Implementing the Operations for UserController
• Implementing The Index Method for UserController
• Implementing The Show Method for UserController
• Implementing The Store Method for UserController
• Implementing The Update Method for UserController
• Implementing The Destroy Method for UserController
Implementing the operations for Buyer
• Implementing The Index Method for BuyerController
• Implementing The Show Method for BuyerController
Implementing the operations for Seller
• Implementing The Index Method for SellerController
• Implementing The Show Method for SellerController
Improving the current RESTful API operations
• Defining Mutators and Accessor for Models
• Generalizing The Response Methods
• Using The Generalized Methods
• Using The Generalized Methods for Error Responses
Handling Errors and Exceptions with the Laravel Handler
• Returning Validation Errors as a JSON Response
• Returning Model Not Found Errors as a JSON Response
• Handling AuthenticationException
• Handling AuthorizationException
• Handling NotFoundHttpException
• Handling MethodNotAllowedHttpException
• Handling General HttpException
• Catching Exceptions When Removing Related Resources
• Handling Unexpected Exceptions
Implicit Model Binding with Routes and Methods
• Using The Laravel Implicit Model Binding for Some Methods
• Resolving Buyer Using Laravel Global Scopes
• Resolving Seller Using Laravel Global Scopes
Implementing Soft Deleting for All the Models
• Modifying the Migrations for Soft Deleting
• Using soft Deleting for All the Models
Implementing the Operations for Category
•
Implementing the Index Method for CategoryController
Preview
• Implementing the Show Method for CategoryController
• Implementing the Store Method for CategoryController
• Implementing the Update Method for CategoryController
• Implementing the Destroy Method for CategoryController
Implementing the Operations for Product
• Implementing the Index Method for ProductController
• Implementing the Show Method for ProductController
[Exercises] Implementing the Operations for Transaction
• Implementing the Index Method for TransactionController
• Implementing the Show Method for TransactionController
Implementing Complex Operations within Transaction
• Implementing the Index Method for TransactionCategoryController
• Implementing the Index Method for TransactionSellerController
Implementing Complex Operations for Buyer
• Implementing the Index Method for BuyerTransactionController
• Implementing the Index Method for BuyerProductController
• Implementing the Index Method for BuyerSellerController
• Implementing the Index Method for BuyerCategoryController
Implementing Complex Operations for Category
• Implementing the Index Method for CategoryProductController
• Implementing the Index Method for CategorySellerController
• Implementing the Index Method for CategoryTransactionController
• Implementing the Index Method for CategoryBuyerController
• Removing the Pivot Table from the Results
Preview
•
Implementing Complex Operations for Seller
• Implementing the Index Method for SellerTransactionController
• Implementing the Index Method for SellerCategoryController
• Implementing the Index Method for SellerBuyerController
• Implementing the Index Method for SellerProductController
• Implementing the Store Method for SellerProductController
• Implementing the Update Method for SellerProductController
• Implementing the Destroy Method for SellerProductController
Implementing Complex Operations for Product
• [Challenge] Implementing the Index Operation of ProductTransaction
• [Challenge] Implementing the Index Operation of ProductBuyer
• [Challenge] Implementing the Index Operation of ProductCategory
• Implementing the Update Operation of ProductCategory
• Implementing the Destroy Operation of ProductCategory
• Implementing the Store Operation for ProductBuyerTransaction
• Handling the Products Availability Using Events
Adding an Image for Products
• Preparing the API for Images Uploading
• Storing an Image When Creating a Product
• Removing the Image When Deleting a Product
• Updating the Image When Editing a product
Sending Email for Users Accounts Verification
• Preparing the Laravel Project for Email Sending
• Implementing the Verification System
• Creating the Laravel Mailable for User Created
• Implementing the UserCreated Mailable
• Send Verification Email Using Events
• Solving the Problem with Factories
• Creating the Mailable for User Mail Changed
• Implementing the UserMailChanged Mailable
• Send Verification for Email Changed Using Events
• Re-sending the Verification Email If Requested
•
Dealing with Failing-Prone Actions
• Using Laravel Markdown Mailables
The Middleware and the Rate Limiting
• About the Middleware and How it Works in Laravel
• Creating a Custom Middleware
• About the Rate Limiting in Laravel and the Details
• [Optional] Customizing the Response for “Too Many Attempts”
Transforming Responses with PHP Fractal for Security and Compatibility
•
About Transformers and Why to Use It
• Preparing the Laravel Project for Data Transforming
• Creating the Transformer for User
• Creating the Transformer for Seller and Buyer
• Creating the Transformer for Category
• Creating the Transformer for Transaction
• Creating the Transformer for Product
• Linking the Models with its Respective Transformer
• Returning the New Transformed Responses
Sorting and Filtering Results Based on Query Parameters lectures • min
• Sorting Results by Any Attribute
• Understanding an Issue with Sorted Responses
• Improving the Transformations to Solve the Problem
• Implementing the Solution Using Transformers
• Filtering Responses Based on Attributes
Pagination of Results lectures • min
• About Pagination
• Paginating Already Built Collections
• Allowing Custom Page Size
Caching Results with Laravel Cache System
• Implementing the Cache System
• The Caching System and the Query Parameters
Implementing HATEOAS Hypermedia Controls
• What is and Why to Use HATEOAS
• Implementing HATEOAS Hypermedia Controls for Category Instances
• Implementing HATEOAS Hypermedia Controls for Product Instances
• Implementing HATEOAS for Transaction Instances
• Implementing HATEOAS for User Instances
• [Exercise] Implementing HATEOAS for Buyer
• [Exercise] Implementing HATEOAS for Seller
The Transformations and the Validations
• Understanding Two Problems with Transformations and Validations
• Creating and Using a Middleware to Solve the Problem
• Solving the First Problem Using the Middleware
• Improving the Transformations to Solve the Second Problem
• Improving the Middleware to Solve the Second Problem
Preparing the API for User Authentication Using Sessions
• Why is It Required for Our API
• Laravel Before to continue...
• Creating the Additional Authentication Structure
Preview
•
• Tuning Some Structures to Avoid Inconsistences
• About CSRF and Handling CSRF Exceptions in Laravel
• Returning HTML and Redirections When Required
Using Laravel Passport to Implement the Initial Security Layer with OAuth
• About OAuth and Security on APIs
• What is Laravel Passport
• Preparing the Laravel Project to Use Laravel Passport
• Using the Migrations of Laravel Passport
• Installing Laravel Passport Definitively on the API
• Making Users Authenticatable Through API Tokens
• Registering the Required Routes
• Configuring the Authentication System
• Defining the Expiration Time for the Tokens
• Using client_credentials Grant to Protect Some Routes
• How to Obtain and Use Tokens Using Client Credentials
• Protecting All the Routes
• Using the Password Grant Type
• Preparing the API to Use the Passport Components
• Creating the Views to Manage the Personal Tokens
• About the Personal Tokens and How to Use It
• Allowing the Management of API Clients
• About the Authorization Code Grant Type
• Using the Implicit Grant Type
• Refreshing Tokens
Restricting OAuth Clients Using Scopes
• What are Scopes on OAuth?
• Registering Some Required Scopes for the API
• Registering the Laravel Passport Middleware to Check Scopes
• Restricting the Action that Needs the “purchase-product” Scope
• Restricting the Actions that Need the “manage-products” Scope
• Restricting the Actions that Need the “manage-account” Scope
• Restricting the Actions that Need the “read-general” Scope
Implementing the Final Security Layer Using Policies and Gates of Laravel
• About the Final Security Layer
• What are Policies and Gates on Laravel?
• Implementing the Restrictions Over Buyer
• Implementing the Restrictions Over Seller
• The Restrictions over User
• Implementing the Restrictions Over Transaction
• Implementing the Restrictions Over Product
• Allowing All Actions for Admin Users
• Allowing Remaining Actions ONLY Admin Users Can Do
CORS for Laravel
• About CORS
• Installing the CORS Package for Laravel
• Configuring the CORS Package
• Allowing CORS Only for the API
• Allowing CORS on Error Responses Too
Additions and Fixes for the Laravel RESTful API
• Identifying an Authenticated User in the RESTful API
[Optional] Upgrading to Laravel 5.5
• About the Upgrading Process to Laravel 5.5
• Upgrading to Laravel 5.5 Along With Dependencies
• Upgrading the Source Code According to Laravel 5.5
[Optional] Upgrading to Laravel 5.6
• Preparing the Environment to Upgrade
• Obtaining Laravel 5.6
• Installing Updated Dependencies
• Solving Issues and Updating the Project Structure
[Optional] Upgrading to Laravel 5.7
• Preparing the development environment to upgrade
• Installing Laravel5.7 an upgrading dependencies for the RESTful API
• Upgrading the components and structures
[Optional] Upgrading to Laravel 6
• Upgrading the development environment
• Obtaining Laravel 6 and upgrading the dependencies
• Resolving the issues to use Laravel 6
Conclusion
• List of Pending Topics
• Thanks for Be Here!