HTTP GET 请求方法发送“?”而不是“/”

问题描述 投票:0回答:2

我有与 Swagger API 通信的通用方法:

  get<ReturnType>(url: string, params?: HttpParams): Observable<ReturnType> {
    return this.http.get<ReturnType>(environment.apiUrl + url, {
      params: params,
    });
  }

但是当我使用参数发出请求时,它会尝试到达此端点

http://localhost:3000/user/get?id=10
而不是
http://localhost:3000/user/get/10

后端有:

    @Get('get/:id')
    @ApiResponse({ type: UserDto, status: 201 })
    getUser(@Param('id') id: number): UserDto {
      return { id: id, name: 'John Doe', email: '[email protected]' };
    }

错误在哪里,如何修复?

angular swagger nestjs xmlhttprequest
2个回答
0
投票

您希望使用查询参数而不是 url 参数。从

:id
中删除
@Get()
,并使用
@Query('id')
代替
@Param('id')
。一旦你更新了获取请求,其他一切都应该没问题


0
投票

在 Angular 中,您将

id
作为查询字符串参数而不是路径发送。

我相信目前您正在调用

get
方法,如下所示:

let params = new HttpParams()
  .set("id", id);

let obs: Observable<T> = /* service */.get<T>("/user/get", params);

要将

id
作为路径发送,您应该将 URL 构造为“/user/get/10”,而不是使用
HttpParams

let obs: Observable<T> = /* service */.get<T>(`/user/get/${id}`, null);
© www.soinside.com 2019 - 2024. All rights reserved.