我在 .net 服务中使用 OpenRasta 框架,并且在处理程序中有两种方法如下
public OperationResult Get(int Number)
{
// Do some operation and get an entity
return new OperationResult.OK(Single-MyResource);
}
public OperationResult GetQ()
{
// Do some operation and get an entity
return new OperationResult.OK(List-Of-MyResource);
}
我的配置如下所示
ResourceSpace.Has.ResourcesOfType<MyResource>()
.AtUri("/MyResource/{Id}")
.And.AtUri("/MyResource")
.HandledBy<MyResourceHandler>()
.AsJsonDataContract()
.And.AsXmlDataContract()
ResourceSpace.Has.ResourcesOfType<IList<MyResource>>()
.AtUri("/MyResources")
.HandledBy<MyResourceHandler>()
.AsJsonDataContract()
.And.AsXmlDataContract();
HttpMethod: GET AcceptHeader: "application/json" URI: http://testDomain.com/MyResource/
上面的请求给了我 MyResource 的列表,与我为下面的请求得到的相同
HttpMethod: GET AcceptHeader: "application/json" URI: http://testDomain.com/MyResources/
将配置更改为
ResourceSpace.Has.ResourcesOfType<MyResource>()
.AtUri("/MyResource/{Id}")
.And.AtUri("/MyResource").Named("MyResource")
.HandledBy<MyResourceHandler>()
.AsJsonDataContract()
.And.AsXmlDataContract()
并在处理程序中进行适当的更改,即
[HttpOperation(HttpMethod.GET, ForUriName = "MyResource")]
OpenRasta 返回 415 http 状态码。
上面又不一致了。
对于与上述类似配置的我的其他资源,OpenRasta 抛出 403 http 状态代码