Creé una API en .NET CORE 3.1, y estoy probando algunas solicitudes con cartero.

Creé una clase de categoríaDTO.CS y agregué algunas anotaciones de fecha, pero aunque paso la información correcta, Postman me devuelve como inválido.

public class CategoryDTO
{
    public Guid Id { get; set; }
    [Required(ErrorMessage = "Description is required", AllowEmptyStrings = false)]
    public string Description{ get; private set; }
    [Required(ErrorMessage = "Observable is required", AllowEmptyStrings = false)]
    public string Observable{ get; private set; }
            
}
public async Task<IActionResult> Post([FromBody] DTOs.CategotyDTO categoryDTO)
{
    var category = new Category(categoryDTO.Description, categoryDTO.Obervable);
    
    if (category == null)
    {
       return BadRequest("Category é null");
    }
                
    _categoryRepository.Save(category);
    
    return Ok();
}

En post hombre tengo un post, crudo json

{
    "Description": "Category 1",
    "Observable": "Observable 1",
}

Y el regreso de la API es

{
    "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
    "title": "One or more validation errors occurred.",
    "status": 400,
    "traceId": "|c4215190-4f62962a8efd326f.",
    "errors": {
        "Description": [
            "Description is required"
        ],
        "Observable": [
            "Observable is required"
        ]
    }
}

Ya he deshabilitado el SSL de Postman, pero incluso para que la información no llega a mi API, tengo que hacer una configuración para mi API para aceptar al JSON, ¿qué está pasando mal?

0
Emiry Mirella 9 jun. 2021 a las 01:28

2 respuestas

La mejor respuesta

Retire la palabra clave privada de la propiedad SET en la categoría Clase DTO. Acabo de hacerlo y su código funcionó

public class CategoryDTO
    {
        public Guid Id { get; set; }
        [Required(ErrorMessage = "Description is required", AllowEmptyStrings = false)]
        public string Description { get;  set; }
        [Required(ErrorMessage = "Observable is required", AllowEmptyStrings = false)]
        public string Observable { get;  set; }

    }

enter image description here

1
Amit Kotha 8 jun. 2021 a las 22:52

También debe enviar identificación, o crear otra DTO sin ID

0
Farzad Farahmand 8 jun. 2021 a las 22:34