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

Posted

技术标签:

【中文标题】如何在 Angular 的 HTTP 发布请求中传递 url 中的查询参数【英文标题】:How to pass query params in url in a HTTP post request in Angular 【发布时间】:2021-01-24 03:10:50 【问题描述】:

这就是我在 Postman 中将参数传递给我的 http post 请求的方式。它的状态是好的 200。

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

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 (Unprocessable Entity) 的错误。我想如何传递参数?

【问题讨论】:

【参考方案1】:

你可以试着把它们像标题一样放在 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)
        );

如果您想使用 params 作为数组,您必须将对象数组转换为对象对象。 访问How do I convert array of Objects into one Object in javascript?

希望对你有所帮助

【讨论】:

我通过params = [];的方式是否正确 如果你想使用 params 作为一个数组,你必须将你的对象数组转换为对象的对象。访问***.com/questions/19874555/…

以上是关于如何在 Angular 的 HTTP 发布请求中传递 url 中的查询参数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Angular 4+ 中取消/取消订阅所有挂起的 HTTP 请求

Angular 7 - 如何在某些响应状态代码上重试 http 请求?

如何使用http在angular2中发出请求?

如何在 Angular 4 Universal 中发出 http post 请求?

如何在 Angular 2 中发出启用 CORS 的 HTTP 请求?

Angular 2 - 如何在等待 http 请求完成时阻止 GUI 渲染