Prévia do material em texto
APIs Restful com C# e POO Arquitetura Moderna, Boas Práticas e Integração Especialização em Engenharia de Software Uma API Application Programming Interface) atua como um contrato digital, permitindo que sistemas distintos se comuniquem sem conhecer detalhes internos um do outro. Ponte Digital: Conecta o Frontend Cliente) ao Backend Servidor). Abstração: Oculta a complexidade do banco de dados e regras de negócio. Padrão Web: Em C#, utilizamos o ASP.NET Core para criar APIs robustas e escaláveis. O Conceito de API Encapsulamento Assim como uma classe protege seus atributos privados, a API protege o núcleo do sistema. O mundo externo só acessa o que é exposto através dos Endpoints (métodos públicos). Interface e Contrato A API define o que pode ser feito, mas não como. Se você mudar a lógica interna em C# (o "como"), o contrato com o cliente Front-end) permanece intacto. A API sob a Ótica da POO Arquitetura Cliente-Servidor A web funciona baseada em trocas de mensagens. O ciclo de vida de uma operação em API segue um fluxo previsível e sem estado Stateless). 1. Request Requisição): O cliente envia um pedido contendo verbo, cabeçalhos e corpo (body). 2. Response Resposta): O servidor processa e retorna um status code e os dados solicitados (geralmente JSON. Verbo HTTP Ação no Sistema Operação de Banco Status Típico GET Buscar informações READ 200 OK POST Criar novo registro CREATE 201 Created PUT Atualizar completo UPDATE 204 No Content DELETE Remover registro DELETE 204 No Content Mapeando Operações (CRUD) Gerenciamento de Fluxo Em ASP.NET Core, os Controllers são classes que herdam de ControllerBase. Eles não devem conter regras de negócio complexas. Sua função é receber o JSON, chamar um Serviço e devolver a resposta HTTP adequada. Controllers: O Cérebro da API Model (Entidade) Representa a tabela exata do banco de dados. Pode conter dados sensíveis como senhas, datas de auditoria ou chaves estrangeiras que não devem vazar. DTO (Data Transfer Object) Uma classe simples usada apenas para transporte. Ela filtra o que entra e sai da API, garantindo que o cliente receba apenas o necessário Encapsulamento). Segurança e DTOs O processo de conversão é vital em APIs REST. O C# trabalha com Objetos na memória, mas a Web fala Texto JSON. O ASP.NET Core realiza isso automaticamente usando System.Text.Json. • Serialização Saída Transforma o objeto Produto em uma string JSON para enviar ao cliente. • Desserialização Entrada): Recebe um texto JSON do cliente e o reconstrói como um objeto C# tipado. Serialização JSON Família 2xx (Sucesso) Indica que a requisição foi recebida e processada corretamente. Ex: 200 OK, 201 Created. Família 4xx (Erro Cliente) O cliente enviou dados errados ou não tem permissão. Ex: 400 Bad Request, 404 Not Found. Família 5xx (Erro Servidor) Falha interna na API ou no banco de dados. Ex: 500 Internal Server Error. Status Codes: A Linguagem HTTP Não bloqueie a Thread! Operações de I/O (rede/banco) são lentas. Em C#, o uso de async/await é obrigatório para manter a API responsiva. Consumo Eficiente com HttpClient Em vez de criar dependências com new dentro do Controller (alto acoplamento), nós as solicitamos no construtor. O framework cuida do resto. 1. Interface Defina um contrato (ex: IProdutoService). O Controller só conhece a interface, não a implementação concreta. 2. Registro Configure no Program.cs: builder.Services.AddScoped (); 3. Injeção O ASP.NET "injeta" a instância pronta no construtor do Controller automaticamente. Injeção de Dependência (DI) https://img.freepik.com/free-vector/3d-isometric-train-station-megapolis-railways-suburb-village_14411994.jpg?semt=ais_hybrid&w=740&q=80 Source: www.freepik.com https://img.freepik.com/premium-photo/digital-blue-lock-icon-interface-with-circle-binary-numders-shield-cyber-security-protection-concept-3d-rendering_25365815 265.jpg Source: www.freepik.com Image Sources