Angular 和 Spring 通过 API 通信失败的原因是什么?

问题描述

我已经开始使用 Angular 11 和 Spring Boot 创建一个项目,但是我在通过 API 进行通信时遇到了问题。从 Tomcat 服务器,它从 port 8080 in the path '' 开始。但是在创建新记录时,它向我显示错误 POST http://localhost:4200/api/client 404 (Not Found)

这是我的controler.java

@RequestMapping("/api/client")
public class ClienteController {
 @GetMapping({"/",""})
    public List<Cliente> getAll() throws cmexception {
        return clienteService.findAll();
    }
 @PostMapping({"/",""})
    public Cliente create(@RequestBody Cliente cliente) throws cmexception {
        return clienteService.create(cliente);
    }
}

这是我的environment.ts

export const environment = {
  production: false,baseUrl: '/api'
};

这是我的client.service.ts

const PREFIX = `${environment.baseUrl}/client`;

@Injectable()
export class ClientService implements IForm<Client> {
    constructor(
        private http: HttpClient
    ) {}

    public list(filter: any = {}): Observable<Client[]> {
      return this.http.get<Client[]>(PREFIX,{params: filter});
    }

    public create(client: Client): Observable<Client> {
      return this.http.post<Client>(PREFIX,client);
    }
}

这是我的component.ts

save() {
    if (this.formNew.valid) {
      if (this.isNew) {
        this.clientService.create(this.formNew.value).subscribe(client => {
          console.log(`New client: ${cliente.id}`);
          this.back();
        },error => {
          console.log(`Error client: ${error}`);
        });
      }
   }
}

我使用以下参数创建了 proxy.conf.json 文件

{
  "/api/*": {
    "target": "http://localhost:8080","secure": false,"logLevel": "debug","changeOrigin": true
  }
}

我的问题:是什么问题导致在创建新记录时后台前台之间不进行通信?我应该添加其他东西吗?我对此很困惑,因为我看不到问题

解决方法

export const environment = {
  production: false,baseUrl: 'http://localhost:8080/'
};

在您的环境 ts 文件中设置基本 url

,

在定义 baseUrl 时,您必须将其定义为您的 API URL,即 http://localhost:8080,因为您当前拥有的内容在 baseUrl 中什么都没有,因此它被设置为您的角度 URL'重新运行。您必须在 environment.ts 中设置它,否则 PREFIX 将不会指向您的 API

export const environment = {
  production: false,baseUrl: 'http://localhost:8080'
};

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...