2

我希望请求的 URL 是/AmazingRequest(或什至/AmazingService)而不是/json/reply/AmazingRequest.

我已经尝试过该Route属性,但它似乎没有效果。在 ServiceStack 中是否有可能,或者我是否必须求助于 URL 重写?

这是我尝试过的。它编译,但该属性没有效果。

public class MyServiceEndpoints : IService
{
    [Route("/AmazingService")]
    public AmazingResponse Post(AmazingRequest request)
    {
        return new Amazing(request).GetResponse();
    }
}

我意识到我需要告诉 ServiceStack 这是一个 json 请求,但是我可以将AcceptandContent-Type标头甚至 a?format=json添加到查询字符串中。

PS 我使用的是 BSD 版本的 ServiceStack

4

1 回答 1

1

在 ServiceStack 中,路由是在请求 DTO 上定义的,因为它是您的服务合同的一部分,例如:

[Route("/AmazingService")]
public class AmazingRequest { ... }

您使用的预定义路由是因为 ServiceStack 认为没有为您的服务定义任何自定义路由,而只是使用默认路由。

声明路由的另一种方法是在 AppHost 中使用Fluent Registration API ,例如:

public void Configure(Container container)
{
    Routes
      .Add<AmazingRequest>("/AmazingService");
}

但是在请求 DTO 上定义它们的好处是您的 .NET 服务客户端也可以访问它们,并且能够使用您的自定义路由而不是回退到预定义的路由。

于 2016-06-02T22:49:41.270 回答