servicestack - 需要 HTTP header 的 REST 服务的推荐模式?

标签 servicestack

我正在实现一个 RESTful 服务,该服务将由 Dojo 框架的 RestStore 使用,这将允许将服务绑定(bind)到各种小部件,例如交互式网格或预先输入的 ajax 选择。

RestStore 希望发送和接收 HTTP RangeContent-Range header ,以便将查询结果限制为特定的子范围。

ServiceStack(新 API)中对 HTTP header 使用react作为服务一部分的最佳实践模式是什么?通常,像 Get 这样的服务方法无法访问 HTTP header ,除非我错过了备用 API。

我目前看到的方法是实现类似的属性

 public class RangeSupporter : Attribute, IHasRequestFilter, IHasResponseFilter

它将根据请求解析 header ,并根据响应写入 header 。然后将针对此过滤器标记 DTO。

过滤器会将值(例如“First”和“Last”)传入和传出 DTO。然而,要知道 DTO 甚至具有这样的属性,它必须有一些标记接口(interface),例如

interface IHasRangeSupport {
    int First { set; get; }
    int Last { set; get; }
    int Total { set; get; }
}

这样过滤器就可以将信息传入和传出 DTO,代码类似于:

  var r = request as IHasRangeSupport;
  if (r != null) {
      /// Access the DTO attributes for the range parameters
  }

这看起来像是很多仪式,而且是一个非常尴尬的实现。

在实现 REST 服务时是否有更好的访问 HTTP header 的模式?

在我的特定用例中,不需要支持非 REST 端点(如 SOAP)。只有 HTTP 端点很重要。

最佳答案

ServiceStack(新 API)中将 HTTP header 作为服务一部分使用react的最佳实践模式是什么?

我相信您可以在服务类中获取 header ...

public class FooService : Service
{
    public object Get(Foo reqeust)
    {
       //get header
       var h1 = base.RequestContext.GetHeader("headerName");
       //get header differently
       var h2 = base.Request.Headers.Get("headerName");
    }
}

关于servicestack - 需要 HTTP header 的 REST 服务的推荐模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15113517/

相关文章:

c# - 如何在单元测试中验证序列化的 JSON 在 Python/C# 中是否正确?

servicestack - 是否有 ServiceStacks 元数据页面的 Razor 模板

c# - ServiceStack - 为具有多个键的资源定义路由

servicestack - 自定义 ServiceStack 身份验证

ajax - 使用 Ajax 访问 ServiceStack 验证的服务

c# - 仅更新客户端指定值的参数

c# - 超媒体与 Servicestack 新 API 的链接

c# - 为什么 servicestack 不能将这个 JSON 反序列化为 C#?

asp.net - ServiceStack 示例应该以什么顺序进行处理?

c# - 我可以从服务堆栈中的自定义用户 session 中访问 Web 服务吗?