Различают запрос частичного HTML и полный макет для одного URL / маршрута - PullRequest
0 голосов
/ 27 января 2011

В данный момент я пишу код маршрутизации для моей инфраструктуры MVC, которая способна отображать HTML-части (представления).Эти партиалы могут быть загружены на стороне сервера или на стороне клиента (используя HTML-запрос Mootools).Макет каждой страницы затем строится из нескольких частей.Поскольку я хочу, чтобы он соответствовал ReST, каждый частичный HTML (представление) отображается на URL-адрес в определенном пространстве URL следующим образом (отступ показывает предполагаемую структуру документа):

...
/      
  /navigation
  /content
    /profile
      /profile/1
        /profile/1/message/
          /profile/1/message/1
          /profile/1/message/2
...

Теперь проблема заключается в том, чтоЯ хочу, чтобы люди могли посещать "/ профиль", а затем показывать не частичную HTML-версию, а полный макет.Я думал о следующем:

1) Создание отдельного пространства имен / префикса в URL для партиалов, например:

  • / profile для полного макета
  • / частичный / профиль для частичного

2) Отправка настраиваемого заголовка HTTP для запроса частичного или нулевого настраиваемого заголовка HTTP для запроса полного макета.

Первый вариантбыло бы более ReST-совместимым (кеш-дружественным), но я все еще не уверен (и это реальная проблема) в отношении других вариантов, которые все еще могут быть мне неизвестны.У меня есть следующие вопросы:

  1. Какие альтернативы мне нужно различать между запросом партиалов и полными разметками?
  2. Как лучше всего сохранять состояние на стороне клиента /контекст каждого частичного?

Ответы [ 2 ]

1 голос
/ 27 января 2011

Вариант 1 определенно является лучшим решением по сравнению с вариантом 2. В системе RESTful мы постоянно создаем новые ресурсы, чтобы восполнить недостаток методов.

Создание пользовательского заголовка - очень плохая идея.

1 голос
/ 27 января 2011

Когда вы запрашиваете на стороне клиента, сервер получит дополнительный заголовок HTTP_X_REQUESTED_WITH со значением xmlhttprequest.

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && 
   strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
   ....
}

Это надежный заголовок для проверки, а не для добавления пользовательского типа.

...