Конечная точка .NET Core 2 не привязывает параметры для FromBody на POST - PullRequest
0 голосов
/ 29 апреля 2018

Я делаю следующий вызов в моем приложении Angular.

this._client.post(
  "http://localhost:4300/api/Beep",
  { name: name, email: email })
  .subscribe(...);

Я также пытался с явным конфигом заголовка.

this._client.post(
  "http://localhost:4300/api/Beep",
  { name: name, email: email }),
  { headers: new HttpHeaders({ "Content-Type": "application/json" }) }
  .subscribe(...);

Точка останова определяется следующим способом.

[HttpPost("Beep")]
public IActionResult RequestNetwork(
  [FromBody]string name, 
  [FromBody]string email)
{
  ...
  return Ok();
}

Проблема в том, что оба поля являются нулевыми.

Я не совсем уверен, что я делаю что-то глупое в вызове на стороне фронтэнда или бэкэнда. Я проверил код по сравнению с блогами, такими как этот . Моя ставка на первый, потому что я следовал за Angular docs , а также я запустил Почтальон (установив для Content-Type значение application / json и отправив {имя: "qqq", адрес электронной почты: "www"} как необработанный). Тот же результат для каждой комбинации параметров, которые я пробовал.

Исходя из этого предположения, я искал что-то похожее на " обязательный основной пост от тела ", включая варианты, которые я мог придумать. Я не нашел ничего, что я бы признал связанным или бесполезным (возможно, из-за недостатка опыта или разочарования).

В чем может быть проблема здесь, и что я должен искать конкретно, чтобы решить ее (или, по крайней мере, углубиться в ошибку, на которой я застрял)?

1 Ответ

0 голосов
/ 29 апреля 2018

попробуйте использовать класс

public class DataType
{
   public string name { get; set; }
   public string email { get; set; }
}

//in your api
[HttpPost, ActionName("Beep")]
public IActionResult RequestNetwork([FromBody]DataType value)
{
  string name=value.name;
  string email=value.email;
  ...
  return Ok();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...