Угловой POST-запрос, полученный в NET Core Api как Null - PullRequest
0 голосов
/ 30 августа 2018

Я отправляю некоторые данные через Angular 6, но мой Core API продолжает возвращать нули:

Запрос:

{"id":0,"name":"test","weight":2,"frequency":2,"activityTypeModelId":3}

Ответ:

{id: 0, name: null, weight: 0, frequency: 0, activityTypeModelId: 0}

Контроллер:

[HttpPost("[action]")]
public IActionResult Add([FromForm]Model model)
{
    return new JsonResult(model);
}

Угловой, используя HttpClient:

add(Model: model) {
     return this.http.post(this.addUrl, model);
}

Модель API:

public class Model
{
    [Key]
    public int Id { get; set; }
    [Required]
    public string Name { get; set; }
    [Required]
    public int Weight { get; set; }
    public int Frequency { get; set; }
    public int ActivityTypeModelId { get; set; }
}

Модель TS:

 export class Model{
   id?: number;
   name?: string;
   weight?: number;
   frequency?: number;
   activityTypeModelId?: number;
 }

Все отлично работает, когда я использую Почтальон. Я уже пробовал с [FromBody]. Где проблема?

Ответы [ 3 ]

0 голосов
/ 31 августа 2018

Я думаю, что в .NET Core 2.1 есть (см. https://docs.microsoft.com/en-us/aspnet/core/web-api/action-return-types?view=aspnetcore-2.1)

HttpPost("[action]")]
//see that I put [FromBody]
public IActionResult Add([FromBody]Model model)
{
    //OK is one of several IActionResult 
    return OK(model);
}
0 голосов
/ 31 августа 2018

Не знаю почему, но это исправило мою проблему:

Я создал заголовок:

 const header = new HttpHeaders()
     .set('Content-type', 'application/json');

Изменена функция POST путем добавления заголовка и JSON.Stringyfy объекта:

 add(model: Model): Observable<Model> {
     const body = JSON.stringify(c);
     return this.http.post<Model>(this.addUrl, body, { headers: header} );
   }

Изменено [FromForm] на [FromBody].

Добавление JSON.stringify(model) в параметры http.post не работало.

JSON, который работает с CORE Api:

{"name":"test","weight":2,"activityTypeModelId":15}

JSON, который не работает с CORE Api:

{name:"test",weight:2,activityTypeModelId:15}

Без заголовка я столкнулся с ошибкой 415. API.

0 голосов
/ 31 августа 2018

Попробуйте

return this.http.post(this.addUrl, JSON.stringify(model) );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...