2015-07-23 4 views
0

Для запросов HEAD Rails, похоже, выполняет все обычные шаги, включая шаблоны рендеринга, а затем отбрасывает соответствующий вывод (отправляет обратно пустой ответ).Почему Rails отображает шаблоны для запросов HEAD?

Я не могу представить, каким образом шаблоны рендеринга в случае запроса HEAD имеют какой-либо смысл (если только у вас нет фактической бизнес-логики, которая выполняется в шаблонах, но это никогда не должно быть так).

Итак, мой вопрос: согласны ли вы со мной или какие-либо возможные побочные эффекты, которые я не предвидел?

Причина, по которой я прошу, заключается в том, что я собираюсь подать вопрос с Rails и, возможно, отправить запрос на перенос для функции, которая отключает дефолтную (неявную) визуализацию шаблона для запросов HEAD.

ответ

0

Хорошая точка Remo, однако, я не совсем согласен.

Для каждого глагола http мы вручную должны написать код для обработки вещей. Аналогичная вещь с HEAD. Запрос HEAD будет следовать стилю выполнения запроса GET, если мы не будем его обрабатывать.

Примером может быть:

def index 
    if request.head? 
    head :created 
    else 
    # handle GET request 
    Rails.logger.info "Derp #{request.method}" 
    end 
end 
+0

Вы правы, но есть одна неявная разностная уже: Ответ пуст. Я думаю, что это может быть сделано промежуточным программным обеспечением стойки? – Remo

+0

Да, это может быть хорошим дополнением, однако Rails обеспечивает свободу обработки ваших глаголов. Например: вы можете создавать записи даже с запросом GET. Вы можете вернуть объект (может быть json) из метода POST, тогда как это может быть просто «201/ok». Глаголы - это только способ, которым данные перемещаются по HTTP. Просто мое мнение. :) – RAJ

Смежные вопросы