If you're interested in building a simple API using Lithe, you've come to the right place! In this tutorial, we'll step by step create an API that allows sending and receiving messages in a chat. We'll use routers to organize our code modularly.
What You Will Learn
- Set up a PHP project with Lithe.
 - Create a router to manage chat messages.
 - Implement basic functionalities such as sending and receiving messages.
 - Test the API using Postman or Insomnia.
 
Prerequisites
- Basic knowledge of Lithe and PHP.
 - A PHP development environment installed (with Composer).
 - A code editor (I recommend Visual Studio Code).
 
Installing Lithe
To create a new project with Lithe, run the following command:
composer create-project lithephp/lithephp chat-api
Project Structure
Create the following directory and file structure within the chat-api directory:
chat-api/
│
├── src/
│   ├── routes/
│   │   └── chat.php
│   └── App.php
└── composer.json
Starting the Application
In the src/App.php file, configure the application with the following code:
<?php 
use function Lithe\Orbis\Http\Router\{router};
$app = new \Lithe\App;
// Router to manage chat messages
$chatRoutes = router(__DIR__ . '/routes/chat');
$app->use('/api/chat', $chatRoutes);
$app->listen();
Creating the Routes File
In the src/routes directory, create the chat.php file to manage the routes related to the chat. Add the following code:
use function Lithe\Orbis\Http\Router\{get, post};
// Array to store messages
$messages = [];
// Route to get all messages
get('/', function ($req, $res) use (&$messages) {
    $res->json($messages);
});
// Route to send a new message
post('/', function ($req, $res) use (&$messages) {
    $user = $req->input('user');
    $text = $req->input('text');
    if (!$user || !$text) {
        return $res->status(400)->json(['error' => 'User and text are required']);
    }
    $timestamp = (new DateTime())->format('Y-m-d H:i:s');
    $message = compact('user', 'text', 'timestamp');
    $messages[] = $message;
    $res->status(201)->json($message);
});
Testing the API
Now that your API is set up, let's test it using a tool like Postman or Insomnia.
1. Start the Server
In the terminal, run the following command to start the server:
php line serve
You will see the message Server running on port 8000.
2. Test the Messages Route
2.1 Get All Messages
- Open Postman.
 - Create a new 
GETrequest tohttp://localhost:8000/api/chat. - Click Send. You should see an empty array initially 
[]. 
2.2 Send a New Message
- Create a new 
POSTrequest tohttp://localhost:8000/api/chat. - Go to the Body tab and select the raw option. Choose the JSON type.
 - Add the following JSON in the body of the request:
 
{
    "user": "William",
    "text": "Hello, how is everyone?"
}
- Click Send. You should receive the sent message as a response:
 
{
    "user": "William",
    "text": "Hello, how is everyone?",
    "timestamp": "2023-10-17 15:30:00"
}
3. Check All Messages
Make another GET request to http://localhost:8000/api/chat. You should see the message you just sent:
[
    {
        "user": "William",
        "text": "Hello, how is everyone?",
        "timestamp": "2023-10-17 15:30:00"
    }
]
Conclusion
Congratulations! You have created a simple chat API using Lithe. This API can be expanded with functionalities such as user authentication, data persistence in a database, and much more.
Next Steps
- Data Persistence: Use a database like MySQL or PostgreSQL to store messages permanently.
 - Authentication: Add authentication so that only authenticated users can send messages.
 - WebSockets: Explore using WebSockets to enable real-time communication.
 
Feel free to share your ideas and improvements in the comments! If you enjoyed this tutorial, consider leaving a reaction and sharing it with other developers.
    
Top comments (0)