【问题标题】:How to send a parameter (id) with get http request?如何使用 get http 请求发送参数(id)?
【发布时间】: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();
  }

也许将它附加到一个网址?

【问题讨论】:

    标签: angular http get


    【解决方案1】:

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

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

    【讨论】:

    • 是的,它有效,但你能解释一下这里实际发生了什么${this.url}?id=${n} 是 TypeScript 的某种字符串构建器还是我错了?
    • 确保它被称为字符串插值:“......当你想从一些静态字符串+一些变量中生成一些字符串时。为此你需要一些模板逻辑,这就是模板字符串得到它们的地方名称来自“(来自上面的链接)
    • 非常感谢关于模板字符串的内容,还有一件事呢?有任何功能,或者只是一个问号,使 url 看起来像这样 http.example.com?id=1 或者我的 api 将获取的 url 看起来与我写的不同?
    • 它本质上告诉浏览器? 之后的内容应该被解释为查询字符串参数 - 你可以在这里阅读一些信息 - en.wikipedia.org/wiki/Query_string
    • 是的,我现在明白了,我在 TKey=TValue 类型的 url 之后发送查询字符串,谢谢。
    【解决方案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();
    

    【讨论】:

      【解决方案3】:

      这是您需要做的一个示例

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-08-24
          • 2018-02-04
          • 1970-01-01
          • 2015-03-15
          • 2020-11-29
          相关资源
          最近更新 更多