swagger HTTP GET请求方法发送'?'而不是'/'

y53ybaqx  于 2023-11-18  发布在  其他
关注(0)|答案(3)|浏览(220)

我有一个通用的方法来与我的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]' };
    }


错误在哪里,我该如何弥补?

rqcrx0a6

rqcrx0a61#

您希望使用查询参数而不是url参数。从@Get()中删除:id,并使用@Query('id')代替@Param('id')。一旦更新get请求,其他一切都应该正常

snz8szmq

snz8szmq2#

在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);

cigdeys3

cigdeys33#

你必须给予一个路径变量给url而不是请求参数,如果你想得到这个url -http://localhost:3000/user/get/{id}
用这个,

get<ReturnType>(url: string, id:any): Observable<ReturnType> {
    return this.http.get<ReturnType>(`${base_url}/user/get/${id}`);
  }

字符串

相关问题