【问题标题】:Get url parameters in NancyFx在 NancyFx 中获取 url 参数
【发布时间】:2014-08-03 01:26:25
【问题描述】:

我正在使用 NancyFx 构建 Web API,但在从 URL 获取参数时遇到了一些问题。

我需要向 API 发送请求 .../consumptions/hourly?from=1402012800000&tags=%171,1342%5D&to=1402099199000 并捕获参数的值:粒度、发件人、标签和收件人。我尝试了几种方法,但都没有奏效。例如,我尝试过,

Get["consumptions/{granularity}?from={from}&tags={tags}&to={to}"] = x =>
{
    ...
}

我该怎么做?

路易斯·桑托斯

【问题讨论】:

    标签: nancy


    【解决方案1】:

    您试图从 URL 中获取 2 项内容。一个是路径hourly 的一部分——另一个是查询字符串中的参数——即fromto 的值。

    您可以通过参数到达处理程序的路径部分 - 在您的示例中为x

    您可以通过Request 访问查询字符串,NancyModule 上可以访问。

    将其放入代码中:

    Get["consumptions/{granularity}"] = x =>
    {
        var granularity = x.granularity;
        var from = this.Request.Query["from"];
        var to = this.Request.Query["to"];
    }
    

    变量granularityfromto 都是 dynamic,你可能需要将它们转换成你想要的任何类型。

    【讨论】:

      【解决方案2】:

      您可以让 NancyFx 的模型绑定处理 url 查询字符串。

      public class RequestObject 
      {
          public string Granularity { get; set; }
          public long From { get; set; }
          public long To { get; set; }
      }
      

      /consumptions/hourly?from=1402012800000&to=1402099199000

      Get["consumptions/{granularity}"] = x =>
      {
          var request = this.Bind<RequestObject>();
      }
      

      【讨论】:

      • 如果您的输入数据需要解析很多,但通常是不必要的,这可能是一个不错的解决方案
      【解决方案3】:

      你可以简单地使用:

      var from = Request.Query.from;
      

      【讨论】:

        猜你喜欢
        • 2021-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-17
        • 2012-02-29
        • 2020-08-24
        • 2013-05-06
        • 2019-05-16
        相关资源
        最近更新 更多