Я бы не сказал, что это проблема, но мне просто интересно. Так что я только начал использовать .net для веб-API, я обычно использовал ноды или Python, потому что они быстрее строятся, пока что это здорово.
Во всяком случае, в моем методе контроллера (пост), Добавлениеусловие (ModelState.IsValid) не имеет значения.
Я имею в виду, что код все еще проверяет модель, но метод пост-контроллера даже не делает ничего. Надеюсь, код делает его более понятным.
[Route("api/[controller]")]
[ApiController]
public class PeopleController : ControllerBase
{
private readonly IEntityRepository _entityRepository;
public PeopleController(IEntityRepository entityRepository)
{
_entityRepository = entityRepository;
}
[HttpPost]
public ActionResult<Person> Create(Person person)
{
// if(!ModelState.IsValid){
// return new OkObjectResult("wrong shit");
// }
// person.CreatedAt = DateTime.Now;
// person.Tags = new List<string>();
// person.Tags.Add($"id+@{person.Id}");
// person.Tags.Add($"ar+:-{person.Archived}");
// person.Id = MongoDB.Bson.ObjectId.GenerateNewId().ToString();
// _entityRepository.Create(person);
// return person;
return null;
}
}
public interface IEntityRepository {
void Create(Person person);
}
public class EntityRepository : IEntityRepository
{
private readonly IMongoCollection<Person> _entities;
public EntityRepository(IConfiguration config)
{
var client = new MongoClient(config.GetConnectionString("TestConn"));
var database = client.GetDatabase("TestDB");
_entities = database.GetCollection<Person>("Person");
}
public void Create(Person person)
{
_entities.InsertOne(person);
}
}
public class Person : IEntity
{
public string Id { get; set; }
[Required(ErrorMessage="Name is required")]
[MinLength(10, ErrorMessage = "Name must be longer than 10 characters")]
[MaxLength(20, ErrorMessage = "Name must be shorter than 20 characters")]
public string Name {get;set; }
[EmailAddress(ErrorMessage = "Enter valid email")]
[ValidEmail(AllowedDomain = "gmail.com", ErrorMessage = "Invalid email")]
public string Email {get;set;}
[Phone(ErrorMessage = "Invalid phone")]
public string phone {get;set;}
[BsonElement("archived")]
public bool Archived { get; set; }
[BsonElement("tags")]
public List<string> Tags { get; set; }
[Required]
[BsonElement("something")]
public Something Rotation {get;set;}
}
Когда я добавляю это к почтальону
{
"name": "sssssssssssssssssss",
"phone": "2323-2323-2323",
"email": "sd@gmail.com",
"rotation": { "name": "g"}
}
Это все еще подтверждает
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"traceId": "|b6721095-496abaabbf3dbf66.",
"errors": {
"Rotation.Name": [
"The field Name must be a string or array type with a minimum length of '10'."
]
}
}