从 Typescript POST 到 Web API API,无法传递 JSON 对象
Posted
技术标签:
【中文标题】从 Typescript POST 到 Web API API,无法传递 JSON 对象【英文标题】:POST from Typescript to Web API API, unable to pass a JSON Object 【发布时间】:2017-05-26 18:36:26 【问题描述】:我正在尝试将来自 typescript POST 调用的 JSON 对象传递给 Web API 方法。 Fiddler 显示该对象已转换为 JSON,并且 Content-Type 为“application/JSON”。但在 API 控制器上,参数值显示为 null 而不是 JSON。
打字稿:
createPO(product: string): Promise<string>
var headers = new Headers();
headers.append('Content-Type', 'application/json');
let options = new RequestOptions( headers: headers );
return this._http.post(this._creatPOUrl, JSON.stringify(product), options)
.toPromise()
.then(response => <string>response.statusText)
.catch(this.handleError);
网络 API: [HttpPost] 公共异步任务 CreatePOInMO([FromBody] 字符串产品) 返回确定();
产品包含空值。 如果我从 typescript(这是一个 JSON) 传递产品对象内部的实际值,它就可以工作。但我不能像这样硬编码。
我关注了这个帖子:Angular2 Service not passing JSON to WebAPI 但看起来我正在做这里提到的任何事情。
【问题讨论】:
您能发布您的 WEB-API 配置吗?我想 JSON 转换器不期望 JSON 格式与标准 JSON 相同,例如我在从前端发布 name: 'test' 时遇到了类似的问题,be 中的预期类是 Name: 'test ' 因为骆驼案例,WEB-API 标准转换器无法翻译响应。还有一个请求可能会有所帮助 【参考方案1】:在Angular 2中,当posting JSON with the Http client时,你不应该调用JSON.stringify
:
this._http.post(this._creatPOUrl, product, options)
【讨论】:
将其更改为:var POCartItems = JSON.stringify(product);返回 this._http.post(this._creatPOUrl, POCartItems, options) 并在 Web API: [HttpPost]public async TaskJSON.stringify
呼叫不是必需的。查看链接的文档/指南。以上是关于从 Typescript POST 到 Web API API,无法传递 JSON 对象的主要内容,如果未能解决你的问题,请参考以下文章
从0到1封装表单组件(TypeScript + Vue3.0 版)
TypeScript POST API 请求错误 400 - 错误请求
使用 JWT 的 API 客户端身份验证 — Node/TypeScript