Я использую Openrasta для своего веб-сервиса RESTful, и у меня есть небольшое сомнение относительно параметров метода и 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 с двумя параметрами? Если это правильный способ, то параметр userId в методе PUT будет содержать то же значение, что и свойство объекта User UserId.
И в методе PUT мне нужно проверить, являются ли эти два значения одинаковыми или нет, и если они не одинаковы, я возвращаю BadRequest, заявляя, что URI не совпадает с сущностью, предоставленной в запросе. Почему мы должны делать это явно, почему бы не обработать его при обработке запроса, и чтобы метод PUT принимал в качестве параметра только сущность пользователя? Я что-то упускаю радикально или мое понимание этого дизайна совершенно неверно? Любые мысли или мнения, пожалуйста?