Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pedrofnseca/rest-api-c
đź‘˝ A "simple" restful api make in pure C
https://github.com/pedrofnseca/rest-api-c
c docker docker-container http-server libmicrohttpd make nginx nginx-server postgresql rest-api
Last synced: about 2 months ago
JSON representation
đź‘˝ A "simple" restful api make in pure C
- Host: GitHub
- URL: https://github.com/pedrofnseca/rest-api-c
- Owner: PedroFnseca
- Created: 2023-08-28T23:04:17.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-07-30T13:12:27.000Z (5 months ago)
- Last Synced: 2024-07-31T16:05:48.794Z (5 months ago)
- Topics: c, docker, docker-container, http-server, libmicrohttpd, make, nginx, nginx-server, postgresql, rest-api
- Language: C
- Homepage: https://medium.com/@pedrofnseca/evoluindo-como-desenvolvedor-minha-experi%C3%AAncia-com-a-api-feita-em-c-69b758801c91
- Size: 54.7 KB
- Stars: 18
- Watchers: 1
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README-PT.md
Awesome Lists containing this project
README
# Uma Simples API em C puro
Servidor web RESTful em C puro usando [libmicrohttpd](https://www.gnu.org/software/libmicrohttpd/), uma biblioteca de servidor HTTP leve.
Para um exemplo detalhado, vocĂŞ pode se referir ao [manual do libmicrohttpd](https://www.gnu.org/software/libmicrohttpd/manual/libmicrohttpd.html#Simple-HTTP-server-example).
## Por que Escolher C para Este Projeto?
Escolhi deliberadamente a linguagem de programação C para este projeto para me desafiar e revisitar minhas raĂzes de programação. C foi minha primeira linguagem e continua sendo minha favorita. AlĂ©m disso, C encontra uso extensivo em sistemas embarcados e aplicações em tempo real, áreas que particularmente gosto de explorar como um entusiasta.
Meu objetivo principal era obter uma compreensĂŁo mais profunda de como as APIs funcionam sob o capĂ´ e como elas se comunicam com o sistema operacional. A linguagem C Ă© excepcionalmente adequada para esse propĂłsito devido Ă sua natureza de baixo nĂvel e interação direta com hardware e recursos do sistema.
## Banco de Dados Postgres
Neste projeto, estou usando um banco de dados Postgres para armazenar informações do usuário. O banco de dados é hospedado na nuvem no [supabase](https://supabase.com/), e o servidor se comunica com ele usando a biblioteca [libpq](https://www.postgresql.org/docs/9.1/libpq.html).
## Como Executar o Servidor
### Pré-requisitos:
- [x] Docker instalado em sua máquina (Opcional)
- [x] Compilador GCC instalado
- [x] Utilitário Make instalado### Passo a Passo:
1. Clone o RepositĂłrio
```bash
git clone
```
2. Navegue até o Diretório do Projeto
```bash
cd rest-api-C
```
3. Atualize as Credenciais do Banco de Dados
- Abra o arquivo `pg.h` no diretĂłrio `src`.
- Atualize as variáveis com suas credenciais de banco de dados.4. Executando o Servidor:
- Usando Docker (Linux):
```bash
./docker_run.sh
```
- Sem Docker (Linux):
```bash
./main_run.sh
```
5. Acesse o servidor em `http://localhost:8080/` no seu navegador.## Endpoints
Essa API possui os seguintes endpoints:
- `GET /users`: Retorna todos os usuários cadastrados.
- `GET /users/:id`: Retorna um usuário especĂfico com base no ID fornecido.
- `POST /users`: Adiciona um novo usuário ao banco de dados.
- `PUT /users/:id`: Atualiza as informações de um usuário existente.
- `DELETE /users/:id`: Remove um usuário do banco de dados.