8

開発者が一般的に従う特定のパターンはありますか?私のWebアプリケーションでは、これまであまり考えたことはありませんでしたが、ASP.NET MVCルーティングエンジンでは、少なくともそれを考慮に入れる必要があります。

これまでのところ、コントローラー/アクション/インデックス構造(Products / Edit / 1など)が好きでしたが、より複雑なURLに苦労しています。

たとえば、ユーザーがアカウントに持っているすべての製品を一覧表示するページがあるとします。どうしますか?頭のてっぺんから、リストページと編集ページの次の可能性を考えることができます。

  1. ユーザー/{ユーザーID}/製品/リスト、ユーザー/{ユーザーID}/製品/編集/{製品ID}
  2. ユーザー/{ユーザーID}/製品、ユーザー/{ユーザーID}/製品/{製品ID}
  3. Products?UserID = {user id}、Products / Edit / {product id}

私が見逃しているものは他にもたくさんあると思います。何かアドバイス?

4

6 に答える 6

8

私はRESTfulでユーザーフレンドリーでハッキング可能なURLが好きです。

これは何を意味するのでしょうか?ユーザーフレンドリーなURLから始めましょう。私にとって、ユーザーフレンドリーなURLは入力しやすく、覚えやすいもの/Default.aspx?action=show&userID=140であり、これらの要件のいずれも満たしていません。ただし、 `/ users / troethom´のようなURLは論理的なようです。

これが次のポイントにつながります。ハッキング可能なURLは、ユーザーが変更しても結果が表示されるURLです。URLがハッキング可能で、プロファイルのURLがハッキング可能である場合/users/troethom、ユーザー名を削除してユーザーのリストを取得しても安全です(/users)。

RESTful URLの使用は、他の提案の背後にある考え方と非常によく似ています。マシンではなくユーザーのURLを設計しているため、URLはサイトの技術的なバックエンドではなく、コンテンツに関連している必要があります。「/users」としてのURLは「/users/ list」よりも意味があり、「/ category / programming / javascript」としてのURL(カテゴリ「programming」のサブカテゴリ「javascript」を表すことは「/ category/show」よりも優れています/ 12´。

IDを省略するのは確かに難しいですが、私の世界では努力する価値があります。

W3Cの一般的なHTTP実装の問題に関するURIの理解のセクションも参照してください。URIを設計する際の一般的な落とし穴のリストがあります。もう1つの優れたリソースは、リソースフルとハッキング可能な検索URLです

于 2008-09-23T21:14:19.313 に答える
3

「フレンドリーなURLスキーム? 」という質問をご覧ください。

特に、Larry.Smithmierの回答は、ASP.NETでMVCを使用する場合の一般的なURLスキームのリストを提供しました。

于 2008-09-23T07:04:10.837 に答える
1

また、異なる動詞を使用して、同じルートを異なるアクションに再利用することを検討することもできます。たとえば、「Products/Edit/45」への GET リクエストは製品エディターを表示しますが、同じ URL への POST は製品を更新します。AcceptVerb 属性を使用してこれを実現できます。

[AcceptVerb("GET")]
public ActionResult Edit(int id)
{
    ViewData["Product"] = _products.Get(id);
    return View();
}

[AcceptVerb("POST")]
public ActionResult Edit(int id, string title, string description)
{
    _products.Update(id, title, description);
    TempData["Message"] = "Changes saved successfully!";

    return RedirectToAction("Edit", new { id });
}
于 2008-09-23T07:21:38.987 に答える
0

BilldehÓraは、読む価値のあるフレームワークのWebリソースマッピング基準というタイトルの非常に優れたエッセイを書きました。

于 2008-09-23T08:10:20.960 に答える
0

このトピックにアプローチするための2つの主な受け入れられた方法を見てきました...

1つはMvcContribプロジェクトのドキュメントで説明されています

もう 1 つは、Stephen Walther によるブログ投稿で説明されています(個人的にはこちらの方が好みです)。

于 2008-09-26T18:01:52.843 に答える
0

troethom のコメントに追加すると、RESTful は通常、たとえば、新しいユーザーを作成するには、表現を /users/newusername に PUT することも意味します。

RESTful は、基本的に 5 つの標準 HTTP メソッド (GET、PUT、POST、DELETE、HEAD) を使用してコンテンツを制御/アクセスします。

OK、これは Web ブラウザにとっては簡単なことではありませんが、オーバーロードされた POST をいつでも使用できます (ユーザーの表現を含む /users/username に投稿して、詳細の一部を変更するなど)。

物事を行う良い方法です。理解を深めるために、 RESTFul Web サービスを読むことをお勧めします:D (そして、これは非常に良い本です!)

于 2008-09-24T07:38:13.697 に答える