Я создал api в .net core 3.1 и тестирую несколько запросов с помощью Postman.

Я создал класс categorydto.cs и добавил несколько аннотаций даты, но, хотя я передаю правильную информацию, почтальон возвращает меня как недействительный.

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();
}

В почтовом ящике у меня есть POST, необработанный JSON

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

И возврат api

{
    "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"
        ]
    }
}

Я уже отключил ssl почтальона, но даже если информация не доходит до моего api, мне нужно выполнить некоторую конфигурацию для моего api, чтобы принять json, что происходит не так?

0
Emiry Mirella 9 Июн 2021 в 01:28

2 ответа

Лучший ответ

Удалите ключевое слово private из свойства set в классе DTO категории. Я только что сделал это, и ваш код заработал

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 Июн 2021 в 22:52

Вы также должны отправить Id или создать еще один dto без Id

0
Farzad Farahmand 8 Июн 2021 в 22:34