我目前正在为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.keys
和forEach
的合并让我得到champData=kda,damage
和rawr=xd,lmao
的回复,但是,我需要能够分配这些到URL中可用的变量。我怎样才能让它发挥作用?
稍后可能出现的另一个问题是,在每个标记之间,需要有一个&
符号,但不是最后一个。我为将多个问题合而为一而道歉,但因为这是我第一次遇到这样的事情,我有很多问题。
答案 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);