aliyun / api-gateway-nodejs-sdk

The API Gateway SDK for Node.js
MIT License
106 stars 23 forks source link

when the query value is 0 or false, the k-v item will miss #14

Open jazzhuang opened 6 years ago

jazzhuang commented 6 years ago

https://github.com/aliyun/api-gateway-nodejs-sdk/blob/7b2c85edb9f397d7bff30f90984335d44c7133ff/lib/client.js#L106

注: 根据网关的文档签名描述,https://help.aliyun.com/document_detail/29475.html?spm=5176.product29462.6.569.ZDrfpw “如果某个参数的 Value 为空只保留 Key 参与签名,等号不需要再加入签名。” 可能代码实现的时候误解了这里的意思了!

JacksonTian commented 6 years ago

完成的实现并没有错:

        if (toStringify[key] && ('' + toStringify[key])) {
          list[i] = `${key}=${toStringify[key]}`;
        } else {
          list[i] = `${key}`;
        }

如果 0 或者 false,会转成字符串的形式,其长度不为 0.

jazzhuang commented 6 years ago

如果是0或者false, toStringify[key] == false, 即 toStringify[key] && ('' + toStringify[key]) == false

JacksonTian commented 6 years ago

我知道问题了。因为之前都是从 querystring 上取下来的值,都是 string 类型的。所以不存在 0/false 的情况。当POST的时候,才会命中这个逻辑。