首页 > 解决方案 > 从 Angular 客户端到 Spring 的 GET 请求

问题描述

我的页面上有 2 个文本框和一个用于求和的按钮。我将我的号码发送到服务器并得到 404 和 HttpErrorResponse。我的服务器接受这些值但不发回响应。我想从服务器获得我的价值。

我在控制器中的方法。

@CrossOrigin(origins = "http://localhost:4200")
    @GetMapping("/greeting")
    public String greeting(@RequestParam String num1, @RequestParam String num2) {
        int sum = 0;
        System.out.println("num1 = "+num1);
        System.out.println("num2 = "+num2);

        try{
            int n1 = Integer.parseInt(num1);
            int n2 = Integer.parseInt(num2);

            sum = n1+n2;
            System.out.println("sum ="+sum);
        }
        catch (Exception|Error e){
            e.printStackTrace();
        }

        return Integer.toString(sum);
    }

Angular 的组件:

import { Component, OnInit } from '@angular/core';
import { CalculateService } from './calculate.service';


@Component({
  selector: 'app-testsum',
  templateUrl: './testsum.component.html',
  styleUrls: ['./testsum.component.css'],
  providers: [ CalculateService]
})
export class TestsumComponent implements OnInit {

   sum:number;
   num1:number;
   num2:number;
   done:boolean=false;

  constructor(private calculateService: CalculateService) { }

  submit(){
        let rez = this.calculateService.getSum(this.num1, this.num2).subscribe(data => this.sum);
        console.log("rez = "+rez);
        console.log("sum = "+this.sum);
    }

  ngOnInit(): void {
  }

}

服务:

import {Injectable} from '@angular/core';
import {HttpClient} from '@angular/common/http';

@Injectable()
export class CalculateService{

    constructor(private http: HttpClient){ }

    getSum(num1: number, num2: number){
        return this.http.get('http://localhost:8090/greeting?num1=' + num1 + "&num2=" + num2);
    }
}

标签: angularspringspring-bootspring-mvc

解决方案


您应该将您的响应包装在 a 中ResponseEntity,它是负责为您的响应提供状态的实体,例如您在此处响应 ok,因此状态将为 200

@CrossOrigin(origins = "http://localhost:4200")
    @GetMapping("/greeting")
    public ResponseEntity<String> greeting(@RequestParam String num1, @RequestParam String num2) {
        int sum = 0;
        System.out.println("num1 = "+num1);
        System.out.println("num2 = "+num2);

        try{
            int n1 = Integer.parseInt(num1);
            int n2 = Integer.parseInt(num2);

            sum = n1+n2;
            System.out.println("sum ="+sum);
        }
        catch (Exception|Error e){
            e.printStackTrace();
        }

        return ResponseEntity.ok().body(Integer.toString(sum));
    }

推荐阅读