Как структурировать код Web API так, чтобы ссылка поддерживала api / values ​​/ {id} / name - PullRequest
0 голосов
/ 06 июля 2018

Я новичок в изучении кода веб-API на C #, и мне было интересно, как создать следующую ссылку, которая получает имя для определенного идентификатора значения.

Приведенный ниже код не работает так, как я хочу, с "/ name" позади него.

// GET api/values/{id}/name
public string Get(int id)
{
    return getNameValue(id);
}

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Вы можете напрямую использовать атрибут маршрутизации без определения маршрута в конфигурации маршрута. Добавьте приведенный ниже код, который разрешает маршрутизацию атрибутов (эта функция применима только к Web API 2). Атрибут маршрутизации Web API 2

    public static void Register(HttpConfiguration config)
{
    // Attribute routing.
    config.MapHttpAttributeRoutes(); //**enabling attribute routing here.**

    // Convention-based routing.
    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );
}

тогда вы можете использовать:

[Route("{id:int}/name")]
public string Get(int id)
{
    return getNameValue(id);
}
0 голосов
/ 06 июля 2018

Вы можете использовать пользовательский маршрут, например:

[Route("{id:int}/name")]
public string Get(int id)
{
    return getNameValue(id);
}

Обновление:

В WebApiConfig измените метод регистрации, чтобы иметь собственные маршруты

public static void Register(HttpConfiguration config)
    {

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{action}/{id:int}/name",
            defaults: new { id = RouteParameter.Optional }
        );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...