user3734857
user3734857

Reputation: 421

Get url parameters in NancyFx

I am using NancyFx to build a web API, but I am facing some problems when getting parameters from the URL.

I need to send, to the API, the request .../consumptions/hourly?from=1402012800000&tags=%171,1342%5D&to=1402099199000 and catch the value of the parameters: granularity, from, tags and to. I tried several approches and none worked. I tried, for example,

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

How can I do this?

Luis Santos

Upvotes: 41

Views: 29929

Answers (3)

mohoma
mohoma

Reputation: 73

You can simply use:

var from = Request.Query.from;

Upvotes: 1

feltocraig
feltocraig

Reputation: 739

You can let NancyFx's model binding take care of the url query string.

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

Upvotes: 17

Christian Horsdal
Christian Horsdal

Reputation: 4932

There are 2 things that you are trying to get from the URL. One is a part of the path hourly - and the other is the parameters in the query string - namely the values for from and to.

You can get to the part of the path through the parameter to the handler - the x in your example.

You can get to the query string through the Request which is accessible on the NancyModule.

To put this in code:

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

The variables granularity. from, and to are all dynamic, and you may need to convert them to whatever type you want.

Upvotes: 79

Related Questions