我正在构建一个webapi来从Db获取客户的平衡。它运行良好,我可以检索数据。但问题出在参数部分。
例如。在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.Like在我的情况下我们将参数附加到url中从db中检索余额。我想知道如何将帐号(param)从url webapi中的url移动到参数。
我是webapi的新手。需要帮助。谢谢。
答案 0 :(得分:2)
您需要做的就是更改路线,因为帐号已经是该功能的参数:
RouteTable.Routes.MapHttpRoute("OfficeApi", "api/{controller}/{action}");
然后你就能做到:
答案 1 :(得分:1)
@Avitus的回答是正确的。如果您有兴趣,这里有一些belabor。
如果有人请求此网址:http://localhost/api/accounts/balance?accountNumber=cs-001
ASP.NET路由将根据您的路由配置找出控制器和操作。一旦发现了控制器和动作,它就会尝试绑定动作中的参数,如下所示:
默认情况下,Web API使用以下规则绑定参数:
- 如果参数是"简单"类型,Web API尝试从URI中获取值。简单类型包括.NET基元类型(int,bool,double等),以及TimeSpan,DateTime,Guid,decimal和string,以及具有可以从字符串转换的类型转换器的任何类型。 (稍后将详细介绍类型转换器。)
- 对于复杂类型,Web API尝试使用媒体类型格式化程序从邮件正文中读取值。
醇>
这是full article。