【问题标题】:Validation on multivalue HTTP header with Node and hapijs/joi使用 Node 和 hapijs/joi 验证多值 HTTP 标头
【发布时间】:2016-05-09 03:36:03
【问题描述】:

我正在尝试验证我的 REST api 中的 Accept 标头,该 api 是在 Hapijs 框架上用 Node.js 编写的。当我从 Firefox 请求我的资源时,它会创建一个带有以下接受标头的请求:

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 不会将接受标头拆分为某种数组。我可以使用一些正则表达式,例如:

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

我想知道除了正则表达式之外是否还有其他方法来验证此类多值标头,尤其是当 api 版本控制将发挥作用时。有人有想法吗?

【问题讨论】:

    标签: javascript node.js validation hapijs joi


    【解决方案1】:

    我不认为只要Accept 标头是一个字符串。

    我认为您在使用regex() 时走在正确的轨道上。

    注意Accept 的大小写需要在您的架构和标头属性之间保持一致。

    【讨论】:

      猜你喜欢
      • 2020-06-04
      • 1970-01-01
      • 2016-05-08
      • 2016-02-04
      • 2019-10-01
      • 2014-11-30
      • 1970-01-01
      • 1970-01-01
      • 2017-02-25
      相关资源
      最近更新 更多