首页 > 解决方案 > springboot和ionic如何通信?

问题描述

我正在使用带有 spring boot web 服务的 ionic 4,问题是在我的手机中安装应用程序后,web 服务没有运行?

我在 Controller.java 中使用

@CrossOrigin(origins = "*")
@RestController
public class CarController {
    @Autowired
    CarRepository carRepository;
    
    @GetMapping(path = "/cars")
    public ResponseEntity<List<Car>> retriveCars() {
        try {
            List<Car> cars = new ArrayList<>();
            carRepository.findAll().forEach(cars::add);
            
            
            if (cars.isEmpty()) {
                return new ResponseEntity<>(null, HttpStatus.NO_CONTENT);
            }
            return new ResponseEntity<>(cars, HttpStatus.OK);
        }catch(Exception e) {
            return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR);
        }
    }
    
    @PostMapping(path = "/car")
    public ResponseEntity<Car> saveCar (@RequestBody Car car) {
        try {
            Car _car= carRepository.save(new Car(UUID.randomUUID(), car.getMake(), car.getModel()));
            return new ResponseEntity<>(_car, HttpStatus.CREATED);
        }
        catch(Exception e) {
            System.out.println(e);
            return new ResponseEntity<>(null, HttpStatus.EXPECTATION_FAILED);
            
        }
    }

并在 api.service.ts

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

@Injectable({
  providedIn: 'root'
})
export class ApiService {
  constructor(private http: HttpClient) { }

  baseUrl='http://localhost:8081';

  retrieveCars(){
    return this.http.get<Car[]>(this.baseUrl+ '/cars');
  }

  saveCar(car: Car) {
    return this.http.post<Car>(this.baseUrl+'/car', car);
  }

我的问题是我如何在 ionic 和 springboot 中进行交流? 我需要帮助

标签: spring-bootionic4

解决方案


是的,它不起作用,因为http在手机和模拟器中提供了混合数据....它可以完美地与浏览器一起使用,但不能与模拟器和设备一起使用

解决方案很简单,只需使用https在 baseUrl 中的 api.service.ts 中获取数据,其他一切都很好

https ://localhost:8081

baseUrl='http://localhost:8081';


推荐阅读