您好我是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)
答案 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>();
}
}
我希望有所帮助。