Подтвердить что ты не робот

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());
4b9b3361

Ответ 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();
}