c# - ejemplos - autenticacion de usuarios en asp net y sql server
¿Cómo puedo manejar de forma segura las solicitudes no válidas de datos del repositorio? (2)
Deberías estar mucho más a la defensiva que eso. Primero busca null
... de lo contrario, estás pidiendo que explote:
var entity = platypi.Find(p => p.Id == id);
return entity == null ? string.Empty : entity.Name;
Actualmente también está haciendo más de una búsqueda única ... que no necesita ( Find
para verificar el nombre ... luego Find
para devolver el nombre ...).
Con este código:
public String Get(int id)
{
return platypi.Find(p => p.Id == id).Name;
}
... Puedo obtener datos existentes a través de:
http://localhost:33181/api/DPlatypus/N
(donde N corresponde a una ID existente). Si uso un valor inexistente, sin embargo, explota.
Entonces, intenté esto:
public String Get(int id)
{
if (!string.IsNullOrEmpty(platypi.Find(p => p.Id == id).Name))
{
return platypi.Find(p => p.Id == id).Name;
}
return string.Empty;
}
... pero no tiene ningún efecto beneficioso. ¿Hay alguna manera de ignorar de manera segura las solicitudes no válidas?
Si el método Find
genera una excepción, puede envolver esto en un manejador de excepciones. Eso le permitiría devolver "de manera segura" una cadena vacía en una entrada no válida.
Si Find
devuelve null
, podría hacer:
public String Get(int id)
{
var item = platypi.Find(p => p.Id == id);
return item == null ? string.Empty : item.Name;
}