我的第一个单独的 Angular 应用程序...
我正在尝试发布到我的全新网络服务并使用以下代码:
headers = new HttpHeaders(
{'Content-Type':'text/plain'}
);
loginUrl = "http://localhost:8093/login";
login(credentials): Observable<String> {
const body = new HttpParams()
.set('payload', 'testing...');
let bodyValue = body.toString()
return this.http.post<String>(this.loginUrl, body,{headers: this.headers})
}
我的 Spring Boot 应用程序抛出异常,因为在获取帖子时,请求中缺少有效负载参数。
我在 Firefox 浏览器中打开了 Web 开发人员网络面板,并看到以下 View :
起初,我认为这是我的 spring 端的错误配置,但我运行了一个curl:
curl --data "payload=testing" http://localhost:8093/login
这很好地进入了我的网络服务。所以 Angular 编码我的参数的方式有些问题。
我找到了这个页面:https://github.com/angular/angular/issues/19535 ,但不确定是否相关。
最佳答案
http.post
的第二个参数是内容正文。您可以通过这种方式传递 URL 参数:
const urlParams = new HttpParams()
.set('payload', 'testing...');
return this.http.post<String>(`${this.loginUrl}?${urlParams}`, '',{headers: this.headers});
如果要将 url 参数传递到正文中,则:
login(credentials): Observable<String> {
const body = new HttpParams()
.set('payload', 'testing...');
let bodyValue = body.toString()
return this.http.post<String>(this.loginUrl, bodyValue,{headers: this.headers})
}
关于javascript - Angular 帖子未按预期提供请求正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48340072/