如何在Angular的HTTP发布请求中的URL中传递查询参数

时间:2020-10-09 02:42:29

标签: angular rest http-post url-parameters query-parameters

这是我将参数传递给Postman中的http发布请求的方式。状态为OK 200。 enter image description here

我正试图从这样的角度代码中做到这一点。

getInfo() {
        const params = [];
        params.push({code: 'checkinFrom', name: '2019-02-01'});
        params.push({code: 'checkinTo', name: '2019-10-01'});
        params.push({code: 'room_type_ids', name: [2]});
        
        console.log(params);
        return this.service.post(environment.url + 'v1/transactions/demand/price-info',  params);
}

这是我在Service类中的post方法。

 post(path, body): Observable<any> {
        return this.http
            .post(
                path,
                body,
                {
                    headers: Service.setHeaders([])
                }
            )
            .pipe(
                catchError(error => {
                    throw error;
                }),
                map((res: Response) => res)
            );
    }

但是在Angular前端中,当我尝试发送参数时,会出现类似 422(不可处理的实体)的错误。我想如何传递参数?

1 个答案:

答案 0 :(得分:3)

您可以尝试将它们像标题一样放在post方法中,就像这样

post(path, body): Observable<any> {
    return this.http
        .post(
            path,
            body,
            {
                headers: Service.setHeaders([]),
                params: {
                  param1: param1Value,
                  param2: param2Value,
                  ...
                },

            }
        )
        .pipe(
            catchError(error => {
                throw error;
            }),
            map((res: Response) => res)
        );
}

如果要将参数用作数组,则必须将对象数组转换为对象对象。 访问How do I convert array of Objects into one Object in JavaScript?

希望我能帮上忙