Web API和同一控制器中的视图

时间:2019-01-16 03:33:55

标签: asp.net-web-api asp.net-core-mvc

我正在创建一个将进行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);
    }

0 个答案:

没有答案