首页 > 解决方案 > Why I get error when trying to send JSON in get request?

问题描述

I use angular 10 in my project. I try to send object in get request, so I try to convert to JSON:

  getData(dataPlan: Data): Observable<Response<InfoType[]>> {
    return this.client.get<Response<InfoType[]>>(environment.baseUrl + '/ctrl/getDataPlan', {
      params: {
        JSON.stringify(dataPlan)
      }
    });
  }

But I get this error:

 Type 'Observable<ArrayBuffer>' is not assignable to type 'Observable<Response<InfoType[]>>'.
  Property 'results' is missing in type 'ArrayBuffer' but required in type 'Response<InfoType[]>'.ts(2322)

Any idea why I get error?

标签: angulartypescript

解决方案


  1. 您不应该发送这样的数据,最好使用发布请求。
  2. 尽管如此,如果您这样做,您会注意到您正在使用 .get() 传递类型<Response<InfoType[]>,并且您的<Response<InfoType[]>可能是您的自定义类型,它将具有results属性作为强制性。
  3. 但是问题就在这里,您不能以这种方式从get请求中设置您想要的响应类型,因为现在 get 请求将为您提供ArrayBuffer,但是您强制它返回<Response<InfoType[]>您的响应无法做到。这就是为什么它向您显示错误。

解决方案:

  1. return this.client.get<Response<InfoType[]>>(en...中删除<Response<InfoType[]>它应该看起来像return this.client.get(en...

不过,如果你想传递类型,你可以在订阅这个 observable 的地方进行。

例如:

getData(dataPlan).subscribe((result:Response<InfoType[])=>
{
// result from request
}

推荐阅读