Код: Выделить всё
public static class MyAppConventions
{
[ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status404NotFound,
MediaTypeNames.Application.ProblemJson)]
[ApiConventionNameMatch(ApiConventionNameMatchBehavior.Prefix)]
public static void Get()
{ }
}
Код: Выделить всё
[ApiConventionType(typeof(MyAppConvention))]
[Route("test")]
public class TestController : ControllerBase
{
[HttpGet]
public IActionResult GetData()
{
if (condition)
return NotFound();
else
return Ok(new TestDto());
}
}
Если я добавлю дополнительный ProducesResponseType, чтобы отметить пользовательский код ответа, отсутствующий в соответствующее соглашение, то атрибуты соглашения игнорируются.
Код: Выделить всё
[ApiConventionType(typeof(MyAppConvention))]
[Route("test")]
public class TestController : ControllerBase
{
[ProducesResponseType(typeof(TestDto), StatusCodes.Status200Ok, MediaTypeNames.Application.Json)]
[HttpGet]
public IActionResult GetData()
{
if (condition)
return NotFound();
else
return Ok(new TestDto());
}
}
Ссылки
[*]https: //learn.microsoft.com/en-us/aspnet/core/web-api/advanced/conventions?view=aspnetcore-8.0
Пользовательские соглашения веб-API не работают с ODataController< /li>
Подробнее здесь: https://stackoverflow.com/questions/790 ... onsetype-a