1

根据多个文档来源,可以将路由定义为 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某种方式激活这些路线?

4

1 回答 1

2

看起来 ServiceStack 为 REST 和 HTTP 类型映射了不同的路由。我没有在问题中提到我正在打电话,Json/syncreply/hdos因为我认为这Json/syncreply是每个电话的一部分。我错了。如果您这样做,它将查找 DTO 类名称作为路由。

要将 DTO 上声明的 Route 用作属性,您只需调用该路由,而无需使用json/syncreply. 文档中没有直接说明相反的情况,但我仍然感到困惑。

于 2013-05-03T16:40:59.903 回答