【发布时间】:2017-11-28 12:20:02
【问题描述】:
我开始输入并且 http.get 只接受 url 所以我不知道如何 发送一个人的 id 以从我的 api 中获取该人,该 api 是从 Sql 数据库中获取的。
public getByID(n :number) : Promise<any>{
return this.http.get(this.url).toPromise();
}
也许将它附加到一个网址?
【问题讨论】:
我开始输入并且 http.get 只接受 url 所以我不知道如何 发送一个人的 id 以从我的 api 中获取该人,该 api 是从 Sql 数据库中获取的。
public getByID(n :number) : Promise<any>{
return this.http.get(this.url).toPromise();
}
也许将它附加到一个网址?
【问题讨论】:
您可以选择使用template strings 将参数添加到 URL
return this.http.get(`${this.url}?id=${n}`).toPromise();
【讨论】:
${this.url}?id=${n} 是 TypeScript 的某种字符串构建器还是我错了?
? 之后的内容应该被解释为查询字符串参数 - 你可以在这里阅读一些信息 - en.wikipedia.org/wiki/Query_string
如果您想使用 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();
【讨论】:
这是您需要做的一个示例
public getByID(n :number) : Promise<any>{
return this.http.get(this.url + '?id=' + number).toPromise();
}
【讨论】:
如果您想通过id,您可以提出post 请求。它想return this.http.post(this.url, {id: n}).toPromise(),第二个参数只是请求的主体,它可以是一个对象数组,或者只是一个对象。然后在服务器端,您只需将其解析为 JSON 格式。您也可以使用get 方法,但是您必须将其作为搜索 url 参数发送。看看这个here
【讨论】: