【发布时间】:2021-06-16 15:55:59
【问题描述】:
我用 .Net5 和 Angular 前端实现了一个简单的服务器。我的 api 适用于邮递员,但前提是我将 Content-Type 设置为等于 application/x-www-form-urlencoded。当我使用 Content-Type 等于 application/json 时,服务器会收到空的 json。当我使用我的前端时,我想我会向服务器发送一个应用程序/json,因为它接收的是空的。在我的代码下方。
api.service.ts
public createProva(prova:Iprova): Observable<Iprova> {
return this.http.post<Iprova>( this.Url, prova );
}
当我 console.log prova 它返回一个正确的 Json
controller.cs
[HttpPost]
[Route("url")]
public async Task<IActionResult> postProva(provaDto s)
{
porvaModel prova = new provaModel
{
Id = s.id,
Name = s.name
};
_context.provaModel.Add(prova);
await _context.SaveChangesAsync();
return CreatedAtAction(nameof(getProva), new { id = prova.Id }, prova);
}
但是当后端收到provaDto时,s为空,id等于0,name等于null.
【问题讨论】:
-
“当我使用 Content-Type 等于 application-json 时,服务器会收到空的 json。” 这是
application/json,而不是application-json。 -
“当我 console.log 证明它返回一个正确的 Json” 这是什么意思?你的类型是
Iprova。如果是 JSON,它将是一个字符串。 JSON 是一种用于数据交换的文本符号。 (More here.) 如果你正在处理 JavaScript/TypeScript 源代码,而不是处理 string,那么你就不是在处理 JSON。 -
我看到你已经改变了问题,所以它现在使用
application/json而不是application-json。但是您在测试时是否真的使用了正确的值?
标签: json angular api http-post .net-5