在Angular 7中对HttpHeaders进行空检查

时间:2019-06-19 18:17:22

标签: angular http-headers lazy-initialization

最近,我面临一个奇怪的问题,其中我在拦截器中执行以下代码,在STEP 1中,我可以获取req.header,但是当我到达STEP 2时,我正在获取异常“无法读取null的属性'length'”

RETURN REDUCE(r = "",
  s IN [i IN RANGE(0, 24, 8) |
    "0000000" + apoc.text.hexValue(
      apoc.bitwise.op(
        apoc.convert.toInteger("0x" + SUBSTRING($input, i, 8)),
        $operation,
        apoc.convert.toInteger("0x" + SUBSTRING($operand, i, 8))))] |
  r + SUBSTRING(s, LENGTH(s)-8)
) AS res;

然后,再次在步骤3中,我可以使用“ req.headers.keys()”或将请求对象悬停在同一请求中看到所有键。

我怀疑,这背后的原因是标头的惰性初始化,但是如何保持安全检查,以免在运行时出现任何异常。

以下是错误: enter image description here

PS:我也保留了此检查,但工作辛苦:

 private prepareUrlProperties(req: HttpRequest<any>) {
        let urlProperties = {};        
        if (req.headers) { // STEP 1
        try{
            const metaData = JSON.parse(req.headers.get('metadata') || '{}'); // STEP 2
        } catch (exp) {
           console.log(exp);
        }
            urlProperties = { ...urlProperties, ...metaData }; // STEP 3
        }
        return urlProperties;
    }   

需要一些地方!

为req.headers附加console.logs,第一个位于步骤1,第二个位于步骤3。

enter image description here

0 个答案:

没有答案