{"id":19405066,"url":"https://github.com/pedrofnseca/rest-api-c","last_synced_at":"2025-11-06T18:05:10.421Z","repository":{"id":191286268,"uuid":"684325308","full_name":"PedroFnseca/rest-api-C","owner":"PedroFnseca","description":"A simple RESTful API built in C for lightweight and fast web servers.","archived":false,"fork":false,"pushed_at":"2025-01-31T12:07:41.000Z","size":84,"stargazers_count":59,"open_issues_count":1,"forks_count":8,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-03T01:51:11.812Z","etag":null,"topics":["api","c","docker","docker-container","http","http-server","https","libmicrohttpd","make","nginx","nginx-server","postgresql","rest-api","server"],"latest_commit_sha":null,"homepage":"https://medium.com/@pedrofnseca/evoluindo-como-desenvolvedor-minha-experi%C3%AAncia-com-a-api-feita-em-c-69b758801c91","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PedroFnseca.png","metadata":{"files":{"readme":"README-PT.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-08-28T23:04:17.000Z","updated_at":"2025-03-28T09:01:38.000Z","dependencies_parsed_at":"2024-11-10T11:47:52.761Z","dependency_job_id":null,"html_url":"https://github.com/PedroFnseca/rest-api-C","commit_stats":null,"previous_names":["pedrofnseca/rest-api-c"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PedroFnseca%2Frest-api-C","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PedroFnseca%2Frest-api-C/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PedroFnseca%2Frest-api-C/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PedroFnseca%2Frest-api-C/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PedroFnseca","download_url":"https://codeload.github.com/PedroFnseca/rest-api-C/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250600550,"owners_count":21456983,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","c","docker","docker-container","http","http-server","https","libmicrohttpd","make","nginx","nginx-server","postgresql","rest-api","server"],"created_at":"2024-11-10T11:37:05.524Z","updated_at":"2025-11-06T18:05:10.099Z","avatar_url":"https://github.com/PedroFnseca.png","language":"C","readme":"# Uma Simples API em C puro\n\u003cdiv align=center\u003e\n   \u003ca href=\"./README.md\"\u003e\n   English Version\n   \u003c/a\u003e\n   |\n   \u003ca href=\"https://medium.com/@pedrofnseca/evoluindo-como-desenvolvedor-minha-experi%C3%AAncia-com-a-api-feita-em-c-69b758801c91\" target=\"_blank\"\u003e\n   Artigo\n   \u003c/a\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\nServidor web RESTful em C puro usando [libmicrohttpd](https://www.gnu.org/software/libmicrohttpd/), uma biblioteca de servidor HTTP leve.\n\nPara um exemplo detalhado, você pode se referir ao [manual do libmicrohttpd](https://www.gnu.org/software/libmicrohttpd/manual/libmicrohttpd.html#Simple-HTTP-server-example).\n\n## Por que Escolher C para Este Projeto?\n\nEscolhi 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.\n\nMeu 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.\n\n## Banco de Dados Postgres\n\nNeste 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).\n\n## Como Executar o Servidor\n\n### Pré-requisitos:\n- [x] Docker instalado em sua máquina (Opcional)\n- [x] Compilador GCC instalado\n- [x] Utilitário Make instalado\n\n### Passo a Passo:\n\n1. Clone o Repositório\n   ```bash\t\n   git clone\n    ```\n2. Navegue até o Diretório do Projeto\n    ```bash\n    cd rest-api-C\n    ```\n3. Atualize as Credenciais do Banco de Dados\n    - Abra o arquivo `pg.h` no diretório `src`.\n    - Atualize as variáveis com suas credenciais de banco de dados.\n\n4. Executando o Servidor:\n    - Usando Docker (Linux):\n      ```bash\n      ./docker_run.sh\n      ```\n    - Sem Docker (Linux):\n      ```bash\n      ./main_run.sh\n      ```\n5. Acesse o servidor em `http://localhost:8080/` no seu navegador.\n\n## Endpoints\n\nEssa API possui os seguintes endpoints:\n\n- `GET /users`: Retorna todos os usuários cadastrados.\n- `GET /users/:id`: Retorna um usuário específico com base no ID fornecido.\n- `POST /users`: Adiciona um novo usuário ao banco de dados.\n- `PUT /users/:id`: Atualiza as informações de um usuário existente.\n- `DELETE /users/:id`: Remove um usuário do banco de dados.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpedrofnseca%2Frest-api-c","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpedrofnseca%2Frest-api-c","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpedrofnseca%2Frest-api-c/lists"}