{"id":23789644,"url":"https://github.com/renatoelho/metodos-status-codes","last_synced_at":"2026-04-09T18:51:57.691Z","repository":{"id":270445888,"uuid":"910400702","full_name":"Renatoelho/metodos-status-codes","owner":"Renatoelho","description":"Explico o funcionamento dos métodos e status codes mais comuns em APIs, utilizando uma aplicação em FastAPI. A API permite operações como listar produtos (GET), criar (POST), atualizar (PUT) e remover (DELETE). Também demonstro os status codes 200 OK, 201 Created, 400 Bad Request e 500 Internal Server Error, mostrando seus usos de forma prática.","archived":false,"fork":false,"pushed_at":"2024-12-31T07:26:40.000Z","size":4,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-31T08:23:19.383Z","etag":null,"topics":["docker","docker-compose","fastapi","metodos-http","openapi","postman","python","status-codes"],"latest_commit_sha":null,"homepage":"https://cursos.renato.tec.br/","language":"Python","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/Renatoelho.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-31T07:08:13.000Z","updated_at":"2024-12-31T07:33:52.000Z","dependencies_parsed_at":"2024-12-31T08:23:46.122Z","dependency_job_id":"9ebdf190-0c16-45d5-9286-ce1e2104d25e","html_url":"https://github.com/Renatoelho/metodos-status-codes","commit_stats":null,"previous_names":["renatoelho/metodos-status-codes"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Renatoelho%2Fmetodos-status-codes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Renatoelho%2Fmetodos-status-codes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Renatoelho%2Fmetodos-status-codes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Renatoelho%2Fmetodos-status-codes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Renatoelho","download_url":"https://codeload.github.com/Renatoelho/metodos-status-codes/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240018690,"owners_count":19734872,"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":["docker","docker-compose","fastapi","metodos-http","openapi","postman","python","status-codes"],"created_at":"2025-01-01T17:13:06.754Z","updated_at":"2025-10-28T04:15:37.574Z","avatar_url":"https://github.com/Renatoelho.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Como Funciona Uma API: Métodos HTTP e Seus Status Codes\n\nNeste vídeo, eu explico como funcionam os métodos e status codes HTTP mais comuns utilizados em APIs, com uma aplicação prática desenvolvida em FastAPI. A aplicação simula uma API de produtos, permitindo operações básicas como listar todos os produtos (**GET**), criar um novo produto (**POST**), atualizar um produto existente (**PUT**) e remover um produto (**DELETE**). Além disso, demonstro o comportamento dos principais status codes HTTP, como o **200 OK** para requisições bem-sucedidas, **201 Created** para recursos criados com sucesso, **400 Bad Request** para requisições inválidas e **500 Internal Server Error**, simulando erros internos do servidor. Esse conteúdo é perfeito para quem deseja entender os fundamentos de APIs de forma prática e didática.\n\nEsta aplicação em FastAPI simula uma API de produtos, permitindo executar operações básicas como:\n\n- **GET**: Listar todos os produtos.\n- **POST**: Criar um novo produto.\n- **PUT**: Atualizar um produto existente.\n- **DELETE**: Remover um produto.\n\nA aplicação também demonstra o funcionamento dos seguintes **Status Codes HTTP**:\n\n- **200 OK**: Requisição bem-sucedida.\n- **201 Created**: Recurso criado com sucesso.\n- **400 Bad Request**: Requisição inválida, geralmente devido a dados ausentes ou incorretos.\n- **500 Internal Server Error**: Erro interno simulado para demonstração.\n\n\u003c!--\nhttps://www.youtube.com/@renato-coelho\n--\u003e\n\n## Apresentação em vídeo\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://youtu.be/viE7zOKoFOU\" target=\"_blank\"\u003e\u003cimg src=\"imagens/thumbnail/metodos-status-codes-http.png\" alt=\"Vídeo de apresentação\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n### Requisitos\n\n+ ![Docker](https://img.shields.io/badge/Docker-23.0.3-E3E3E3)\n\n+ ![Docker-compose](https://img.shields.io/badge/Docker--compose-1.25.0-E3E3E3)\n\n+ ![Git](https://img.shields.io/badge/Git-2.25.1%2B-E3E3E3)\n\n+ ![Ubuntu](https://img.shields.io/badge/Ubuntu-20.04-E3E3E3)\n\n## Métodos HTTP Implementados\n\n### **GET /produtos**\n\nRetorna a lista de todos os produtos.\n\n#### Exemplo de Resposta (200):\n```json\n[\n    {\n        \"id\": 1,\n        \"nome\": \"Produto A\",\n        \"descricao\": \"Descrição do Produto A\"\n    },\n    {\n        \"id\": 2,\n        \"nome\": \"Produto B\",\n        \"descricao\": \"Descrição do Produto B\"\n    }\n]\n```\n\n### **POST /produtos**\n\nCria um novo produto.\n\n#### Parâmetros:\n- `nome` (string): Nome do produto.\n- `descricao` (string): Descrição do produto.\n\n#### Exemplo de Resposta (201):\n```json\n{\n    \"id\": 3,\n    \"nome\": \"Produto C\",\n    \"descricao\": \"Descrição do Produto C\"\n}\n```\n\n### **PUT /produtos/{produto_id}**\n\nAtualiza as informações de um produto existente.\n\n#### Parâmetros:\n\n- `produto_id` (int): ID do produto.\n- `nome` (string): Nome atualizado.\n- `descricao` (string): Descrição atualizada.\n\n#### Exemplo de Resposta (200):\n```json\n{\n    \"id\": 1,\n    \"nome\": \"Produto A Atualizado\",\n    \"descricao\": \"Descrição do Produto A Atualizada\"\n}\n```\n\n### **DELETE /produtos/{produto_id}**\n\nRemove um produto pelo ID.\n\n#### Parâmetros:\n\n- `produto_id` (int): ID do produto a ser removido.\n\n#### Exemplo de Resposta (200):\n\n```json\n{\n    \"mensagem\": \"Produto deletado com sucesso.\"\n}\n```\n\n### **GET /simular-erro-500**\n\nSimula um erro interno do servidor.\n\n#### Exemplo de Resposta (500):\n\n```json\n{\n    \"detail\": \"Erro interno do servidor simulado.\"\n}\n```\n\n## Executando a Aplicação com Docker Compose\n\n### Passos\n\n1. Clone este repositório:\n   ```bash\n   git clone https://github.com/Renatoelho/metodos-status-codes.git metodos-status-codes\n   cd metodos-status-codes\n   ```\n\n2. Ative Aplicação:\n   ```bash\n   docker compose -p api-aula -f docker-compose.yaml up -d --build\n   ```\n\n3. Acesse a documentação interativa da API no navegador:\n   [http://localhost:8000/docs](http://localhost:8000/docs)\n\n### Finalizando Aplicação\n\nPara parar os containers, pressione `Ctrl+C` ou execute:\n\n```bash\ndocker compose -p api-aula -f docker-compose.yaml down\n```\n\n### Referências\n\nRequest Methods, ***datatracker***. Disponível em: \u003chttps://datatracker.ietf.org/doc/html/rfc7231#section-4\u003e. Acesso em: 31 Dez. 2024.\n\nMétodos de requisição HTTP, ***developer.mozilla.org***. Disponível em: \u003chttps://developer.mozilla.org/pt-BR/docs/Web/HTTP/Methods\u003e. Acesso em: 31 Dez. 2024.\n\nLista de códigos de estado HTTP, ***Wikipedia***. Disponível em: \u003chttps://pt.wikipedia.org/wiki/Lista_de_c%C3%B3digos_de_estado_HTTP\u003e. Acesso em: 31 Dez. 2024.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frenatoelho%2Fmetodos-status-codes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frenatoelho%2Fmetodos-status-codes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frenatoelho%2Fmetodos-status-codes/lists"}