Question

Existe-t-il un modèle spécifique suivi par les développeurs? Je n’avais jamais vraiment pensé à cela auparavant dans mes applications Web, mais le moteur de routage ASP.NET MVC vous oblige à au moins en tenir compte.

Jusqu'à présent, j'ai aimé la structure contrôleur / action / index (par exemple, Produits / Edit / 1), mais je me bats avec des URL plus complexes.

Par exemple, supposons que vous ayez une page qui répertorie tous les produits d’un utilisateur dans son compte. Comment le ferais-tu? Je peux imaginer les possibilités suivantes pour une page de liste et une page d'édition:

  1. Utilisateur / {ID utilisateur} / Produits / Liste, Utilisateur / {ID utilisateur} / Produits / Modifier / {ID produit}
  2. Utilisateur / {ID utilisateur} / Produits, Utilisateur / {ID utilisateur} / Produits / {ID produit}
  3. Products? UserID = {user id}, Products / Edit / {product id}

Je suis sûr qu'il me manque beaucoup d'autres. Un conseil?

Était-ce utile?

La solution

J'aime les URL RESTful, conviviales et piratables.

Qu'est-ce que cela signifie? Commençons par des URL conviviales . Pour moi, une URL conviviale est quelque chose de facile à saisir et à retenir, /Default.aspx?action=show&userID=140 ne répond à aucune de ces exigences. Une URL comme `/ users / troethom´ semble logique, cependant.

Ceci mène au point suivant. Une URL piratable est une URL que l’utilisateur peut modifier et qui continue de recevoir un résultat. Si l'URL est piratable et que l'URL de mon profil est / users / troethom , il serait prudent de supprimer mon nom d'utilisateur pour obtenir une liste d'utilisateurs ( / utilisateurs ).

L'utilisation des URL RESTful est assez similaire aux idées qui sous-tendent mes autres suggestions. Vous concevez des URL pour un utilisateur et non pour une machine. Par conséquent, l'URL doit se rapporter au contenu et non au back-end technique de votre site. Une URL en tant que "/ utilisateurs" a plus de sens que "/ utilisateurs / liste" et une URL en tant que "/ catégorie / programmation / javascript" (représentant la sous-catégorie "javascript" dans la catégorie "programmation" est préférable à "/ catégorie / show / 12´.

Il est en effet plus difficile d’omettre les identifiants, mais dans mon monde, cela en vaut la peine.

Consultez également la section Comprendre les problèmes d’implémentation de l’implémentation HTTP commune du W3C. Il présente une liste des pièges les plus courants lors de la conception des adresses URI. Une autre bonne ressource est URL de recherche riches en ressources pouvant être piratées .

Autres conseils

Vous pouvez consulter la question " Schéma d'URL convivial? " ;.

En particulier, la réponse de Larry.Smithmier fournit une liste des schémas d'URL courants lors de l'utilisation de MVC dans ASP.NET.

De plus, vous pouvez utiliser différents verbes pour réutiliser les mêmes itinéraires pour différentes actions. Par exemple, une requête GET sur "Products / Edit / 45". afficherait l'éditeur du produit, alors qu'un POST dans la même URL mettrait à jour le produit. Vous pouvez utiliser l'attribut AcceptVerb pour accomplir ceci:

[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 h. a écrit un très bon essai intitulé ressource Web. des critères de mappage pour les frameworks qui méritent d'être lus.

Pour ajouter aux commentaires de troethom, RESTful signifie généralement que, par exemple, pour créer un nouvel utilisateur, vous devez placer une représentation dans / users / newusername

.

RESTful utilise essentiellement les 5 méthodes HTTP standard (GET, PUT, POST, DELETE, HEAD) pour contrôler / accéder au contenu.

D'accord, ce n'est pas facile pour un navigateur Web, mais vous pouvez toujours utiliser un POST surchargé (publier dans / users / username avec une représentation d'un utilisateur pour modifier certains détails, etc.).

C’est une bonne façon de faire les choses, je vous recommande de lire services Web RESTFul pour mieux comprendre: D (et c’est un très bon livre!)

J'ai découvert deux méthodes principales acceptées pour aborder ce sujet ...

L'un d'entre eux est décrit dans la documentation du projet MvcContrib

et l'autre est décrit dans un billet de blog écrit par Stephen Walther (que je préfère personnellement).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top