Как маршрутизировать класс контроллера в .net core web api? - PullRequest
0 голосов
/ 06 октября 2018

Я пытаюсь создать простой веб-API с использованием ядра .net для выполнения базовых вычислений, таких как сложение, вычитание, умножение и деление.Я создал класс контроллера с несколькими методами 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 голосов
/ 06 октября 2018

Вы можете использовать следующее

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

, тогда маршрут для добавления - GET api / owner / extension

0 голосов
/ 06 октября 2018

Ваши маршруты указываются на уровне контроллера с помощью

[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

и пр.

...