Ir para o conteúdo do rodapé
Iron Academy Logo
Aplicação C#
Aplicação C#

Outras categorias

Validação de Dados da API Mínima em .NET 10: Um Mergulho Profundo com Tim Corey

Tim Corey
10m 28s

A validação de dados é um aspecto crítico do desenvolvimento de APIs. Sem validação adequada, aplicações de software correm o risco de aceitar dados mal formados, dados maliciosos ou solicitações inválidas, levando a corrupção de dados, vulnerabilidades de segurança como injeção de SQL, scripting entre sites e até mesmo estouros de buffer. Garantir que uma solicitação de entrada está bem formada, contém o formato esperado e respeita os tipos de dados definidos no seu backend é fundamental para a integridade dos dados, manipulação robusta de erros e confiança do desenvolvedor.

Em seu vídeo "Minimal API Data Validation Changes in .NET 10," Tim Corey percorre as melhorias de validação de API em APIs Mínimas, demonstrando como os desenvolvedores podem reforçar uma validação abrangente em ambas as classes e registros. Tim explica não apenas como prevenir dados inválidos, mas também como reduzir a duplicação de código, simplificar a lógica de validação e retornar códigos de status HTTP apropriados quando a validação falha. Vamos seguir o percurso de Tim para uma compreensão mais profunda da validação de dados em APIs Mínimas.

Introdução à Validação de APIs Mínimas

Tim Corey começa destacando que APIs Mínimas no .NET 10 receberam várias melhorias, com a validação de solicitações sendo uma das melhorias chave. Isso permite que solicitações de entrada, sejam através da cadeia de consulta, cabeçalhos ou corpo da solicitação, sejam automaticamente validadas. Tim enfatiza que uma validação adequada não só melhora a experiência do desenvolvedor, mas também impede que solicitações mal formadas cheguem à lógica de negócios, o que é essencial para manter a integridade dos dados e proteger informações sensíveis.

Tim também observa que seu vídeo faz parte de uma série de treinamentos rápida de 10 minutos, destinada a fornecer orientação acionável sem mergulhar muito em teoria abstrata. Ele incentiva os espectadores a baixar seu código fonte para acompanhar.

Configurando uma API Mínima para Validação

Para demonstrar regras de validação, Tim configura uma API mínima a partir de um projeto novo de arquivo, simplificando-a para focar na validação da API. Sua API de exemplo inclui:

  • Um endpoint Hello World para testar a conectividade.

  • Uma solicitação POST /person que aceita um objeto Person.

  • Uma solicitação POST /login para um registro de Login.

Tim executa a API e mostra que dados mal formados são inicialmente aceitos. Por exemplo, enviar um objeto Person em branco ou um email inválido no registro de Login ainda resulta em uma resposta de API bem-sucedida. Isso demonstra a necessidade de validação de esquema e validação de solicitações para evitar que dados inválidos sejam processados no backend.

Adicionando Serviços de Validação às APIs Mínimas

Tim explica que o primeiro passo para implementar validação adequada é registrar serviços de validação na API:

builder.Services.AddValidation();

Ao adicionar este serviço, os manipuladores de rota realizam automaticamente verificações de tipo, validação de formato e validação de conteúdo nas solicitações recebidas. Tim aponta que este passo é essencial para garantir que falhas de validação gerem mensagens de erro em vez de permitir que dados maliciosos contornem o sistema.

Validando Classes: Exemplo com Modelo Pessoa

Tim adiciona atributos de validação à classe Pessoa usando System.ComponentModel.DataAnnotations. Ele marca propriedades como obrigatórias e impõe validação de formato com restrições de comprimento mínimo:

[Required]
[MinLength(2)]
public string FirstName { get; definir; }

[Required]
[MinLength(2)]
public string LastName { get; definir; }

Executar a API agora aciona erros de validação se o corpo da solicitação estiver ausente de campos obrigatórios ou contiver dados malformados. Por exemplo, enviar um LastName de um único caractere produz um 400 Bad Request com uma mensagem de erro detalhada:

"O campo LastName deve ser de um tipo de string ou array com um comprimento mínimo de 2."

Tim destaca que o uso de bibliotecas de validação como esta reduz a duplicação de código e permite que os desenvolvedores se concentrem na lógica de negócios em vez de escrever lógica de validação repetitiva em cada manipulador de rota.

