为库

时间:2017-10-10 01:45:26

标签: api typescript

我目前正在为API创建一个库。端点具有可选标记,因此我尝试创建在函数中使用它们的方法。

import * as request from "request";

class Api {
  key: string;
  constructor(userInput: string) {
    this.key = userInput;
  }

  champions(tags: object) {
    Object.keys(tags).forEach(function(key) {
      console.log(key + " = " + tags[key])
    })

    request(`https://api.champion.gg/v2/champions?api_key=${this.key}&${tags}`, function (error, response, body) {
      if(!error && response.statusCode == 200) {
        let info = JSON.parse(body)
      }
    });

  }
}

var test = new Api("key")
test.champions({"champData": ["kda", "damage"], "rawr": ["xd", "lmao"]})

到目前为止,Object.keysforEach的合并让我得到champData=kda,damagerawr=xd,lmao的回复,但是,我需要能够分配这些到URL中可用的变量。我怎样才能让它发挥作用?

稍后可能出现的另一个问题是,在每个标记之间,需要有一个&符号,但不是最后一个。我为将多个问题合而为一而道歉,但因为这是我第一次遇到这样的事情,我有很多问题。

1 个答案:

答案 0 :(得分:1)

您可以使用Object.entries()URLSearchParams()

const tags = {a:1, b:2, c:3};
const params = new URLSearchParams();
const key = "def";
Object.entries(tags).forEach(([key, prop]) => params.set(key, prop));
const url = `https://api.champion.gg/v2/champions?api_key=${key}&${params.toString()}`;
console.log(url);