首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从angular8命中端点返回404

从angular8命中端点返回404
EN

Stack Overflow用户
提问于 2019-10-24 20:49:06
回答 1查看 77关注 0票数 0

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

代码语言:javascript
复制
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脚本

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

angular8的html文件如下所示

代码语言:javascript
复制
<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"> 

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

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

请告诉我哪里弄错了

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-25 01:16:50

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

请修改service.ts如下:

代码语言:javascript
复制
...
    return this.http.post(this.baseUrl, activity);
}

更新

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

有效的URL应该如下所示:

http://localhost:8080/api/startreg?firstDate=XXX&secondDate=XXX&username=XXX

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

顺便说一句,我强烈建议您应该使用@RequestBody而不是@RequestParam来进行POST服务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58548951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档