Est-ce que l'utilisation de variables de chaîne de requête d'URL est toujours RESTful

StackOverflow https://stackoverflow.com/questions/1809086

  •  05-07-2019
  •  | 
  •  

Question

On me pose un problème d'utilisation de variables de chaîne de requête dans une application RESTful Asp.net MVC. Cela enfreint-il le modèle RESTful?

Le problème, c’est que Asp.net MVC utilise une route par défaut telle que:

/controller/action/id

Je dois passer par une autre combinaison contrôleur + action telle que:

/controller/action/id/controllerX/actionX

mais cela ne fonctionnera pas si je serais à la racine de mon application, car les trois premiers paramètres seront omis et les deux derniers seront traités comme le premier couple.

Au lieu de cela, je suis tenté d'utiliser cette notation à la place:

/controller/action/id?Param=controllerX/actionX

Ce qui fonctionnerait aussi à la racine

http://domain/?Param=controllerX/actionX

Mais est-ce RESTful?

Un peu d'explication

Je souhaite une approche plus modulaire de mes vues que celle intégrée à PartialViews. En effet, si une vue partielle est affichée sur de nombreuses pages, je dois ajouter des données vide pour cette vue partielle particulière dans chaque action du contrôleur renvoyant une vue utilisant cette vue partielle particulière. Et je pense que c'est une mauvaise façon de faire les choses. Les contrôleurs deviennent dépendants de vues partielles qui peuvent (ou ne peuvent en interdire ne pas ) faire partie de la vue principale

les actions de rendu au lieu de vues partielles viennent à la rescousse. J'utilise mon propre Html.RenderAction () qui appelle l'action de certains contrôleurs qui prépare uniquement ses propres données. Super cela fonctionne bien.

Le premier problème était avec la méthode HTTP qui a été propagée à toutes les actions RenderAction. Alors je l'ai changé et je peux contrôler la méthode HTTP comme je le souhaite. Certaines actions peuvent toujours utiliser GET, que la vue principale ait été postée (donc avec POST).

Le problème survient lorsque ces actions renvoient des vues partielles avec leurs propres éléments FORM. Étant donné que mes sous-actions ne peuvent pas être directement publiées sur (car elles ne savent pas quelle vue retourner), elles sont en fait affichées sur la vue. Toutes les sous-actions avec des formulaires ont généralement propagé la méthode HTTP à partir de la vue principale, elles entrent donc réellement dans l'exécution de l'action de publication.

Le fait est que seul le formulaire qui a été posté doit exécuter son action POST. D'autres devraient simplement utiliser la méthode GET. Voici où ma deuxième paire contrôleur / action entre en jeu. Chaque formulaire de sous-action est renvoyé à

mainViewController/action/?PostForm=controller/action

où le second paramètre aide à décider quelle rendu de sous-action doit lui transmettre la méthode POST. Ce formulaire particulier sera validé comme défini dans son post-action.

J'espère que cela explique un peu plus mon problème avec un exemple concret. Ce problème est lié à ma question d'hier .

Était-ce utile?

La solution

Si cette URL entraîne le retour de la même vue sans dépendance de la session, des cookies ou de l'historique de navigation précédent d'un client, alors oui, ce sera ce que vous appelez RESTful.

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