DownloadLaravel CRUD API with Auth
Basic Laravel CRUD API application included with Authentication Module & Product Module. It's included with JWT authentication and Swagger API format. 
Language & Framework Used:
- 
PHP-8
 
- 
Laravel-9
 
 
Older Versions (if Needed):
- 
Laravel 8.x - https://github.com/ManiruzzamanAkash/Laravel-Advanced-CRUD-API/releases/tag/vLaravel8.x
 
 
Architecture Used:
- 
Laravel 9.x
 
- 
Interface-Repository Pattern
 
- 
Model Based Eloquent Query
 
- 
Swagger API Documentation - https://github.com/DarkaOnLine/L5-Swagger
 
- 
JWT Auth - https://github.com/tymondesigns/jwt-auth
 
- 
PHP Unit Testing - Some basic unit testing added.
 
 
API List:
Authentication Module
- 
[x] Register User API with Token
 
- 
[x] Login API with Token
 
- 
[x] Authenticated User Profile
 
- 
[x] Refresh Data
 
- 
[x] Logout
 
 
Product Module
- 
[x] Product List
 
- 
[x] Product List [Public]
 
- 
[x] Create Product
 
- 
[x] Edit Product
 
- 
[x] View Product
 
- 
[x] Delete Product
 
 
How to Run:
- 
Clone Project - 
 
 
git clone https://github.com/ManiruzzamanAkash/Laravel-Basic-CRUD-API.git
 - 
Go to the project drectory by `cd Laravel-Basic-CRUD-API` & Run the
 
- 
Create `.env` file & Copy `.env.example` file to `.env` file
 
- 
Create a database called - `laravel_basic_crud`.
 
- 
Install composer packages - `composer install`.
 
- 
Now migrate and seed database to complete whole project setup by running this-
php artisan migrate:refresh --seed
 It will create `21` Users and `103` Dummy Products.
 
- 
Generate Swagger API
php artisan l5-swagger:generate
  
- 
Run the server -
php artisan serve
  
- 
Open Browser -
http://127.0.0.1:8000 & go to API Documentation -
http://127.0.0.1:8000/api/documentation
 
- 
You'll see a Swagger Panel.
 
 
Procedure
- 
First Login with the given credential or any other user credential
 
- 
Set bearer token to Swagger Header or Post Header as Authentication
 
- 
Hit Any API, You can also hit any API, before authorization header data set to see the effects.
 
 
Demo
API List Views:
<img src="https://i.ibb.co/gV1Yn9Z/1-Swagger-API-Demo.png" alt="1-Swagger-API-Demo" border="0"> 
Login in Swagger with Given Data:
<img src="https://i.ibb.co/5vrXkgN/2-API-Login1.png" alt="2-API-Login1" border="0"> 
Get token After Successful Login:
<img src="https://i.ibb.co/cQ37n9t/3-API-Login2-Response.png" alt="3-API-Login2-Response" border="0"> 
Set token in Swagger Header:
<img src="https://i.ibb.co/m8xQZ4T/Screenshot-2022-07-12-at-8-37-47-AM.png" alt="4-API-Swagger-Set-Bearer-Token" border="0"> 
Or, Set token in Postman Header as Authorization:
<img src="https://i.ibb.co/7p8Y3Yz/Postman-Product-List-API-with-Authenticated-Token.png" alt="Postman-Product-List-API-with-Authenticated-Token" border="0"> 
Hit Any API Route in Swagger:
<img src="https://i.ibb.co/VSWbXq9/5-API-Swaagger-Public-Product-List-View.png" alt="5-API-Swaagger-Public-Product-List-View" border="0"> 
Image Upload throw Postman:
<img src="https://i.ibb.co/VBkMBBp/Postman-Store-Product-with-File-Upload.png" alt="Postman-Store-Product-with-File-Upload" border="0"> 
Test
- 
Test with Postman - https://www.getpostman.com/collections/5642915d135f376b84af [Click to open with post man]
 
- 
Test with Swagger.
 
- 
Swagger Limitation: Image can not be uploaded throw Swagger, it can be uploaded throw Postman.
 
 
 |