Я строю веб-API для получения баланса клиента из Db. Он работает хорошо, и я могу получить данные. Но проблема в части параметров.

Например, В веб-сервисе ASP.NET, когда мы запрашиваем сервис, он дает нам страницу, на которой в соответствии с сервисом мы вводим параметры в текстовое поле и после

Запуская сервис мы получаем данные.

У меня запущен и работает мой webapi, и URI выглядит следующим образом --- http: // localhost / апи / счета / баланс / CS - 001

AccountsController

public class AccountsController : ApiController
{

    [HttpGet]
    [ActionName("balance")]
    public string Getbalance(string accountNumber)
    {
        var data = BusinessLayer.Api.AccountHolderApi.GetBalance(accountNumber);

        return data;
    }

}

И мой маршрут

RouteTable.Routes.MapHttpRoute("OfficeApi", "api/{controller}/{action}/{accountNumber}");

Таким образом, accountNumber здесь является параметром. Теперь один из моих друзей-разработчиков мобильных приложений собирается использовать этот API, чтобы я предложил переместить номер счета в параметре, а не в url. Как и в моем случае, мы добавляем параметр в URL для получения баланса. из базы данных. Я хочу знать, как переместить номер счета (параметр) из URL-адреса в параметр asp.net webapi.

Я новичок в webapi. Нужна помощь. Спасибо.

0
OLDMONK 27 Май 2017 в 20:10

2 ответа

Лучший ответ

Все, что вам нужно сделать, это изменить маршрут, так как номер счета уже является параметром в функции:

RouteTable.Routes.MapHttpRoute("OfficeApi", "api/{controller}/{action}");

Тогда вы сможете:

http: // localhost / api / accounts / balance? accountNumber = cs-001

2
Avitus 27 Май 2017 в 17:15

@ Авитус ответ правильный. Вот какой-нибудь белабор на тот случай, если вы заинтересованы.

Если кто-то запрашивает этот URL-адрес: http: // localhost / api / accounts / balance? AccountNumber = CS - 001

ASP.NET маршрутизация определит контроллер и действия на основе вашей конфигурации маршрутизации. Как только контроллер и действие были обнаружены, он попытается связать параметры в действии следующим образом:

По умолчанию веб-API использует следующие правила для привязки параметров:

  1. Если параметр имеет «простой» тип, Web API пытается получить значение из URI. К простым типам относятся типы примитивов .NET (int, bool, double и т. Д.), А также TimeSpan, DateTime, Guid, decimal и string, а также любой тип с преобразователем типов, который может преобразовывать строки. (Подробнее о преобразователях типов позже.)
  2. Для сложных типов Web API пытается прочитать значение из тела сообщения, используя средство форматирования медиа-типа.

Вот полная статья.

1
CodingYoshi 27 Май 2017 в 17:27