Introdução
O protocolo REST (Representational State Transfer) é amplamente usado em aplicações web e IoT, permitindo a comunicação entre dispositivos e servidores através de requisições HTTP.
Neste artigo, mostraremos como criar uma API REST na placa de desenvolvimento ESP32-C6 DevKitC-1 com Arduino IDE.
Nosso projeto tem como objetivo criar duas rotas para fazer requisições. Uma HTTP GET para obter dados de um sensor de temperatura da placa e uma HTTP POST para atualizar o LED.
Para conhecer mais a placa de desenvolvimento consulte nosso artigo Introdução à Placa ESP32-C6-DevKitC-1: Ideal para IoT
O que é uma API REST?
Uma API REST é um conjunto de endpoints (URLs) que recebem requisições HTTP.
Métodos mais usados:
- GET: Obter dados
- POST: Enviar dados
- PUT/PATCH: Atualizar dados
- DELETE: Remover dados
Materiais Necessários
Para desenvolver nossa aplicação os materiais utilizados foram:
- Placa ESP23-C6 DevKitC-1
- Cabo USB-C
- Resistor 10k ohms
- LED
- Resistor 330 ohms
- Sensor DHT11
- Jumpers
- Arduino IDE
Para configurar o ambiente e instalar o suporte a ESP32-C6 veja o artigo ESP32-C6 na Prática: Seu Primeiro “Hello World”
Circuito
Código
Vamos criar dois endpoints:
- GET /sensor: retorna os valores de temperatura e umidade em JSON
- POST /led: recebe um JSON {“led”: “1/0”} para ligar/desligar o LED
// Função para lidar com requisições de sensor
void handleSensor() {
if (readSensor()) {
JsonDocument doc;
doc["temperatura"] = temperature;
doc["umidade"] = humidity;
String response;
serializeJson(doc, response);
server.send(200, "application/json", response); // Envia a resposta com os dados do sensor
} else {
server.send(500, "application/json", "{\"error\":\"Falha no sensor\"}");
}
}
// Função para lidar com requisições de LED
void handleLed() {
if (server.hasArg("plain")) {
String body = server.arg("plain"); // Obtém o corpo da requisição POST
JsonDocument doc;
DeserializationError error = deserializeJson(doc, body);
if (!error) {
int ledState = doc["led"];
setLED(ledState == 1 ? HIGH : LOW);
server.send(200, "application/json", "{\"message\":\"LED atualizado\"}");
return;
}
}
server.send(400, "application/json", "{\"error\":\"JSON inválido\"}");
}
// Definicao de Rotas da API REST
server.on("/sensor", HTTP_GET, handleSensor);
server.on("/led", HTTP_POST, handleLed);
server.begin(); // Inicia o servidor web server
O código completo pode ser consultado em:
https://github.com/guilhermefernandesk/ESP32-C6/tree/main/apiRest
Resultados
Para a realização do teste da requisição POST, utilizou-se o software Postman, que permite o envio do JSON na rota especificada e a validação da resposta obtida.
Para utilizá-lo, é necessário realizar o download do Postman no site oficial, instalar o software e, em seguida, configurá-lo de acordo com o ambiente de desenvolvimento desejado.
No exemplo abaixo, enviamos o JSON {“led”: “1/0”} na rota POST /led

Conclusão
Neste artigo, apresentamos como usar o ESP32-C6 como um servidor RESTful para enviar e receber informações em JSON. Essa abordagem demonstra o uso de um protocolo de comunicação para sistemas web e Iot
Sinta-se à vontade para compartilhar seus resultados com a comunidade, seja por artigos, vídeos ou repositórios abertos. Sua experiência pode inspirar e auxiliar muitos outros desenvolvedores.





