web-dev-qa-db-ja.com

NancyFxでURLパラメーターを取得する

NancyFxを使用してWeb APIを構築していますが、URLからパラメーターを取得する際にいくつかの問題に直面しています。

APIにリクエストを送信する必要があります.../consumptions/hourly?from=1402012800000&tags=%171,1342%5D&to=1402099199000そして、パラメータの値をキャッチします:粒度、from、tags、to。いくつかのアプローチを試しましたが、どれも機能しませんでした。たとえば、

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

これどうやってするの?

ルイス・サントス

37
user3734857

URLから取得しようとしているものが2つあります。 1つはパスhourlyの一部であり、もう1つはクエリ文字列のパラメーター、つまりfromおよびtoの値です。

ハンドラーへのパラメーターを介してパスの一部(例ではx)に到達できます。

Requestでアクセス可能なNancyModuleを介してクエリ文字列にアクセスできます。

これをコードに入れるには:

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

変数granularityfrom、およびtoはすべてdynamicであり、必要なタイプに変換する必要がある場合があります。

77

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>();
}
13
feltocraig

次を使用できます。

var from = Request.Query.from;
0
mohoma