es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

ASP.NET Core 6 Web API – haciendo campos obligatorios

Tenía una API CRUD básica que guardaba un modelo en MongoDB y funcionaba correctamente.

El modelo se ve así:

“`[BsonIgnoreExtraElements]
public class Configuration
{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public string Id { get; set; }

<pre><code>[Display(Name = "Nombre del parámetro")]
[Required]
public string ParamName { get; set; }
[Display(Name = "Valor del parámetro")]
[Required]
public string ParamValue { get; set; }
public string Description { get; set; }
</code></pre>

}

<pre><code><br />Y mi acción se ve así:

“`[HttpPost(Name = “Create”)]
[Produces(“application/json”)]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public async Task<><apiresult>> Create(Configuration configuration)
{
try
{
var res = await _configurationRepository.Add(configuration);
// HACER OTRAS COSAS
}
catch (Exception ex)
{
// manejo de errores
}
}

Cuando trasladé este código a .NET 6, intenté la acción anterior a través de Postman, pero obtengo este error:

“`> “type”: “https://tools.ietf.org/html/rfc7231#section-6.5.1”,

<blockquote>
"title": "Se produjeron uno o más errores de validación.",
"status": 400,
"El campo Id es requerido."“`

¿Alguna idea de por qué sucede esto? Lo mismo ocurre para los campos de tipo string. Este es solo un ejemplo, básicamente la mayoría de mis acciones no funcionan debido a este cambio.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que falta el campo “Id” en el cuerpo de la solicitud o que es nulo. En la versión anterior de .NET, el atributo [BsonRepresentation(BsonType.ObjectId)] en la propiedad Id puede haber proporcionado un valor predeterminado para el campo. Sin embargo, en .NET 6, este comportamiento ha cambiado y el atributo solo proporciona un mapeo para la serialización y deserialización.

    Para resolver el problema, puedes establecer explícitamente el campo Id al crear un nuevo objeto Configuration o modificar el código del repositorio para generar un nuevo Id si no se proporciona ninguno. Alternativamente, puedes agregar el atributo [Required] en la propiedad Id para garantizar su presencia en el cuerpo de la solicitud.

    Para los campos de cadena, puedes verificar si tienen el atributo [Required] y asegurarte de que el cuerpo de la solicitud contenga valores para esos campos. También es posible que las reglas de validación hayan cambiado en .NET 6. Puedes revisar la documentación del espacio de nombres DataAnnotations y hacer los ajustes necesarios en el modelo.

Comments are closed.