2012-12-16 23 views
5

yılında sadece DİNLENME ve ServiceStack öğrenmeye başlamak ve sadece oldukça anlayamıyorum şey hakkında Route var. Örneğin, GitHub öğreticisinden çok temel olan HelloWorld örneğini alıp, User nesnesinin koleksiyonunu iade etmek için yeniden yazalım. Buradaki örnek şu: burada her şey doğru ve problemsiz çalışıyor. Age parametresi tarafından seçilen tek User dönecektir bu url /Hello/{name}/AddressDİNLENME Yönlendirme ServiceStack

Aslında bu çağrı (GET): Ama şimdi gibi başka yönlendirme url eklemek istiyorum. Bunu nasıl yapabilirim? Başka bir Service mu ekmeli? Ve url olacaksa:

/Hello/{name}/{age}/Address

Ben bir şey anlamıyorum görünüyor .....

cevap

3

Routing in ServiceStack ilgili ayrıntılar için bu erken yanıta bakın. ServiceStack's New API'daki Akıllı Yönlendirme bölümü, daha fazla seçenek ve farklı önceliği açıklar.

Örneğinizde birkaç sorun var. İlk ServiceStack metin serializers sadece kamu özellikleri böylece örneğin, yerine alanların kamu özelliklerini kullanmak için kullanıcı Modeli değiştirmeniz gerekir desteklemektedir:

public User 
{ 
    public string Name { get; set; } 
    public string Address { get; set; } 
    public int Age { get; set; } 
} 

İleri, Interfaces on DTOs are a bad idea bunun için iyi bir neden yoktur olarak. Hala destekleniyorlar ama istenmeyen sonuçlarla sonuçlanabilirsin. daha yarar sağlayan bir List<T> gibi somut bir koleksiyon, örneğin kullanın: İstek Yolu eşleştirme yaparken onlar harf duyarsız Ayrıca yolları sizin DTO tam mülkiyet isimleri aynı olmalıdır

public class HelloResponse 
{ 
    public List<User> Results { get; set; } 
} 

, ancak tam bir özellik adıyla eşleştirmeleri gerekir, örneğin:

/Hello/{Name}/{Age}/Address 
+0

Asnswer için teşekkürler, ancak 'Route.Add' işlevini yanlış anladım. Yanlış varsa lütfen beni düzeltin! 'Route.Add' şeması şöyledir: Route.Add ("/ /{DTO-field-name}/{DTO-field-name} "). İstemci tarafında, DTO olarak ayarlanmış alanlar ve DTO türü ve gerçek HTML fiili (POST/GET) gibi parametreler içeren fonksiyonda sunucu üzerinde serileştirilmiş alanlar ile tam DTO nesnesine serileştirildi mi? Bu genellikle doğru mu? – Jasper

+0

'Route.Add ()' ve '[Route]' özniteliği tamamen aynıdır. yani her ikisi de bir DTO isteğine başvurur, ancak rotanın kendisi eşleştirmek istediğiniz herhangi bir metin edebi olabilir. Rotadaki değişkenler DTO İsteklerini iletmek zorundadır. – mythz