RESTful Web サービスに Openrasta を使用していますが、メソッドのパラメーターと 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"
}
ここで、私の質問は次のとおりです。2 つのパラメーターを使用して PUT メソッドを定義することは正しいですか? それが正しい方法であれば、PUT メソッドの userId パラメータには、User エンティティ プロパティの UserId と同じ値が含まれます。
そして、PUT メソッドでは、これら 2 つの値が同じかどうかを確認する必要があり、同じでない場合は、URI が要求で提供されたエンティティと一致しないことを示す BadRequest を返します。リクエストの処理中に処理できず、PUT メソッドに User エンティティのみをパラメータとして持たせることができないのはなぜですか? 何か大幅に欠けているのでしょうか、それともこの設計についての私の理解は完全に間違っていますか? ご意見やご感想をお願いします。