Frage

Gibt es ein bestimmtes Muster, dass die Entwickler im Allgemeinen folgen? Ich habe nie wirklich gab es viel gedacht, bevor sie in meiner Web-Anwendungen, aber die ASP.NET MVC Routing-Engine Sie ziemlich viel Kräfte zumindest nehmen sie in Betracht.

Bisher habe ich die Controller / action / Indexstruktur gemocht (z Produkte / Edit / 1), aber ich bin mit komplexeren Urls kämpfen hat.

Zum Beispiel, sagen wir mal Sie eine Seite haben, die die Produkte alle ein Benutzer auf ihrem Konto hat auflistet. Wie würdest du es machen? Aus der Spitze von meinem Kopf kann ich denke an den folgenden Möglichkeiten für eine Auflistung Seite und einer Seite bearbeiten:

  1. Benutzer / {user id} / Produkte / List, User / {user id} / Produkte / Edit / {Produkt-ID}
  2. Benutzer / {user id} / Produkte, Benutzer / {user id} / Produkte / {Produkt-ID}
  3. Produkte? UserID = {user id}, Produkte / Edit / {Produkt-ID}

Ich bin sicher, es gibt viele andere, die ich fehle. Jede Beratung?

War es hilfreich?

Lösung

Ich mag RESTful, benutzerfreundlich und hackable URLs.

Was bedeutet das? Fangen wir mit benutzerfreundliche URLs . Für mich ist eine benutzerfreundliche URL etwas leicht zu geben und leicht zu merken /Default.aspx?action=show&userID=140 nicht eine dieser Anforderungen erfüllen. Eine URL wie `/ users / troethom' logisch erscheint aber.

Dies führt zum nächsten Punkt. A hackable URL ist eine URL, die der Benutzer ändern kann und nach wie vor mit einem Ergebnis präsentiert bekommen. Wenn die URL hackable und die URL für mein Profil ist /users/troethom es sicher sein würde meine Benutzername zu entfernen, um eine Liste der Benutzer zu bekommen (/users).

Mit RESTful URLs ist ziemlich ähnlich wie die Ideen, die hinter meinen anderen Vorschlägen. Sie entwerfen URLs für einen Benutzer und nicht für eine Maschine und damit die URL hat auf den Inhalt beziehen und die das technische Back-End Ihrer Website nicht. Eine URL als '/ users' macht mehr Sinn als' / users / list' und eine URL als "/ Kategorie / Programmierung / javascript' (als Vertreter der Unterkategorie‚javascript‘in der Kategorie‚Programmierung‘ist besser als" / Kategorie / show / 12'.

Es ist in der Tat schwieriger IDs zu verzichten, aber in meiner Welt ist es die Mühe wert.

Auch der Vereinbarung URIs Abschnitt auf W3C's Allgemeine HTTP-Implementierung Probleme konsultieren. Es hat eine Liste der häufigsten Fallen, wenn URIs zu entwerfen. Eine weitere gute Ressource ist Erfinderisch Vs Hackable Search URLs .

Andere Tipps

Sie können einen Blick auf die Frage „ Freundliche URL-Schema? “ nehmen.

Insbesondere Larry.Smithmier Antwort eine Liste gemeinsamer URL-Schemata zur Verfügung gestellt, wenn MVC in ASP.NET.

Auch können Sie prüfen verschiedene Verben mit den gleichen Routen für verschiedene Aktionen zur Wiederverwendung. Zum Beispiel kann eine GET-Anforderung an „Produkten / Edit / 45“ würden den Produkt-Editor angezeigt werden, während ein POST auf die gleiche URL würde das Produkt aktualisieren. Sie können das AcceptVerb Attribut verwenden, um dies zu erreichen:

[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 });
}

Bill de hora schrieb einen sehr guten Aufsatz mit dem Titel Web-Ressource-Mapping Kriterien für Gerüste das ist gut lesenswert.

zu troethom Kommentare hinzuzufügen, in der Regel RESTful bedeutet auch, dass zum Beispiel einen neuen Benutzer erstellen Sie eine Vertretung / Benutzer setzen würde / newusername

RESTful verwenden grundsätzlich die 5 Standard-HTTP-Methoden (GET, PUT, POST, DELETE, HEAD) zum Steuern / Zugriff auf Inhalte.

Ok, dann ist dies für einen Web-Browser nicht einfach, aber man kann immer überlastete POST (Post / users / Benutzername mit einer Darstellung eines Nutzers verwenden, einige der Details zu ändern, etc.

Es ist eine gute Art und Weise, Dinge zu tun, würde ich Lesung reccommend RESTful Web Services um ein besseres Verständnis: D (und es ist ein verdammt gutes Buch!)

Ich habe zwei Haupt akzeptierte Möglichkeiten gesehen dieses Thema zu nähern ...

Man ist in der MvcContrib Projektdokumentation

und der andere ist in einem Blog-Eintrag von Stephen Walther (was ich persönlich bevorzugen).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top