DEV Community

Lithe
Lithe

Posted on • Edited on

1 2

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.

Sentry blog image

How to reduce TTFB

In the past few years in the web dev world, we’ve seen a significant push towards rendering our websites on the server. Doing so is better for SEO and performs better on low-powered devices, but one thing we had to sacrifice is TTFB.

In this article, we’ll see how we can identify what makes our TTFB high so we can fix it.

Read more

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!

Image of Timescale

Timescale – the developer's data platform for modern apps, built on PostgreSQL

Timescale Cloud is PostgreSQL optimized for speed, scale, and performance. Over 3 million IoT, AI, crypto, and dev tool apps are powered by Timescale. Try it free today! No credit card required.

Try free

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay