Можно ли использовать REST вместо перезаписи URL в CF10? - PullRequest
4 голосов
/ 28 марта 2012

Можно ли использовать поддержку REST в CF10 для замены использования URL Rewrite / ModRewrite для SEO-дружественного URL?Напишите тонкий слой, который определяет метод GET и POST, и <cfinclude> на правильной странице?

Или это слишком обременительно для сервера, и лучше оставить его на веб-сервере для работы?

Оказавшись в CFML, было бы намного легче контролировать и поддерживать версию.

Спасибо

Ответы [ 3 ]

2 голосов
/ 29 марта 2012

Если я понимаю, что вы говорите (и, возможно, я не понимаю), вы создадите обработчик, который будет перехватывать запрос, анализировать переменные, а затем запрашивать соответствующую страницу через REST?Если это то, что вы имеете в виду, то я не уверен, что буду следовать тому, что вы получите от этого.REST (в целом) - это скорее универсальный HTTP API для доступа к методам - ​​не столько парадигма страницы / контента (я думал, что это возможно).

Если вы ищете использовать CFкак переписать SEO обработчик URL вы можете сделать это сейчас.Чтобы использовать пример IIS, вы можете создать «пользовательский обработчик 404» - страницу CFM - который получает все запросы, которые не привязаны к конкретному документу.Обработчик выявляет переменные путем анализа URL, а затем «включает» правильный код или страницу cfm.Это немного похоже на то, что вы хотите, но на самом деле это не REST.

Возможно, вы думаете о том, чтобы выполнить какой-то вызов CFHTTP, где вы получаете нужный контент, создавая строку запроса из URL.Поэтому, если кто-то загрузит URL-адрес, такой как:

blah.com / productid / 550

Вы можете написать код, например, так: * * * * * * * * * * *было бы лучше использовать cfinclude, а не этот подход.Подход, подобный приведенному выше, фактически генерирует дополнительный поток на запрос - один поток для запроса браузера, а другой - для запроса cfhttp.

Наконец, я хотел бы вежливо предположить, что URL Rewrite (в apache или IIS) является более эффективным и более «обычным» и, следовательно, вероятно, лучшим выбором в целом.

1 голос
/ 16 мая 2012

Даже если бы кто-то мог сделать это, я бы сказал, что он использует не тот инструмент, чтобы выполнять неправильную работу. Перезапись URL - это работа веб-сервера, а не сервера CF, и веб-сервер будет чертовски лучше, чем CF. REST-интерфейс CF предназначен для создания API, а не для перезаписи URL.

Если бы один был для обработки перезаписи URL с использованием CF, то лучше использовать обработчик 404 или обработчик onMissingTemplate (), не так ли? По крайней мере, вы используете инструмент, предназначенный для этой работы (если не самый лучший).

Что касается контроля версий ... файл .htaccess - это просто текстовый файл, как и файл CFML. Я не слишком внимательно изучил модуль перезаписи IIS, но не может ли он использовать текстовый файл для настройки / сохранения своих перезаписей? Очевидно, что Apache может, и мы используем модуль ISAPI Rewrite от Helicon, который использует mod_rewrite-совместимый файл .htaccess.

Мне кажется, что вы пытаетесь упростить работу разработчика, используя подход, который снизит производительность. «Облегчение жизни разработчика» никогда не должно быть основанием для компрометации производственной среды (очевидно, IMO).

1 голос
/ 16 апреля 2012

@ Генри REST не является заменой перезаписи URL.

Прежде всего REST-URL имеют формат.

http://localhost:8500/rest/App_Name/Rest_Path

«отдых» обязателен. Если вы хотите изменить «отдых», вы можете изменить его в файле web.xml (Изменить сопоставление URL).

App_Name не является обязательным. На сервере может быть приложение по умолчанию для отдыха. Для приложений по умолчанию вам не нужно указывать AppName. Для доступа к другим (не по умолчанию) остальным приложениям вы должны указать AppName. Вы можете установить приложение по умолчанию на странице регистрации службы отдыха в администраторе.

Rest_Path идентифицирует CFC и функцию в CFC, которая должна быть вызвана при вызове HTTP.

Если этот формат URL приемлем, тогда URL этих форматов может быть сопоставлен с определенной функцией в CFC. Когда к URL-адресу обращается HTTP-вызов, вызывается соответствующая функция CFFunction. Используя REST, вы получаете доступ к функции в CFC. Невозможно получить прямой доступ к CFC или CFM таким образом. Но в функции вы можете реализовать все, что захотите (например, вызов CFC, вызов другого CFM и т. Д.).

Этот ответ отвечает на ваш вопрос?

Спасибо, Пол

...