Servicestack路由问题

时间:2014-11-21 07:33:02

标签: servicestack

您好我是servicestack的新手 有路由的问题 我有一条路线

[Route("/Person/{ID}", "GET")]
public class GetPersonByID : IReturn<PersonResponse>
{
    public decimal ObjectId { get; set; }
}
[Route("/Organization/{ID}/Person", "GET")]
public class GetPersonByOrganizationId : List<PersonResponse>
{
    public decimal ObjectId { get; set; }
}

但是我正在尝试/Organization/281478302400588/Persons,我收到一个错误说法 Unable to bind request

  

Stacktrace:在ServiceStack.Host.RestHandler.CreateRequest(IRequest httpReq,   IRestPath restPath)at   ServiceStack.Host.RestHandler.ProcessRequestAsync(IRequest httpReq,   IResponse httpRes,String operationName)

1 个答案:

答案 0 :(得分:1)

  • 您需要确保路径中的段名称与DTO中的属性匹配。因此{ID}应为{ObjectId}

  • 在第二个请求中,您应该使用IReturn<List<PersonResponse>>而不是在请求中继承List<PersonResponse>

[Route("/Person/{ObjectId}", "GET")]
public class GetPersonByID : IReturn<PersonResponse>
{
    public decimal ObjectId { get; set; }
}

[Route("/Organization/{ObjectId}/Person", "GET")]
public class GetPersonByOrganizationId : IReturn<List<PersonResponse>>
{
    public decimal ObjectId { get; set; }
}
  • 您还注意到您正在尝试/Organization/281478302400588/Persons您在请求中使用了Persons,但路由为Person,因此请相应地更改请求或路由。 (可能最好的路线。即[Route("/Organization/{ObjectId}/Persons", "GET")]

然后在您的服务中确保您的设置类似于:

public class PersonService : Service
{
    public PersonResponse Get(GetPersonByID request)
    {
        // return new PersonResponse();
    }

    public List<PersonResponse> Get(GetPersonByOrganizationId request)
    {
        // return new List<PersonResponse>();
    }
}

我希望有所帮助。