如何使用get http请求发送参数(id)?

时间:2017-11-28 12:20:02

标签: angular http get

我开始输入,http.get只接受网址,所以我不知道怎么做 发送一个人的id,以便从我的api中获取该人,并从Sql数据库中获取该人。

public getByID(n :number) : Promise<any>{

    return this.http.get(this.url).toPromise();
  }

可能会将其附加到网址上吗?

4 个答案:

答案 0 :(得分:3)

您可以选择使用template strings将参数添加到网址

return this.http.get(`${this.url}?id=${n}`).toPromise();

答案 1 :(得分:2)

如果要使用GET将变量传递给API,可以使用查询字符串。记得妥善逃脱(urlencode)!如果您不希望变量可见,也可以使用POST。

对于简单的情况,手动格式化查询字符串很好。但是当有很多参数时,它会变得乏味。

您可以编写一个简单的实用程序函数来处理为您构建查询格式。

function formatParams( params ){
return "?" + Object
    .keys(params)
    .map(function(key){
        return key+"="+encodeURIComponent(params[key])
    })
    .join("&")

}

你会以这种方式使用它来构建请求。

var endpoint = "https://api.example.com/endpoint"
var params = {
a: 1,
b: 2,
c: 3
}


return this.http.get(this.url+ formatParams(params)).toPromise();

答案 2 :(得分:1)

以下是您需要做的事情的示例

public getByID(n :number) : Promise<any>{  
    return this.http.get(this.url + '?id=' + number).toPromise();
}

答案 3 :(得分:0)

如果您想传递id,可以发出post次请求。它希望return this.http.post(this.url, {id: n}).toPromise(),第二个参数只是请求的主体,它可以是一个对象数组,或者只是对象。然后在服务器端,您只需将其解析为JSON格式。您也可以使用get方法,但之后必须将其作为搜索网址参数发送。看一下这个here