Почему string / json отправляется в почтовом запросе в .netcore web api, что приводит к нулю? - PullRequest
0 голосов
/ 28 марта 2019

У меня есть массив, который я конвертирую в JSON, используя JSON.stringify

const arrayOfUpdatesAsJSON = JSON.stringify(this.ArrayOfTextUpdates);

Это выводит некоторый допустимый JSON.

[{"key":"AgentName","value":"Joe Blogs"},{"key":"AgentEmail","value":"Joe@test.com"}]

Поскольку я собираюсь отправлятьJSON серверу Я установил тип контента для application / json

const httpOptions = {
  headers: new HttpHeaders({
    'Content-Type':  'application/json',
  })
};

Когда нажата кнопка, я делаю запрос с URL, телом и заголовком.

try {
  this.httpservice
    .post(
      url,
      arrayOfUpdatesAsJSON,
      httpOptions
    )
    .subscribe(result => {
      console.log("Post success: ", result);
    });
} catch (error) {
  console.log(error);
}

Это работаетнормально и попадает в метод, который я ожидаю внутри API.

    [HttpPost("{id:length(24)}", Name = "UpdateLoan")]
    public IActionResult Update(string id, string jsonString)
    {
        Console.WriteLine(jsonString);
        ... and some other stuff
    }

Идентификатор заполняется внутри построителя URL, который заполняется нормально.Затем я ожидал бы, что содержимое моей переменной jsonString внутри API будет заполнено json моего запроса, однако оно всегда будет нулевым.Чего мне не хватает?

1 Ответ

1 голос
/ 28 марта 2019

Во-первых, вам нужно пометить jsonString с помощью [FromBody], чтобы сказать, что связыватель модели связывает параметр из опубликованного json. И поскольку вы ожидаете простого string значения, вам нужно передать действительный json string (не object), поэтому вам нужно вызвать дополнительный JSON.stringify в javascript

const jsonArray = JSON.stringify(this.ArrayOfTextUpdates);
const arrayOfUpdatesAsJSON = JSON.stringify(jsonArray);

this.httpservice
    .post(
      url,
      arrayOfUpdatesAsJSON,
      httpOptions
)

Контроллер

[HttpPost("{id:length(24)}", Name = "UpdateLoan")]
public IActionResult Update(string id, [FromBody] string jsonString)
...