我正在实现一个 RESTful 服务,该服务将由 Dojo 框架的 RestStore 使用,这将允许将服务绑定(bind)到各种小部件,例如交互式网格或预先输入的 ajax 选择。
RestStore
希望发送和接收 HTTP Range
和 Content-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/