【问题标题】:Get value from back end to front end从后端到前端获取价值
【发布时间】:2020-12-25 08:45:24
【问题描述】:

我在后端 ( Spring boot ) 上有一个 post 方法,当我发布数据时返回 id。

@RequestMapping(value="/fncs", method=RequestMethod.POST)
    public int addFnc(@RequestBody Fnc fnc){
        fncservice.addFnc(fnc);
        return fnc.getN_fnc();
    }

我想在 Angular 服务中创建一个返回 id (number) 的函数,我用这个函数尝试过,但没有成功。

const baseUrl = 'http://192.168.100.9:8081/fncs';



 create(data): Observable<any>  {
       
      return this.http.post(baseUrl, data);
    } 

我执行了函数的工作

【问题讨论】:

    标签: angular spring-boot


    【解决方案1】:

    这应该适用于您的情况。但是,从 Rest Api 直接返回整数并不是最佳实践。您应该考虑将其包装在 JSON 对象中。

       create(data): any  {
               
            this.http.post(baseUrl, data, { responseType: 'text'})
             .subscribe((res) => {
             //response will be parsed as text and we need to convert it to int
             const resInt = + res;   
             console.log(resInt);         
             return resInt;
             }, 
            (error) => {
            console.log(error);
              }
           )
       }
    

    我怀疑你需要它,因为它在这里。但是,您可以检查这是否适用于您看到响应的情况。实际上,您需要在服务上使用 subscribe 方法,而不是在任何您想对响应做某事的地方。

    【讨论】:

    • 你的代码有很多错误,你定义了返回observable的函数,你返回resInt(谁是int类型,没有定义)
    • 是的,谢谢。我没有编译它并快速编写它只是为了指出这个东西是如何工作的。现在我已经更正了。
    • prblm 出错:错误没有重载匹配此调用。最后一个重载给出了以下错误。 '(error: any) => number' 类型的参数不可分配给 '() => void'.ts(2769) Observable.d.ts(54, 5) 类型的参数:最后一个重载在这里声明。
    • 仍然是相同的prblm:'(错误:任何)=>数字'类型的参数不可分配给'(错误:任何,捕获:Observable)类型的参数=> ObservableInput'。类型 'number' 不可分配给类型 'ObservableInput'.ts(2345
    • 使用更新的答案重试。这应该会清除所有错误。但是,您需要在此处而不是在您要调用此服务的任何位置附加此订阅功能。然后这个订阅函数不能返回一个值,而是将返回的值放入组件的另一个值中。因此,如果您的组件调用此服务,它必须像 service.create().subscribe((res) => { console.log(res); this.componentData = res; });所以 subscribe 不会返回任何东西,它只是将值放入另一个变量中,该变量将留在组件内
    【解决方案2】:
    You could just add the ".subscribe" method to receive the data after finishing the post request and dealing with the coming output like this:
    
        create(data): any{    
            this.http.post(baseUrl, data).subscribe({
            next: data=>{
               return data
            },
            error: error => {
            return 0
    }
    })
            
        }
    

    【讨论】:

    • 所以现在当我从服务中调用 create methode 时,她会为我返回号码?
    • @HamzaNouri 逻辑明智,如果您在设置后返回值,则应该是。我自己目前无法实现它,所以请执行并检查。
    • data.id id 在哪里后端的 all 方法返回编号我不发送一个名为 id 的变量
    • 你可以记录你返回的数据,然后决定你想要返回什么。
    猜你喜欢
    • 2019-03-07
    • 2014-04-16
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    • 2021-07-01
    • 1970-01-01
    相关资源
    最近更新 更多