根据multiple文档sources,可以将路由定义为DTO上的属性。我有以下DTO(最后一个是在不同的文件中):
[Route("/hdos", "GET")]
public class GetHdos
{
public bool IncludeAdminUsers { get; set; }
}
[Route("/hdos/{Id}", "GET")]
public class GetHdo
{
public Guid Id { get; set; }
}
[Route("/hdos/{HdoId}/facilities", "GET")]
public class GetHdoFacilities
{
public Guid HdoId { get; set; }
}
由以下服务支持(最后一个服务位于不同的文件中):
public object Get(GetHdos request)
{
return _hdos.GetAll(request.IncludeAdminUsers);
}
public object Get(GetHdo request)
{
return _hdos.GetById(request.Id)
}
public object Get(GetHdoFacilities request)
{
return _hdos.GetFacilities(request.HdoId);
}
致电任何
/hdos
/hdos/a82b955195e34bfda2fdde7da68f8992
/hdos/a82b955195e34bfda2fdde7da68f8992/facilities
返回Method not supported
。但是,如果我将它们称为类名,则会触发路由。有什么我想念的吗?我是否需要以AppHost
某种方式激活这些路线?
答案 0 :(得分:2)
看起来ServiceStack以不同的方式为REST和HTTP类型映射您的路由。我在问题中没有提及我正在呼叫Json/syncreply/hdos
因为我认为Json/syncreply
是每个电话的一部分。我错了。如果这样做,它将查找DTO类名称作为路径。
要将在DTO上声明的路线用作属性,您只需拨打路线,不要使用json/syncreply
。反过来没有在文档中直接说明,但我仍然感到困惑。