嗨,我是服务堆栈的新手有问题,与路由我有一条路线
[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: at ServiceStack.Host.RestHandler.CreateRequest(IRequest httpReq, IRestPath restPath) at ServiceStack.Host.RestHandler.ProcessRequestAsync(IRequest httpReq, IResponse httpRes, String operationName)
-
您需要确保路由中的分段名称与 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>();
}
}
我希望这有所帮助。