2017-05-27 95 views
0

我正在構建一個webapi以便從Db中獲得客戶的平衡。它運行良好,我可以檢索數據。但問題出在參數部分。ASP.NET Webapi參數

例如,在ASP.NET webservice中,當我們請求服務時,它給了我們一個頁面,根據服務我們可以在文本框中輸入參數,並且在啓動服務時我們獲得數據。

我有我的WebAPI和運行,該URI是這樣的--- http://localhost/api/accounts/balance/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中追加參數以從db中檢索餘額。我想知道如何移動帳號(參數)從網址到asp.net webapi中的參數。

我是新來的webapi.Help needed.Thank你。

回答

2

所有你需要做的是改變路線,因爲帳號已經在函數中的參數:

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

然後你就可以做到:

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

+0

Wow.thank你先生。我有一個小question.Now,說給我的API誰願意使用it..should格式是順序的一個 - HTTP://域名/ API /賬戶/平衡/ {PARAM}。 – OLDMONK

1

@ Avitus的回答是正確的。如果你有興趣,這裏有一些貝樂。

如果有人請求這個網址:http://localhost/api/accounts/balance?accountNumber=cs-001

ASP.NET路由會找出根據你的路由配置的控制器和動作。一旦控制器和行動已經發現,那麼它會嘗試將參數綁定在這樣的操作:

默認的Web API使用下列規則綁定參數:

  1. 如果參數是一個「簡單」類型,Web API嘗試從URI獲取值。簡單類型包括.NET基本類型(int,BOOL,雙,等等),再加上時間跨度,日期時間,GUID小數和字符串,以及任何類型的類型轉換器,可以從一個字符串轉換。 (稍後關於類型轉換器的更多信息。)
  2. 對於複雜類型,Web API嘗試使用媒體類型格式化程序從消息正文中讀取值。

這裏是full article

+0

謝謝你的belabor部分先生。:) – OLDMONK