J'ai un contrôleur API Web qui ressemble à ceci:
[HttpPost]
public IHttpActionResult Test()
{
return Ok();
}
Ceci est la syntaxe correcte. Cependant, lorsque j'essaie d'appeler un service depuis Angular 2, je reçois le message d'erreur suivant: "json analyse d'erreur de syntaxe erreur de fin inattendue." Pour résoudre ce problème , Je dois mettre une valeur dans ActionResult telle que
return Ok(1)
Est-ce que je manque une configuration? Mon appel de service Angular 2) ressemble à ceci:
return this.http.post(API/Controller/Test).map(res => res.json());
J'imagine que lorsque vous recevez une réponse vide (sans charge utile), vous n'avez pas besoin d'appeler la méthode json
. Sous le capot, la réponse XHR est indéfinie, JSON.parse(undefined)
est appelé et une erreur est générée.
Vous pouvez ignorer l'appel de l'opérateur map
:
return this.http.post(API/Controller/Test)/*.map(res => res.json())*/;
Autrement:
Tous mes http.get, post ou put call (pour l'uniformité):
.map(this.extractData)
Dans extractData (MISE À JOUR: grâce au feed-back de Raykrow, code court):
private extractData(res: Response) {
return res.text() ? res.json() : {}; ;
}
Strictement parlant, si votre API renvoie un code OK sans contenu, vous devez renvoyer 204 (aucun contenu) - Angular serait également satisfait de cela et ne chercherait rien à analyser. Par conséquent, votre méthode de contrôleur devenir:
[HttpPost]
public IHttpActionResult Test()
{
return NoContent();
}