繁体   English   中英

带参数的ASP.NET Webapi

[英]ASP.NET Webapi with parameter

我正在构建一个Webapi来从Db获取客户的余额。它很好地工作并且可以检索数据。但是问题出在参数部分。

例如。 在ASP.NET Web服务中,当我们请求服务时,它会提供一个页面,根据服务,我们可以在文本框中输入参数,然后

启动服务,我们获取数据。

我已启动并运行我的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中以检索余额我想知道如何将帐号(param)从url移动到asp.net webapi中的参数。

我是webapi的新手,需要帮助。谢谢。

您只需要做的就是更改路由,因为帐号已经是该功能上的参数:

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

然后,您将可以执行以下操作:

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

@Avitus的答案是正确的。 如果您有兴趣,这里有些be惜。

如果有人请求此URL: http:// localhost / api / accounts / balance?accountNumber = cs-001

ASP.NET路由将根据您的路由配置确定控制器和操作。 一旦发现控制器和动作,它将尝试像这样绑定动作中的参数:

默认情况下,Web API使用以下规则来绑定参数:

  1. 如果参数是“简单”类型,则Web API会尝试从URI中获取值。 简单类型包括.NET基本类型(int,bool,double等),以及TimeSpan,DateTime,Guid,十进制和字符串,以及带有可从字符串转换的类型转换器的任何类型。 (稍后会更多有关类型转换器的信息。)
  2. 对于复杂类型,Web API尝试使用媒体类型格式化程序从消息正文中读取值。

这是全文

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM