Я создаю веб-сайт, который будет иметь более 50 оптических расчетов. Мне нужно, чтобы они были доступны через API, но мне также нужно, чтобы они были доступны в представлении. У меня есть .dll, которая делает вычисления, к которым обращаются в контроллере, помеченном именем «тип» вычислений. В данном случае это PrismController, который обрабатывает все вычисления, связанные с Prism. Я только показываю расчет апикального угла.
Является ли способ, которым я делаю это, оптимальным в отношении лучших практик? Прежде чем я создам 50 из них, я хотел бы знать, иду ли я по неверному пути.
Похоже, много кода.
Код в представлении - это то, что я использую для одного вычисления.
[Produces("application/json")]
[Route("api/v1/[controller]")] <----------api route at controller level
public class PrismController : Controller
{
[HttpGet("ApicalAngle/{DegreesDeviation}/{Index}")]
public ActionResult<PrismModel> ApicalAngle(PrismModel prism)
{
if (!ModelState.IsValid)
return BadRequest(ModelState);
prism.Result = Prism.ApicalAngle(prism.DegreesDeviation, prism.Index);
return prism;
}
[Route("/[Controller]/[Action]")] <----view route overriding api route
[HttpGet("ApicalAngle")]
public IActionResult ApicalAngleCalc()
{
return View();
}
[HttpPost("ApicalAngle")]<------- Post that performs calculation
public ActionResult<PrismModel> ApicalAngleCalc(PrismModel prism)
{
if (!ModelState.IsValid)
return BadRequest(ModelState);
var dev = prism.DegreesDeviation;
prism.Result = Prism.ApicalAngle(prism.DegreesDeviation, prism.Index);
return View(prism);
}