Проверка многозначного HTTP-заголовка с помощью Node и hapijs/joi

Я пытаюсь проверить заголовок Accept в своем REST API, написанном на Node.js в среде Hapijs. Когда я запрашиваю свой ресурс у Firefox, который создает запрос со следующим заголовком accept:

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Теперь мой маршрут выглядит так:

{
      method: 'GET',
      path: '/cities',
      handler: function (req, reply) {
        ... handler ...
      },
      config: {
        validate: {
          headers: Joi.object({
            'accept': Joi.any().valid('application/json').required()
          }).unknown()
        }
      } 
}

Теперь я понял, что Joi не разбивает заголовок accept на какой-то массив. Я мог бы использовать регулярное выражение, например:

Joi.string().regex(/(application\/json)/)

Интересно, есть ли какой-либо другой способ, чем регулярное выражение, для проверки таких заголовков с несколькими значениями, особенно когда в игру вступит управление версиями API. У кого-нибудь есть идея?


person Jackie    schedule 31.01.2016    source источник


Ответы (1)


Я не думаю, что есть, если заголовок Accept является строкой.

Я думаю, что вы на правильном пути с использованием regex().

Обратите внимание, что регистр Accept должен соответствовать вашей схеме и атрибуту заголовка.

person Adrian Lynch    schedule 19.02.2016