如何在角度4的http请求中传递url参数

时间:2018-05-09 06:48:45

标签: angular httprequest

如何通过传递参数来获取请求?我试过这个,但得到404错误

getOrderbyOrderNo() {

        this.orderno = this.cookie_service.get('key');

        let headers = new Headers();
        headers.append('Content-Type', 'application/json');
        headers.append('orderno', this.orderno );
        let params = new URLSearchParams();
        params.append("someParamKey", this.orderno )

        return this.http.get('http://localhost:8080/View/orders', { headers: headers, params: params })


    }

输出

ERROR 
Object { _body: "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot GET /View/orders</pre>\n</body>\n</html>\n", status: 404, ok: false, statusText: "Not Found", headers: {…}, type: 2, url: "http://localhost:8080/View/orders" }

5 个答案:

答案 0 :(得分:1)

IMO有两种方法可以通过http请求发送params。

  1. 通过将其附加到此类网址 -

    return this.http.get('http://localhost:8080/View/orders/'+this.orderno, { headers: headers  })
    
  2. 另一种方法是,如果您使用httpclient,那么您可以在这样的选项中发送参数 -

     let httpParams = new HttpParams()
        .set('orderno', this.orderno);
    
  3. 有关此处的更多信息,请阅读

    get类型的请求中,没有请求的正文部分,因此您必须在您的URL中附加您的参数,即params或查询参数。或者在选项中使用第二种方式。

答案 1 :(得分:1)

如果您使用的是httpclient,那么您应该这样做

let params = new HttpParams();
params = Params.append('firstParameter', parameters.valueOne);
params = Params.append('secondParameter', parameters.valueTwo);
return this._HttpClient.get(`${API_URL}/api/logs`, { params: params })

或者您可以创建参数对象

export interface GetParams {
  firstParameter?: string;
  secondParameter?: string;
   ..more param you want 
} 


Const getParamsobj : GetParams = {
  firstParameter: 'value',
  secondParameter: 'value'
  ..other params
}
return this._HttpClient.get(`${API_URL}/api/logs`, { params: getParamsobj })

答案 2 :(得分:0)

你可以传递这样的参数:

return this.http.get('http://localhost:8080/View/orders?someParamKey=xyz&anotherParam=abc
', { headers: headers})

答案 3 :(得分:0)

传递参数和标题在HttpClient中有所不同,因为它们是不可变的,如果要传递参数,则应使用HttpParams { params: new HttpParams().set('name', term) }

答案 4 :(得分:0)

试试这个:

将此包导入您的班级:

import { HttpHeaders, HttpClient, HttpParams } from '@angular/common/http';

像这样注入HttpClient

constructor(private _http: HttpClient) {}

发送请求:

    let url = "your url";

    let Params = new HttpParams();
    Params = Params.append('param1', value1);
    Params = Params.append('param2', value2);

    let header: HttpHeaders = new HttpHeaders();
    header = header.append('Content-Type', 'text/plain');

    return this._http.get(url , { params: Params, headers: header })
        .map((response: Response) => {
        });