Верните пустое тело с Синатрой

Как я могу указать sinatra для возврата пустого тела со статусом 200?

Я могу сделать body "", но есть ли более явный способ сделать это?

Ответ 1

Использование интерфейса Rack

Из документации:

Вы можете вернуть любой объект, который будет либо действительным ответом Rack, либо объектом тела стойки, либо кодом состояния HTTP:

  • Массив с тремя элементами: [status (Fixnum), заголовки (Hash), тело ответа (отвечает на #each)]
  • Массив с двумя элементами: [status (Fixnum), тело ответа (отвечает на #each)]
  • Объект, который отвечает на #each и передает только строки в данный блок
  • A Fixnum, представляющий код состояния

Таким образом, возврат любого из

  • [200, {}, ['']]
  • [200, ['']]
  • ['']
  • 200

должен сделать трюк.

Использование помощников

В Настройка тела, кода состояния и заголовков вводятся вспомогательные методы status и bodyheaders):

get '/nothing' do
  status 200
  body ''
end

Ответ 2

Также из docs:

Чтобы немедленно остановить запрос в рамках фильтра или маршрута, используйте:

остановка

Вы также можете указать статус при остановке:

halt 410

Итак, в случае, когда вам нужен только статус 200, это будет:

halt 200

halt - один из самых полезных методов, доступных Sinatra для вас, стоит прочитать документы. Я часто использую его для возврата сообщений об ошибках в начале обработки маршрута, например, когда требуются параметры.