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
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.
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>();
}
You can simply use:
var from = Request.Query.from;