使用Angular 5和HTTPClient调用REST POST API

时间:2018-09-12 04:27:44

标签: spring angular rest angular-httpclient

我正在使用Angular为后端创建前端,并且使用HTTPClient调用POST API时遇到麻烦。下面是我的代码:

article.service.ts

@Injectable()
export class ArticleService {
    url = "//localhost:8080/deleteArticle";
    constructor(private http: HttpClient) { }

    deleteArticle(article: Article): Observable<HttpResponse<Article>> {
        return this.http.post<Article>(this.url, article,
            {
              observe: 'response'
            }
        );
    }
}

article.component.ts

@Component({
   selector: 'app-article',
   templateUrl: './article.component.html'
})
export class AcrticleComponent implements OnInit {
  articleForm: FormGroup;
  constructor(private formBuilder:FormBuilder, private articleService: ArticleService) {
  }
  ngOnInit() {
    this.articleForm = this.formBuilder.group({
      title: ['', [ Validators.required ] ]
    });
  }
  onFormSubmit() {
    let article = this.articleForm.value;
    this.deleteArticle(article);
    this.articleForm.reset();
  }
  deleteArticle(article: Article) {
    this.articleService.deleteArticle(article).subscribe(
      article => {
        console.log(article);
      },
      err => {
        console.log(err);
      }
    );
  }
  get title() {
     return this.articleForm.get('title');
  }
}

Spring Controller:

    @PostMapping("/deleteArticle")
    @CrossOrigin(origins = "http://localhost:4200")
    public String deleteArticle(@RequestParam(value = "id") String id) {
        deleteService.deleteArticle(id);
    }

输入标题并点击提交后,它将返回此错误(状态404):

  

{错误:“未找到集合'localhost:8080'”}

您能告诉我我做错了什么以及我的前端角度如何找不到后端端点吗?

1 个答案:

答案 0 :(得分:0)

确保您的Spring应用程序与8080在同一端口上运行,并在http之前添加url。我希望这不是您的问题,但请尝试这样。.

@Injectable()
export class ArticleService {
    url = "http://localhost:4200/deleteArticle";//add http here
    constructor(private http: HttpClient) { }

    deleteAccount(article: Article): Observable<HttpResponse<Article>> {
        return this.http.post<Article>(this.url, article,
            {
              observe: 'response'
            }
        );
    }
}

编辑

添加一个类似于Article的类,并从Id的{​​{1}}类中获取您要发送的Article

Angular Service