Является ли использование строковых переменных запроса URL по-прежнему RESTful

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

  •  05-07-2019
  •  | 
  •  

Вопрос

Я столкнулся с проблемой использования переменных строки запроса в приложении RESTful Asp.net MVC.Нарушает ли это шаблон RESTful?

Дело в том, что Asp.net MVC использует маршрут по умолчанию, например:

/controller/action/id

Я должен пройти через другую комбинацию controller + action, например:

/controller/action/id/controllerX/actionX

но это не сработает, если я буду находиться в корневом каталоге своего приложения, потому что первые три параметра будут опущены, а последние два будут обрабатываться как первая пара.

Вместо этого у меня возникает соблазн использовать это обозначение:

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

Который также будет работать с root

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

Но успокаивает ли это?

Небольшое объяснение

Я хочу иметь более модульный подход к моим представлениям, чем обычный встроенный в PartialViews.Потому что, если у меня есть частичный просмотр, который отображается на многих страницах, я должен добавить видеоданные для этого конкретного частичного просмотра в каждый отдельный действие контроллера, которое возвращает представление, использующее это конкретное частичное представление.И я думаю, что это неправильный способ ведения дел.Контроллеры становятся зависимыми от частичных представлений, которые могут (или не дай бог может не ) быть частью основного вида.

на помощь приходят действия рендеринга вместо частичных просмотров.Я использую свой собственный Html.RenderAction() это вызывает действие некоторого контроллера, который подготавливает только свои собственные данные.Отлично, это прекрасно работает.

Первая проблема была с HTTP-методом, который распространялся на все действия RenderAction.Поэтому я изменил его, и я могу управлять HTTP-методом так, как мне нравится.Некоторые действия всегда могут выполняться с использованием GET, независимо от того, был ли основной просмотр отправлен обратно (таким образом, с использованием POST).

Проблема заключается в том, что эти действия возвращают частичные представления со своими собственными элементами ФОРМЫ.Поскольку мои вспомогательные действия не могут быть отправлены напрямую (потому что они не будут знать, какое представление возвращать), они фактически отправляют сообщение в представление.Все вспомогательные действия с формами обычно имеют распространяемый HTTP-метод из основного представления, поэтому они фактически перейдут к выполнению обратного действия.

Дело в том, что только фактическая форма, которая была отправлена обратно, должна выполнить свое действие POST.Другие должны просто использовать метод GET.Вот тут-то и вступает в игру моя вторая пара контроллер / действие.Каждая форма дополнительного действия отправляется обратно на

mainViewController/action/?PostForm=controller/action

где второй параметр помогает решить, какой рендеринг вспомогательного действия должен распространять на него метод POST.Эта конкретная форма будет проверена, как определено в ее действии post.

Я надеюсь, что это немного больше объясняет мою проблему на конкретном примере.Эта проблема связана с моим вчерашний вопрос.

Это было полезно?

Решение

Если этот URL-адрес приведет к тому, что тот же просмотр будет возвращен независимо от сеанса, файлов cookie или истории предыдущих посещений клиента, тогда да, это будет то, что вы называете RESTful.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top