Validando Registros: Exemplo com Registro de Login

A validação de registros difere ligeiramente porque suas propriedades são definidas no construtor. Tim demonstra como impor regras de validação em registros usando a sintaxe [property:]:

public record Login(
    [property: Required, EmailAddress] string Email,
    [property: Required, MinLength(10)] string Password,
    [property: Compare(nameof(Password))] string ConfirmPassword
);

Pontos-chave que Tim explica:

  • A validação do Email garante que o campo Email siga o formato correto.

  • O comprimento mínimo na senha protege contra solicitações malformadas ou senhas fracas.

  • [Compare(nameof(Password))] garante que ConfirmPassword corresponde à senha original, evitando corrupção de dados ou falhas de validação em objetos aninhados.

Tim executa a solicitação post para o endpoint de login e demonstra que formatos de email inválidos, senhas curtas ou senhas de confirmação incompatíveis acionam erros de validação automaticamente. Uma vez que os campos atendem ao formato esperado, a resposta da API é bem-sucedida.

Armadilhas a Evitar: Acessibilidade Importa

Tim aponta uma armadilha sutil: a validação falha silenciosamente se as classes ou registros não forem públicos. Mesmo que a solicitação da API seja ligada com sucesso ao objeto, os resultados da validação não serão aplicados:

internal record Login(...); // A validação não será executada

Ele explica que, embora dados maliciosos ou entradas inválidas possam ainda preencher objetos, a estratégia de validação é contornada. Esse comportamento é documentado no ASP.NET Core, mas o Visual Studio não avisa os desenvolvedores, por isso é crucial revisar regularmente as regras de validação e garantir que todos os modelos de API sejam públicos.

Vantagens de Usar Validação em API Mínimas

Tim conclui resumindo os benefícios da validação de dados da API em APIs Mínimas:

  1. Elimina a lógica de validação manual: Não há necessidade de escrever verificações repetitivas para cada propriedade.

  2. Garante a integridade dos dados: Impede que solicitações malformadas corrompam o backend ou objetos aninhados.

  3. Melhora a segurança: Reduz a exposição a dados maliciosos, injeção de SQL, scripts entre sites e outras vulnerabilidades de segurança.

  4. Fornece mensagens de erro claras: Retorna falhas de validação com mensagens de erro e códigos de status HTTP adequados (como 400 Bad Request).

  5. Melhora a experiência do desenvolvedor: Validação declarativa limpa reduz a duplicação de código e melhora a confiança nas respostas da API.

  6. Suporta validação abrangente: Funciona automaticamente no corpo da solicitação, strings de consulta, cabeçalhos e objetos aninhados.

Seguindo a abordagem de Tim, os desenvolvedores podem implementar validações abrangentes sem escrever métodos personalizados de validação ou repetir a lógica de validação em vários endpoints.

Conclusão

O vídeo de Tim Corey video fornece um guia prático passo a passo para implementar validação de API em APIs Mínimas com .NET 10. Desde adicionar serviços de validação até decorar classes e registros com atributos e entender armadilhas potenciais, Tim demonstra como impor integridade de dados, validação de formato e tratamento de erros de forma eficaz.

A validação adequada de dados da API garante que sua REST API apenas processe solicitações bem formadas, reduzindo riscos de dados maliciosos, injeção de SQL, scripts entre sites e outras vulnerabilidades de segurança. O uso de regras de validação, validação de esquema e estratégia de validação adequada fortalece a confiança do desenvolvedor enquanto mantém um backend limpo e seguro.

Seguindo a orientação de Tim, os desenvolvedores podem implementar um pipeline de validação robusto, seguro e confiável, garantindo que cada solicitação post, cada objeto e cada solicitação de API estejam de acordo com os formatos esperados, protegendo tanto o backend quanto o usuário final.

Hero Worlddot related to Validação de Dados da API Mínima em .NET 10: Um Mergulho Profundo com Tim Corey
Hero Affiliate related to Validação de Dados da API Mínima em .NET 10: Um Mergulho Profundo com Tim Corey

Ganhe mais compartilhando o que você ama.

Você cria conteúdo para desenvolvedores que trabalham com .NET, C#, Java, Python ou Node.js? Transforme sua expertise em renda extra!

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim