2014-06-12 14 views
31

Ich benutze NancyFx, um eine Web-API zu erstellen, aber ich habe einige Probleme beim Abrufen von Parametern aus der URL.Get URL-Parameter in NancyFx

Ich muss an die API senden, die Anfrage .../consumptions/hourly?from=1402012800000&tags=%171,1342%5D&to=1402099199000 und fangen Sie den Wert der Parameter: Granularität, von, Tags und zu. Ich habe mehrere Ansätze ausprobiert und keiner hat funktioniert. Ich habe versucht, zum Beispiel

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

Wie kann ich das tun?

Luis Santos

Antwort

66

Es gibt zwei Dinge, die Sie aus der URL zu bekommen versuchen. Einer ist ein Teil des Pfades hourly - und der andere ist der Parameter in der Abfragezeichenfolge - nämlich die Werte für from und to.

Sie können den Teil des Pfades über den Parameter zum Handler erreichen - die x in Ihrem Beispiel.

Sie können die Abfragezeichenfolge über die Request erreichen, die unter NancyModule zugänglich ist.

Um dies in Code zu setzen:

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

Die Variablen granularity. from und to sind alle dynamic, und Sie müssen sie möglicherweise in den von Ihnen gewünschten Typ konvertieren.

+3

Dies sollte als die richtige Antwort markiert werden. –

9

Sie können die Modellbindung von NancyFx auf die URL-Abfragezeichenfolge anwenden lassen.

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

/Verbräuche/stündlich? From = 1402012800000 & zu = 1402099199000

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

Dies kann eine nette Lösung sein, wenn Ihre Eingabedaten viel zu analysieren sind, aber normalerweise unnötig sind – user3791372

Verwandte Themen