【问题标题】:ASP.NET Webapi with parameter带参数的 ASP.NET Webapi
【发布时间】:2023-04-10 14:09:05
【问题描述】:

我正在构建一个 webapi 来从 Db 获取客户的余额。它运行良好,我可以检索数据。但问题出在参数部分。

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

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

我的 webapi 启动并运行,uri 看起来像这样 --- http://localhost/api/accounts/balance/cs-001

帐户控制器

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

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

【问题讨论】:

    标签: c# asp.net-web-api


    【解决方案1】:

    您所要做的就是更改路由,因为帐号已经是函数的参数:

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

    那么你就可以做到:

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

    【讨论】:

    • 哇。谢谢先生。我有一个小问题。现在,说把我的 api 给想要使用它的人..格式应该是这个顺序--domain/api/accounts/balance{参数}。
    【解决方案2】:

    @Avitus 的回答是正确的。如果您有兴趣,这里有一些麻烦。

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

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

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

    1. 如果参数是“简单”类型,Web API 会尝试从 URI 中获取值。简单类型包括 .NET 基本类型(int、bool、double 等),加上 TimeSpan、DateTime、Guid、decimal 和 string,以及任何具有可以从字符串转换的类型转换器的类型。 (稍后会详细介绍类型转换器。)
    2. 对于复杂类型,Web API 尝试使用媒体类型格式化程序从消息正文中读取值。

    这里是full article

    【讨论】:

    • 谢谢你的辛苦部分先生。:)
    猜你喜欢
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    • 2019-11-23
    • 1970-01-01
    • 2017-08-05
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多