I'm creating a rest webservice using the c# framework 'servicestack' (http://www.servicestack.net/) and I'm having issues trying to figure out how to support more complex rest hierarchies
And I'm configuring various routes and it works perfectly
Routes
.Add<MerchantDto>("/merchants")
.Add<MerchantDto>("/merchants/{id}")
.Add<MerchantDto>("/merchantGroups/{merchantGroupId}/merchants")
.Add<MerchantDto>("/merchantGroups/{merchantGroupId}/merchants/{id}")
.Add<StoreDto>("/stores")
.Add<StoreDto>("/stores/{id}")
.Add<StoreDto>("/merchants/{merchantId}/stores")
.Add<StoreDto>("/merchants/{merchantId}/stores/{id}");
This all works fine. This problem is doing this....
.Add<StoreDto>("/merchantGroups/{merchantGroupId}/merchants/{merchantId}/stores/{id}
The problem here is that the StoreDto object only contains a MerchantId, it does not contain a MerchantGroupId so this wouldn't work.
One solution would be to add the MerchantGroupId to the DTO but the problem is that I am sharing the DTO with some other WCF services and it might be confusing if I were have a MerchantGroupId property in the StoreDto which is never populated during a retrieval operation.
Plus I see this as cropping up at different places so I was hoping there was a better way to do it.
Any suggestions?