Angular 2/Web Api - json синтаксическая ошибка синтаксиса ошибка неожиданный конец ввода
У меня есть API-интерфейс API, который выглядит так:
[HttpPost]
public IHttpActionResult Test()
{
return Ok();
}
Это правильный синтаксис. Однако, когда я пытаюсь вызвать это из службы в Angular 2, я получаю сообщение об ошибке: "json parsing ошибка синтаксиса ошибки неожиданный конец ввода". Чтобы решить эту проблему, я должен поместить значение в ActionResult, например
return Ok(1)
Не хватает ли какой-либо конфигурации? Мой вызов службы Angular 2 выглядит следующим образом:
return this.http.post(API/Controller/Test).map(res => res.json());
Ответы
Ответ 1
Я предполагаю, что когда вы получаете пустой ответ (без полезной нагрузки), вам не нужно вызывать метод json
. Под капотом ответ XHR undefined, JSON.parse(undefined)
вызывается и выдается ошибка.
Вы можете пропустить вызов оператора map
:
return this.http.post(API/Controller/Test)/*.map(res => res.json())*/;
Ответ 2
Другой способ:
Весь мой http.get, post или put call (для единообразия):
.map(this.extractData)
В extractData (ОБНОВЛЕНО: благодаря обратной связи Raykrow, короткий код):
private extractData(res: Response) {
return res.text() ? res.json() : {}; ;
}
Ответ 3
Строго говоря, если ваш API возвращает код ОК без содержимого, вы должны вернуть 204 (без содержимого) - Angular тоже будет доволен этим, а не пытаться разобрать что-либо. Таким образом, ваш метод управления станет следующим:
[HttpPost]
public IHttpActionResult Test()
{
return NoContent();
}