Um servidor HTTP simples e nativo escrito em C puro, projetado para receber e processar requisições GraphQL no formato JSON sem a necessidade de bibliotecas externas (como cJSON ou frameworks de rede).
O projeto consiste em um servidor de conexões TCP utilizando Sockets de Berkeley no POSIX Linux/macOS. Ele escuta requisições HTTP do tipo POST, faz o parse manual do corpo (payload JSON) para extrair a query GraphQL desejada e devolve uma resposta estruturada em JSON no padrão da especificação GraphQL.
Zero Dependências de Terceiros: Desenvolvido exclusivamente com bibliotecas padrão C (<sys/socket.h>, <arpa/inet.h>, etc.).
Suporte a GraphQL Nátivo: Extração e resolução manual de queries do payload HTTP.
Reuso de Porta: Configurado com SO_REUSEADDR para evitar erros de porta bloqueada ao reiniciar a aplicação.
Arquitetura Modular: Separação clara entre inicialização de rede, recepção de conexões e execução da lógica de negócios.
Para compilar e executar o servidor, você precisa apenas de:
-
Sistema Operacional baseado em Unix (Linux ou macOS).
-
Compilador C (como gcc ou clang).
-
CMake
-
Utilitário curl para realização de testes (opcional).
Compile o arquivo com o CMake:
mkdir build && cd build && cmake .. Construa o executável
cmake --build . Execute o servidor:
./programO servidor estará escutando na porta 8080.
Você pode enviar requisições GraphQL usando o curl no seu terminal:
- Testando a Query hello
curl -X POST http://localhost:8080/graphql \
-H "Content-Type: application/json" \
-d '{"query": "{ hello }"}'- Testando a Query usuario Comando:
curl -X POST http://localhost:8080/graphql \
-H "Content-Type: application/json" \
-d '{"query": "{ usuario { id nome } }"}'- Testando Query Inválida Comando:
curl -X POST http://localhost:8080/graphql \
-H "Content-Type: application/json" \
-d '{"query": "{ produtos }"}'⚙️ Configurações Para alterar a porta padrão, modifique a diretiva de pré-processador no início do código:
#define PORT 8080
#define BUFFER_SIZE 4096