You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 13中GET请求URL出现object%20Object引发404错误排查

Angular请求404,URL出现object的解决方案

核心问题定位

你的请求URL出现object是因为product.service.ts里的findProductById方法拼接URL时犯了低级错误:把this.url写成了this.http。this.http是HttpClient的实例对象,在模板字符串中会被序列化为[object Object],最终请求URL变成了[object Object]/product/xxx,自然返回404。

修复代码

修改product.service.ts中的findProductById方法:

findProductById(productId: number) {
  // 把${this.http}改成${this.url},同时注意路径需和后端接口匹配
  return this.http.get<Product>(`${this.url}/products/product/${productId}`);
}

注意:这里的路径/products/product/${productId}需要和你的Spring Boot后端接口路径保持一致,如果后端接口是/product/${id},就写${this.url}/product/${productId}。

额外优化建议

  • 路由参数类型转换
    route.params获取到的id是字符串类型,直接传给服务可能导致后端类型不匹配,建议转成数字:

    this.productId = +data['id']; // 用+号快速转换为数字类型
    
  • 避免嵌套订阅
    嵌套订阅会增加代码复杂度,建议用switchMap操作符优化:

    import { switchMap } from 'rxjs/operators';
    
    ngOnInit(): void {
      this.route.params.pipe(
        switchMap(data => {
          this.productId = +data['id'];
          return this.productService.findProductById(this.productId);
        })
      ).subscribe(data => {
        this.product = data;
        console.log(data);
      });
    }
    
  • 确认列表页跳转逻辑
    确保商品列表页的跳转代码正确,比如使用router.navigate:

    // 示例:列表项点击事件处理
    goToProductDetail(id: number) {
      this.router.navigate(['/products/product', id]);
    }
    

内容的提问来源于stack exchange,提问作者Ruschisb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 10:20:31