如何在.NET Core Web API中路由控制器类?

时间:2018-10-06 17:33:28

标签: asp.net .net asp.net-core .net-core asp.net-core-webapi

我正在尝试使用.net内核构建简单的Web api,以进行基本的计算,例如加法,减法,乘法和除法。我用多个GET方法创建了控制器类。控制器类代码,如下所示

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;

// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860

namespace WebApplication2.Controllers
{
    [Route("api/[controller]")]
    public class OwnerController : Controller
    {

        [HttpGet]
        public int Add(int value1, int value2)
        {
            return value1 + value2;
        }

        [HttpGet]
        public int Substract(int value1, int value2)
        {
            return value1 - value2;
        }

        [HttpGet]
        public int Multiply(int value1, int value2)
        {
            return value1 * value2;
        }

        [HttpGet]
        public int Divide(int value1, int value2)
        {
            return value1 / value2;
        }

        [HttpGet]
        public string Get()
        {
            return "default";
        }

    }
}

当调用相应的API时,如何路由此控制器执行特定操作?

2 个答案:

答案 0 :(得分:1)

您的路线是在您的控制器级别指定的

[Route("api/[controller]")]

此模板仅提供到控制器的路由,希望框架通过Http动词/方法找出其余路由:

GET api/owner
POST api/owner
PUT api/owner

等等。由于您正在重用GET方法,因此您可能希望将操作名称添加到路由中。您可以通过两种方式完成此操作:

  1. 将操作名称添加为控制器上路由模板的一部分
  2. 通过动词指定动作名称,将其添加到各个路线

示例1:

[Route("api/[controller]/[action]")]

示例2:

[Route("api/[controller]")]
public class OwnerController : Controller
{
    [HttpGet("Add")]
    public int Add(int value1, int value2)
    {
        return value1 + value2;
    }
    [HttpGet("Subtract")]
    public int Substract(int value1, int value2)
    {
        return value1 - value2;
    }
    ...
}

这些更改中的任何一个之后,您都可以拨打类似电话

GET api/owner/add
GET api/owner/subtract

等等。

答案 1 :(得分:1)

您可以使用以下内容

    [HttpGet("addition")]
    public int Add(int value1, int value2)
    {
        return value1 + value2;
    }

然后添加路线是GET api / owner / addition