我将 Openrasta 用于我的 RESTful Web 服务,我对方法参数和 URI 有一点疑问
例如:我已经关注用户实体的设置。
配置:
ResourceSpace.Has.ResourcesOfType<User>()
.AtUri("/user")
.And.AtUri("/user/{userId}")
.HandledBy<UserHandler>()
.AsJsonDataContract()
.And.AsXmlDataContract();
PUT 的处理程序方法:
public OperationResult Put(long userId, User user){}
相同的 URI 将是http://localhost/User/1
请求正文将包含如下 JSON:
{
"userId":1,
"userName":"FirstName"
}
在这里,我的问题是:用两个参数定义 PUT 方法是否正确?如果这样做是正确的,那么 PUT 方法中的 userId 参数将包含与用户实体属性 UserId 相同的值。
而且,在 PUT 方法中,我需要验证这两个值是否相同,如果它们不同,我会返回 BadRequest,说明 URI 与请求中提供的实体不匹配。为什么我们应该明确地这样做,为什么在处理请求时不能处理它并且让 PUT 方法只接受用户实体作为参数?我是否严重遗漏了什么,或者我对这个设计的理解完全错误?请问有什么想法或意见吗?