VL
1) model/{id:guid}
Читать route constraint reference
2) вместо 2х атрибутов юзать 1
Не
[Route("model")]
[HttpGet]
А
[HttpGet("model")]
То же самое касается HttpPost и т.д.
3) использовать ActionResult<T> для большей строгой типизации
Не
return Ok(model);
А
return model;
Если model имеет тип T
Пример
Task<ActionResult<List<MyModel>>>
Сразу видно что возвращает метод юзеру
4) используй классы для приёма [FromQuery] параметров, тогда будет работать встроенная в asp валидация через ModelState
Старый вариант:
MyControllerMethod([FromQuery] string param1, [FromQuery] int param2)
Новый вариант:
class MyModel
{
[FromQuery(Name = "param1")]
[Required]
[MinLength(2), MaxLength(20)]
public string Parameter1 { get; set; }
[FromQuery(Name = "param2")]
[Range(1, int.MaxValue)]
public int Param2 {get; set;}
}
MyControllerMethod([FromQuery] MyModel model)