服务堆栈路由问题



嗨,我是服务堆栈的新手有问题,与路由我有一条路线

[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>();
    }
}

我希望这有所帮助。

最新更新