无法在 POST url angular 中传递参数

Not able to pass parameter in POST url angular

您好,我正在尝试在 angular 服务中的 POST 方法 url 中传递参数,以构造一个 URL 从 API 中获取一些数据但是当我在组件文件上调用它时,我收到错误响应。

我哪里做错了?

示例我需要这种类型的 url 才能通过:- https://something/api/v1/map/GetdetailsById?ID=EF-345-RHDJI34-EHI3

服务中我在做:-

// Http Options
  httpOptions = {
    headers: new HttpHeaders({
      'Content-Type': 'application/json'
    })
  };

//POST API to show lists
  getOTList(): Observable<any> {
    const params = new HttpParams()
    .set('ID', 'EF-345-RHDJI34-EHI3');
    return this.http
      .post<any>(`${environment.Url}` + `${APIs.getList}`,{params}, this.httpOptions)
      .pipe(
        retry(1),
        catchError(this.handleError)
      )
  }

组件中的 Ang 我在做 :

ngOnInit(){
    this.getLists();
  }

getLists(){
    this.addService.getOTList().subscribe((response:any) => {
      if (response.IsSuccess == true) {
        console.log(response);
      }
      else {
        console.log("something is wrong.") //<========== getting this message in console
      }
    });
  }

您需要将 params 常量设置为 http.post 调用中的参数对象,如下所示:{params: params}.

所以你更新后的服务函数应该是这样的:

getOTList(): Observable<any> {
   const params = new HttpParams()
   .set('ID', 'EF-345-RHDJI34-EHI3');
   return this.http.post<any>(`${environment.Url}` + `${APIs.getList}`, {params:params}, this.httpOptions)
      .pipe(
         retry(1),
         catchError(this.handleError)
      )
}

我们正在做一个 POST 请求,因此我们需要添加一个 body。您的参数也应该设置为与您的 httpOptions 相同的 object,HttpClient 确实不需要将内容类型设置为 json,它会自动发生,所以我会这样做:

return this.http.post<any>(`${environment.Url}` + `${APIs.getList}`, {}, { params })

注意空 body {}。因为您甚至没有传递 body,所以这不需要是 POST 请求,只是我想提一下。另外,请不要使用 any。键入您的数据将在将来帮助您! :)