web-dev-qa-db-fra.com

Obtenir les paramètres d'URL dans NancyFx

J'utilise NancyFx pour créer une API Web, mais je rencontre des problèmes pour obtenir les paramètres à partir de l'URL.

Je dois envoyer à l’API la requête .../consumptions/hourly?from=1402012800000&tags=%171,1342%5D&to=1402099199000 et saisir la valeur des paramètres: granularité, from, tags et to. J'ai essayé plusieurs approches et aucune n'a fonctionné. J'ai essayé, par exemple,

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

Comment puis-je faire ceci?

Luis Santos

37
user3734857

Il y a 2 choses que vous essayez d'obtenir de l'URL. L'un fait partie du chemin hourly - et l'autre correspond aux paramètres de la chaîne de requête - à savoir les valeurs pour from et to

Vous pouvez accéder à la partie du chemin d'accès via le paramètre du gestionnaire - la x dans votre exemple. 

Vous pouvez accéder à la chaîne de requête via la variable Request accessible sur la variable NancyModule.

Pour mettre ceci en code:

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

Les variables granularity. from et to sont tous dynamic et vous devrez peut-être les convertir au type de votre choix.

73
Christian Horsdal

Vous pouvez laisser la liaison de modèle de NancyFx s'occuper de la chaîne de requête url.

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

/ consommations/horaire? de = 1402012800000 & à = 1402099199000

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

Vous pouvez simplement utiliser:

var from = Request.Query.from;
0
mohoma