Ich fange gerade an, REST und ServiceStack zu lernen, und es gibt etwas über Route
, die ich gerade nicht ganz verstehen kann. Zum Beispiel, wenn wir das sehr einfache HelloWorld-Beispiel aus dem GitHub-Tutorial nehmen und es erneut schreiben, um die Sammlung von User
-Objekten zurückzugeben. Hier ist ein Beispiel:REST-Routing in ServiceStack
public User
{
public string Name;
public string Address;
public int Age;
}
// Hello - request object without [Route] attribute
public class Hello
{
public string Name { get; set; }
}
public class HelloResponse
{
public IEnumerable<User> Result {get;set;}
}
public class HelloService : Service
{
public object Any(Hello request)
{
return new HelloResponse { // Collection of User object };
}
}
jetzt funktioniert alles richtig und keine Probleme hier. Aber jetzt will ich wie eine andere Routing-URL hinzuzufügen: /Hello/{name}/Address
Eigentlich dieser Aufruf (GET) zu dieser URL wird eine einzelnes User
von Age
Parametern ausgewählt zurückzukehren. Wie kann ich das machen? Sollte ich ein weiteres Service
hinzufügen? Und wenn die URL wird:
/Hello/{name}/{age}/Address
Es scheint, dass ich etwas nicht verstehen .....
Danke für die Antwort, aber es scheint, dass ich die 'Route.Add' Funktion falsch verstehe. Bitte korrigieren Sie mich, wenn ich falsch liege! Das Schema für 'Route.Add' ist: Route.Add ("//{DTO-Feldname}/{DTO-Feldname} "). Auf der Client-Seite serialisiert es zu einem vollständigen DTO-Objekt mit Feldern, die in URL gesetzt und auf Server in Funktion deserialisiert sind, die Parameter als DTO-Typ und tatsächliches HTML-Verb (POST/GET) hat? Ist das generell richtig? –
Jasper
'Route.Add()' und '[Route]' Attribut sind genau das Gleiche. d. h. beide gelten für ein Anforderungs-DTO, aber die Route selbst kann ein beliebiges Textliteral sein, das Sie abgleichen möchten. Die Variablen in der Route müssen den Anforderungs-DTO-Feldern zugeordnet werden. –
mythz