使用白名单对象验证 url 字符串

弗雷迪。

我正在尝试通过使用对象检查有效参数和可接受值(白名单)来验证 URL 链接。

const validParams = {
   "brand",
   "item",
   "size",
   "country"
}

const validBrandValues = {
   "nike",
   "adidas",
   "puma",
   ...
}

export const Validate = (link) => {
    const urltest = "https://example.com/?brand=nike%20adidas%20puma%20cat&item=trainers%20jackets%20socks&random=hello"
    var url = "";
    try {
        url = decodeURI(urltest);
      } catch (e) { 
        console.error(e);
    }
    const params = url.split("?");
    const value = params[1].split("&").map(item => item.split("="));

    console.log(value)
    //for(int i = 0; i < value.length; i++){
       //if(value[i] === "brand"){
          //for(int j = 0; j < value[i].length; j++){
             //validBrandValue.contains()
          //}
       //}
    //}
}
//Current Output
(3) [Array(2), Array(2), Array(2)]
0: (2) ["brand", "nike adidas puma cat"]
1: (2) ["item", "trainers jackets socks"]
2: (2) ["random", "hello"]

如何有效地分析Validate函数中的输入 URL以标记任何未列入白名单的值或参数。在提供的链接示例中,它将标记cat为未知品牌且random参数无效

普隆詹

这是一种方法:

const validValues = { 
  brand: [ "nike", "adidas", "puma" ],
  item:  [ "trainers", "jackets", "socks"]
}

const Validate = link => {
  const url = new URL(link);
  const entries = [...url.searchParams.entries()];
  let testArr = entries.map(entry => {
    const key = entry[0];
    const valids = validValues[key]; // key exists
    const values = entry[1].split(" "); // parms space separated
    return {
      [key]: valids ? values.map(elem => ({ [elem]:valids.includes(elem)})) : false
    }
  })
  return testArr;
};
console.log(Validate("https://example.com/?brand=nike%20adidas%20puma%20cat&item=trainers%20jackets%20socks&random=hello"))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章