2016-10-05 4 views
0

ASP.NET WebAPI例では、HTTP PUTメソッドを実装した例でレコードのキーがモデル更新に別のパラメータとして渡されています。例:なぜWebAPI PUTパラメータにレコードキーを含めるのですか

モデルのキー値を定義して呼び出しを簡略化するのではなく、このアプローチが使用される理由について私は興味がありますか?私は、ビューの考えることができるほとんどのケースで

public HttpResponseMessage Put(UserEditViewModel model) 
{ 
    // Look up existing record 
    User user = await db.Users.FindAsync(model.UserId); 
    // Apply changes 
    // user.Name = model.Name; 
    // Commit updated record to data store 
    db.SaveChanges(); 
} 

はとにかくUserIdが必要になりますので、私はなぜそれが見る者の視点からモデルを複雑だろうか/表示されていないが、私はそこにある必要があります確信しています正当な理由。

答えて

1

私たちが話しているRESTfulnessのレベルにもよりますが、それは利便性に関するものと思われます。 Richardson's Maturity Model level 3を見ると、ワークフローはこのようなものが考えられます。クライアントはユーザーに移動したら、それは見ることができるので、サーバは、一意のリソース識別子でそれを埋める、リンクのURIを構築しています

GET /api/users/{id}

このような何か:

"api:user-edit": { 
    "href": "http://apiname:port/api/user/{id}" 
}, 

だから、クライアントがちょうど

PUT /api/users/{id}

を行う必要があります

と適切なペイロード(理論的には完全なリソースである必要がありますが、サーバはほんの数フィールドだけを見ることを選択します(ほとんどPATCHのようになります)。

+0

アレクサンドルに感謝します。 – Neilski

関連する問題