- PHP >= 8.1
- Composer
- MySQL
- Laravel = 11
git clone https://github.com/MuhamadMatin/DLab.git
cd DLab
composer install
# Copy .env file
cp .env.example .env
# Generate application key
php artisan key:generate
Edit .env file and update these lines:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database_name
DB_USERNAME=your_database_username
DB_PASSWORD=your_database_password
JWT_SECRET=token
JWT_ALGO=token
# Install JWT package
composer require php-open-source-saver/jwt-auth
# Generate JWT secret
php artisan jwt:secret
php artisan migrate --seed
php artisan serve
Server will run at http://localhost:8000
You can use tools like:
- Postman
- Insomnia
- curl
https://localhost:8000/{endpoint}
All Users, Posts, Logout endpoints require an Authorization header with a Bearer token:
Authorization: Bearer {your_jwt_token}
Accept: application/json
All header use Accept: application/json
-
Login
POST /api/login
- Description: Authenticate user and return a JWT token.
- Request Body:
- email (string) : User email.
- password (string) : User password.
- Response:
{ "status": true, "message": "Login successfully", "token": "string", "user": {} }
-
Register
POST /api/register
- Description: Register a new user.
- Request Body:
- name (string) : User name.
- age (muneric) : User age.
- email (string) : User email.
- password (string) : User password.
- Response:
{ "status": true, "message": "Register account success, login please" }
-
Logout
POST /api/logout
- Description: Log out the authenticated user by invalidating their token.
- Headers: Authorization: Bearer {token}
- Response:
{ "status": true, "message": "Logout successfully" }
-
Get All Users
GET /api/users
- Description: List of all users.
- Headers: Authorization: Bearer {token}
- Response:
{ "status": true, "users": {} }
-
Get User by ID
GET /api/users/{id}
- Description: Retrieve details of a specific user.
- Headers: Authorization: Bearer {token}
- Response:
{ "status": true, "users": {} }
-
Create User
POST /api/users/{id}
- Description: Create a new user.
- Headers: Authorization: Bearer {token}
- Request Body:
- name (string) : User name.
- age (numeric) : User age.
- email (string) : User email.
- password (string) : User password.
- Response:
{ "status": true, "message": "Users create success" }
-
Update User
PUT /api/users/{id}
- Description: Update an existing user's information.
- Headers: Authorization: Bearer {token}
- Request Body:
- name (string) : User name.
- age (numeric) : User age.
- email (string) : User email.
- Sometimes Body:
- password (string) : User password.
- Response:
{ "status": true, "message": "Users create success", "data": {} }
-
Delete User
DELETE /api/users/{id}
- Description: Delete a user by ID.
- Headers: Authorization: Bearer {token}
- Response:
{ "status": true, "message": "User delete success" }
-
Get All Posts
GET /api/posts
- Description: Retrieve a list of all posts.
- Headers: Authorization: Bearer {token}
- Response:
{ "status": true, "posts": {} }
-
Get Post by ID
GET /api/posts/{id}
- Description: Retrieve details of a specific post.
- Headers: Authorization: Bearer {token}
- Response:
{ "status": true, "posts": {} }
-
Create Post
POST /api/posts
- Description: Create a new post.
- Headers: Authorization: Bearer {token}
- Request Body:
- title (string) : Name or title post.
- body (string) : Content post.
- user_id (numeric) : User id.
- Response:
{ "status": true, "message": "Posts create success", "posts": {} }
-
Update Post
PUT /api/posts/{id}
- Description: Update an existing post's information.
- Headers: Authorization: Bearer {token}
- Request Body:
- title (string) : Name or title post.
- body (string) : Content post.
- user_id (numeric) : User id.
- Response:
{ "status": true, "message": "Post update success", "posts": {} }
-
Delete Post
DELETE /api/posts/{id}
- Description: Delete a post by ID.
- Headers: Authorization: Bearer {token}
- Response:
{ "status": true, "message": "Post delete success" }
The API returns appropriate HTTP status codes along with error messages:
- 200: Success
- 201: Created
- 400: Bad Request
- 401: Unauthorized
- 403: Forbidden
- 404: Not Found
- 500: Internal Server Error