{"id":22174900,"url":"https://github.com/feggah/university-api","last_synced_at":"2026-04-28T20:36:22.195Z","repository":{"id":46579671,"uuid":"401499944","full_name":"Feggah/university-api","owner":"Feggah","description":"This repository contains an Elixir API developed for the discipline SI202 (UNICAMP)","archived":false,"fork":false,"pushed_at":"2021-10-27T23:40:18.000Z","size":40,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-29T22:46:53.656Z","etag":null,"topics":["api","docker","elixir","unicamp"],"latest_commit_sha":null,"homepage":"","language":"Elixir","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/Feggah.png","metadata":{"files":{"readme":"README.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}},"created_at":"2021-08-30T22:14:27.000Z","updated_at":"2021-10-27T23:40:20.000Z","dependencies_parsed_at":"2022-07-20T06:32:33.558Z","dependency_job_id":null,"html_url":"https://github.com/Feggah/university-api","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Feggah%2Funiversity-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Feggah%2Funiversity-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Feggah%2Funiversity-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Feggah%2Funiversity-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Feggah","download_url":"https://codeload.github.com/Feggah/university-api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245325220,"owners_count":20596818,"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","docker","elixir","unicamp"],"created_at":"2024-12-02T07:54:43.688Z","updated_at":"2026-04-28T20:36:17.173Z","avatar_url":"https://github.com/Feggah.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# University API\n\nEsse repositório contém o código-fonte do desafio desenvolvido da discplina Resolução de Problemas da UNICAMP.\n\nA estruturação do repositório está dividida da seguinte maneira:\n- A pasta `api` contém todo código em [Elixir](https://elixir-lang.org/);\n- Os arquivos `.dockerignore`, `docker-compose.yml`, `Dockerfile` e `entrypoint.sh` estão relacionados a conteinerização da aplicação;\n\n## Como executar a aplicação\n\nAntes de executar a aplicação, você precisará ter instalado o [docker-compose](https://docs.docker.com/compose/). Siga a documentação desse link para efetuar sua instalação.\n\nAgora, com o docker-compose instalado você pode simplesmente rodar em seu terminal a diretiva `make`:\n```console\nmake up\n```\n\nCaso você não tenha o `make` instalado, pode utilizar diretamente a linha de comando do `docker-compose`:\n```console\ndocker-compose up\n```\n\nQuando os dois conteineres estiverem rodando, a API pode ser acessada através do endpoint `localhost:4000/api/universities`.\n\nEsse endpoint aceita todos os métodos HTTP de CRUD. Para exemplicar os contratos da API, abaixo temos uma resposta de uma listagem através de uma requisição `GET`:\n\n![image](https://i.imgur.com/TIKZfjH.png)\n\nAbaixo está um exemplo de criação de uma universidade. Na imagem abaixo está o `body` da requisição:\n\n![image](https://i.imgur.com/l3nUxVi.png)\n\nE agora a resposta da API para a requisição `POST`:\n\n![image](https://i.imgur.com/qORHO0C.png)\n\nVerifique que na nova requisição `GET` de listagem a última universidade criada também está contida na resposta:\n\n![image](https://i.imgur.com/df1V6uV.png)\n\nPara exemplificar a atualização de um valor de uma universidade, abaixo está a atualização do número de alunos da universidade com o ID 2. Primeiramente, o `body` tem o seguinte conteúdo:\n\n![image](https://i.imgur.com/OjudqRU.png)\n\u003e Note que a especificação de qual universidade deve ser atualizada está contida no próprio endpoint da API. Nesse caso, estamos adicionando o ID 2 no final do endpoint.\n\nE essa foi a resposta da requisição de atualização:\n\n![image](https://i.imgur.com/rrMt5Pk.png)\n\nCom uma nova requisição de listagem para a verificação da atualização do campo, verifique a imagem abaixo.\n\n![image](https://i.imgur.com/Tiw1c14.png)\n\nO último exemplo de método de CRUD é o `DELETE`. Para isso, iremos deletar a mesma universidade que fizemos a atualização, que é identificada pelo ID 2.\n\nUma requisição de deleção não contém `body`, a especificação de qual universidade deve ser deletada está no próprio endpoint. Por isso, a requisição foi feita para `localhost:4000/api/universities/2` e a resposta foi:\n\n![image](https://i.imgur.com/dsNfcmo.png)\n\nCom essa universidade deletada, a resposta final da listagem contém apenas 2 universidades:\n\n![image](https://i.imgur.com/WRFr12q.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffeggah%2Funiversity-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffeggah%2Funiversity-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffeggah%2Funiversity-api/lists"}