Это то, для чего используются коды состояния HTTP.В вашем успешном случае, 200
возвращается, чтобы указать, что запрос был успешным.Для недействительного ModelState
обычно возвращают 400
(что указывает на неверный запрос).
Чтобы добиться этого в ASP.NET Core, вы можете воспользоваться ActionResult<T>
.Вот полный пример того, как это повлияет на NominalPower
:
[HttpGet("Nominal/{powerFront}/{powerBack}")]
public ActionResult<double> NominalPower(PowerModel powerModel)
{
if (!ModelState.IsValid)
return BadRequest(ModelState);
powerModel.Result = Power.NominalPower(powerModel.PowerFront, powerModel.PowerBack);
return powerModel.Result;
}
В приведенном выше примере мы передаем ModelState
в метод BadRequest
, который будет сериализован как JSON, чтобы показать списокошибки, возникшие при проверке модели.Если вы предпочитаете не включать это, вы можете просто опустить аргумент ModelState
при вызове BadRequest
.
В качестве альтернативы, вы можете просто украсить свой класс PowerController
с помощью ApiController
атрибут, который будет вызывать любые запросы, которые приводят к недопустимому ModelState
- , автоматически возвращают 400
с сериализованными ошибками JSON.Вот пример такого подхода:
[Produces("application/json")]
[Route("api/Power")]
[ApiController]
public class PowerController : Controller
{
[HttpGet("Nominal/{powerFront}/{powerBack}")]
public double NominalPower(PowerModel powerModel)
{
powerModel.Result = Power.NominalPower(powerModel.PowerFront, powerModel.PowerBack);
return powerModel.Result;
}
}
В этой версии нет необходимости проверять ModelState
, поскольку это уже проверено благодаря наличию атрибута ApiController
.Вы можете даже настроить автоматический ответ, который возвращается, если это необходимо, как я подробно описал в другом ответе здесь .