我正在尝试测试我的API调用中是否存在API令牌。传递给的标头是-
int a[] = { 1, 2 };
int *p = &a[0];
p + 1 = &a[1];
现在我的代码看起来像
"host": [
{
"key": "Host",
"value": "mydomain"
}
],
"x-api-key": [
{
"key": "x-api-key",
"value": "mykey"
}
]
}
我的If Case错误出现,而不是如果标头 // Check if apikey is a part of the headers
if ( !headers.hasOwnProperty('x-api-key') || headers['x-api-key'][0].value!="mykey") {
const body = 'Unauthorized';
const response = {
status: 401,
statusDescription: 'Unauthorized',
body: body,
};
callback(null, response);
}
完全丢失,则发送401
x-api-key
我应该如何更改条件,以便在缺少标题键/值的情况下检查键/值对并且没有未定义的错误
答案 0 :(得分:2)
尝试将代码更新为
// Check if apikey is a part of the headers
if ( !headers.hasOwnProperty('x-api-key') || (headers.hasOwnProperty('x-api-key') && headers['x-api-key'][0].value!="mykey")) {
const body = 'Unauthorized';
const response = {
status: 401,
statusDescription: 'Unauthorized',
body: body,
};
callback(null, response);
}
您的第一个条件检查标头中是否存在x-api-key
。第二个条件检查x-api-key
的值。
OR
的工作方式是,它将在第一次出现true
条件时停止执行,或者将处理每个条件。因此,在您的情况下,如果未将x-api-key
作为标题传递,则它仍会继续检查第二个条件。由于x-api-key
不存在,因此它将无法读取属性的[0]
并因此读取错误。
但是AND
在第一次出现false
条件时停止执行,因此,如果x-api-key
不是标题的一部分,则永远不会处理第二条件。