从angular8中命中端点返回404

问题描述 投票:0回答:1

这是我第一次在angular8中进行练习。我正在尝试制作使用使用springboot编写的API的表单。尝试从angular8使用它时,永远不会执行用spring-boot编写的api,这是端点

http://localhost:8080/api/startreg




@PostMapping("/startreg")
    public ResponseData<Activity> addReg(
            @RequestParam(value="firstDate") String firstDate,@RequestParam(value="secondDate") String secondDate
            ,@RequestParam(value="username") String username) {

            try {

这是service.ts脚本

private baseUrl = 'http://localhost:8080/api/startreg';
createReg(activity: Object): Observable<Object> { 
    return this.http.post('${this.baseUrl}', activity);
  }

显示angular8的html文件

<form (ngSubmit)="onSubmit()">

              <div class="col-md-3 col-sm-5 col-xs-12 gutter">
                <div class="sales">
                  <h2>From:</h2>
                  <div class="btn-group">              
                   <select [(ngModel)]="activity.firstDate" class="form-control" name="firstDate"> 

当我尝试从下面的浏览器控制台提交表单时出现错误

HttpErrorResponse {headers: HttpHeaders, status: 404, statusText: "Not Found", url: "http://localhost:4202/$%7Bthis.baseUrl%7D", ok: false, …}

请找出错误的地方

api spring-boot angular8
1个回答
0
投票

因为this.http.post('${this.baseUrl}', activity);不会调用this.baseUrl值的服务,所以您会根据错误消息找出原因。您传递给post的URL仍然是string而不是variable

请如下修改service.ts

...
    return this.http.post(this.baseUrl, activity);
}

UPDATE

另一个问题是您的服务使用了请求参数,因此您必须在service.ts中为HTTP请求传递这些URL参数。

有效网址应如下所示:http://localhost:8080/api/startreg?firstDate=XXX&secondDate=XXX&username=XXX

但是我不熟悉TypeScript,所以我不知道该怎么做。也许您可以参考此Angular2 - Http POST request parameters

© www.soinside.com 2019 - 2024. All rights reserved.