angular - 尽管 Postman 成功,Angular6 HttpClient Post 方法不起作用?
问题描述
我的 postmethod 代码如下:
postMetadata(titleParam, rankParam) {
let headers = new HttpHeaders();
headers = headers.append(
"Authorization",
"Bearer " + this.adalService.userInfo.token
);
headers = headers.append(
"Content-Type",
"application/x-www-form-urlencoded"
);
const params = new HttpParams()
.append("title", titleParam)
.append("rank", rankParam)
.append("createdBy", "Test");
console.log(params, headers);
return this.http.post(this.ROOT_URL + "bms/metadata", {
"title": titleParam,
"rank": rankParam,
"createdBy": "Test"
}, { headers })
}
我也尝试放置 { params } 并在那里使用该 HttpParams 对象,结果相同。还尝试将它们一个接一个地放置 { params, headers } 在这种情况下,我会得到“未经授权”,我敢肯定,这是因为它无法正确解析整个事情并且令牌混淆了。
使用邮递员,我已经从控制台复制粘贴了令牌,以便能够发出请求并且一切正常,并将内容添加到数据库中。
在 Angular 的情况下,后端请求的确切错误是:
Error updating the dataabase { RequestError: Invalid column name 'undefined'.
如果我尝试登录控制台 req.query.title 等等,我得到的只是到处都是“未定义”。
后端基本上是 express + mssql (tedious.js) + passport-azure-ad。
解决方案
我已经坚持了几个小时,再一次,在堆栈上发布后的几分钟内就解决了。
我必须设置以下内容:
"Content-Type",
"application/json"
出于某种奇怪的原因,我在控制台中遇到了错误?将进一步调查。错误:
编辑:也已修复,这是 HttpClient 服务请求的完整最终工作代码:
postMetadata(titleParam, rankParam) {
let headers = new HttpHeaders();
headers = headers.append(
"Authorization",
"Bearer " + this.adalService.userInfo.token
);
headers = headers.append(
"Content-Type",
"application/json"
);
let body = { "title": titleParam, "rank": rankParam, "createdBy": "TestingCreation" }
const data = JSON.stringify(body);
return this.http.post(this.ROOT_URL + "bms/metadata", data , { headers, responseType: 'text' })
}
推荐阅读
- wpf - 有没有办法在 WPF 中使用字母间距
- reactjs - 无法识别的事件 React Native Redux
- javascript - 在 vuejs 中求和来自 v-model 的可选值的问题
- django - Django:当我尝试使用显示无效语法的 path() 在 url 中进行输入时
- google-chrome - Chrome 的 Intl.DateTimeFormat().resolvedOptions().timeZone 值
- botframework - 在 Azure Bot 上查看以前的用户消息
- python - 无法在 CentOS v8 上通过 yum 安装 mod_wsgi
- docker - jupyter notebook/labs 的代码是否有真正的配置?
- html - 如何使用 Visual Studio Code 在 html 文档中的两个标签之间添加选择?
- vue.js - Vuex 导入未定义的商店