Po prostu zaczynam uczyć się REST i ServiceStack i jest coś o Route
, którego po prostu nie mogę zrozumieć. Na przykład, jeśli weźmiemy bardzo prosty przykład HelloWorld z samouczka GitHub i ponownie go zapiszemy, aby zwrócić kolekcję obiektów User
. Oto przykład:REST Routing w 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 };
}
}
teraz wszystko działa poprawnie i bez problemów tutaj. Ale teraz chcę dodać kolejny adres URL routingu jak: /Hello/{name}/Address
Właściwie rozmowy (GET) do tej url wróci jeden User
wybrany przez Age
parametru. Jak mogę to zrobić? Czy powinienem dodać kolejny Service
? A jeśli url będą:
/Hello/{name}/{age}/Address
Wydaje mi czegoś nie rozumiesz .....
Dzięki za odpowiedź, ale wydaje mi się, że źle rozumiem funkcję 'Route.Add'. Proszę mnie poprawić, jeśli się mylę! Schemat dla 'Route.Add' to: Route.Add ("//{DTO-field-name}/{DTO-field-name} "). Po stronie klienta jest serializowany do pełnego obiektu DTO z polami ustawionymi jak w url i deserialized na serwerze w funkcji, która ma parametry typu DTO i rzeczywistego czasownika HTML (POST/GET)? Czy to na ogół jest poprawne? –
Jasper
Parametry 'Route.Add()' i '[Route]' są dokładnie takie same. tj. obaj stosują się do wniosku DTO, ale sama trasa może być dowolnym tekstem, który chcesz dopasować. Zmienne na Route muszą być odwzorowane na pola Request DTO. –
mythz