DEV Community

Lithe
Lithe

Posted on • Edited on

Criando uma API com Lithe

Se você está interessado em construir uma API simples usando o Lithe, você veio ao lugar certo! Neste tutorial, vamos criar, passo a passo, uma API que permite enviar e receber mensagens em um chat. Usaremos roteadores para organizar nosso código de forma modular.

O que você aprenderá

  • Configurar um projeto PHP com Lithe.
  • Criar um roteador para gerenciar as mensagens do chat.
  • Implementar funcionalidades básicas como enviar e receber mensagens.
  • Testar a API usando Postman ou Insomnia.

Pré-requisitos

  • Conhecimento básico de Lithe e PHP.
  • Ambiente de desenvolvimento PHP instalado (com Composer).
  • Um editor de código (recomendo o Visual Studio Code).

Instalando o Lithe

Para criar um novo projeto com Lithe, execute o seguinte comando:

composer create-project lithephp/lithephp chat-api
Enter fullscreen mode Exit fullscreen mode

Estrutura do Projeto

Crie a seguinte estrutura de diretórios e arquivos dentro do diretório chat-api:

chat-api/
│
├── src/
│   ├── routes/
│   │   └── chat.php
│   └── App.php
└── composer.json
Enter fullscreen mode Exit fullscreen mode

Iniciando a Aplicação

No arquivo src/App.php, configure a aplicação com o seguinte código:

<?php 
use function Lithe\Orbis\Http\Router\{router};

$app = new \Lithe\App;

// Roteador para gerenciar as mensagens do chat
$chatRoutes = router(__DIR__ . '/routes/chat');

$app->use('/api/chat', $chatRoutes);

$app->listen();
Enter fullscreen mode Exit fullscreen mode

Criando o Arquivo de Rotas

No diretório src/routes, crie o arquivo chat.php para gerenciar as rotas relacionadas ao chat. Adicione o seguinte código:

use function Lithe\Orbis\Http\Router\{get, post};

// Array para armazenar mensagens
$messages = [];

// Rota para obter todas as mensagens
get('/', function ($req, $res) use (&$messages) {
    $res->json($messages);
});

// Rota para enviar uma nova mensagem
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);
});
Enter fullscreen mode Exit fullscreen mode

Testando a API

Agora que sua API está configurada, vamos testá-la usando uma ferramenta como Postman ou Insomnia.

1. Iniciar o Servidor

No terminal, execute o seguinte comando para iniciar o servidor:

php line serve
Enter fullscreen mode Exit fullscreen mode

Você verá a mensagem Servidor rodando na porta 8000.

2. Testar a Rota de Mensagens

2.1 Obter Todas as Mensagens

  1. Abra o Postman.
  2. Crie uma nova requisição GET para http://localhost:8000/api/chat.
  3. Clique em Send. Você deverá ver um array vazio inicialmente [].

2.2 Enviar uma Nova Mensagem

  1. Crie uma nova requisição POST para http://localhost:8000/api/chat.
  2. Vá para a aba Body e selecione a opção raw. Escolha o tipo JSON.
  3. Adicione o seguinte JSON no corpo da requisição:
{
    "user": "William",
    "text": "Olá, como estão todos?"
}
Enter fullscreen mode Exit fullscreen mode
  1. Clique em Send. Você deverá receber a mensagem enviada como resposta:
{
    "user": "William",
    "text": "Olá, como estão todos?",
    "timestamp": "2023-10-17 15:30:00"
}
Enter fullscreen mode Exit fullscreen mode

3. Verificar Todas as Mensagens

Faça outra requisição GET para http://localhost:8000/api/chat. Você deverá ver a mensagem que acabou de enviar:

[
    {
        "user": "William",
        "text": "Olá, como estão todos?",
        "timestamp": "2023-10-17 15:30:00"
    }
]
Enter fullscreen mode Exit fullscreen mode

Conclusão

Parabéns! Você criou uma API de chat simples usando o Lithe. Essa API pode ser expandida com funcionalidades como autenticação de usuários, persistência de dados em um banco de dados e muito mais.

Próximos Passos

  • Persistência de Dados: Utilize um banco de dados como MySQL ou PostgreSQL para armazenar mensagens permanentemente.
  • Autenticação: Adicione autenticação para que apenas usuários autenticados possam enviar mensagens.
  • WebSockets: Explore o uso de WebSockets para permitir comunicação em tempo real.

Sinta-se à vontade para compartilhar suas ideias e melhorias nos comentários! Se você gostou deste tutorial, considere deixar uma reação e compartilhar com outros desenvolvedores.

Top comments (2)

Collapse
 
tiagoon profile image
Tiago Oliveira

Framework promissor. Estrutura enxuta, mas sem deixar de lado os utilitários que agilizam o dia a dia.

Simples como o express e poderoso como o laravel.

Collapse
 
lithephp profile image
Lithe

Fico feliz que tenha percebido essas qualidades! O Lithe realmente foi projetado com o objetivo de ser uma solução enxuta e prática, mas sem abrir mão dos utilitários que tornam o desenvolvimento mais ágil. A ideia é combinar a simplicidade do Express.js com a potência do Laravel, para que os desenvolvedores tenham uma ferramenta flexível e poderosa ao mesmo tempo. Se precisar de mais informações, a documentação está disponível e pode te ajudar a explorar todos os recursos que o Lithe oferece!