2016-12-15 3 views
0

Wie normale Reaktion in WEB API2 erstellen, anstatt immerC# web api allgemeine Antwort für Erfolgsstatus

return Ok(new { success = true }); 

So schreibe ich dies tue und dann in winklig wenn reponse.success === 'true'

public IHttpActionResult Add(MyModel model) 
     { 
      if (ModelState.IsValid) 
      { 
       _helper.Create(model); 
      } 

      return Ok(new { success = true }); 
     } 
+0

Warum gibt es nicht nur ein leeres OK, das ausreicht, um einen Erfolg zu erzielen? Sie können andere Codes zurückgeben, wenn dies nicht erfolgreich ist. –

+0

wie meinst du leer OK? Problem ist, dass ich die Antwort in Winkel überprüfen muss – mbrc

+0

Nur 'zurück Ok()' –

Antwort

0

Es hängt von Ihren Bedürfnissen ab. Sie möchten eine generische Klasse erstellen, die Ihren Status der Antwort enthält? In diesem Fall können Sie eine Klasse für allgemeine Zwecke erstellen.

public class Response 
{ 
    /// <summary> 
    /// Gets or sets a value indicating whether this instance is success. 
    /// </summary> 
    /// <value> 
    /// <c>true</c> if this instance is success; otherwise, <c>false</c>. 
    /// </value> 
    public bool IsSuccess { get; set; } 

    /// <summary> 
    /// Gets or sets the error message. 
    /// </summary> 
    /// <value> 
    /// The error message. 
    /// </value> 
    public string ErrorMessage { get; set; } 
} 

Und danach können Sie verwenden, wie folgt aus:

return Ok<Response>(new Response { ErrorMessage = "", IsSuccess = true }); 

Oder Sie können ohne Parameter nur die OK-Antwort verwenden und überprüfen Sie den Statuscode des Antrags auf Ihrer Winkel App:

return Ok(); 

Angular Teil:

$http({ 
     method: 'GET', 
     url: '/someUrl' 
    })}).then(function successCallback(response) { 
     //If it's Ok -> 200 HTTP 
    }, function errorCallback(response) { 
     //If error occured -> 500 HTTP etc. 
    }); 
+1

Die erste Option ist, was OP zu vermeiden, ständig zu tun. Die zweite Option entspricht mehr dem, was benötigt wird. – ColinM

0

Wenn Sie Ok() von Ihrer API zurückgeben, wird tatsächlich ein HTTP Status Code 200 gesendet. Das wird von Angulars AJAX-Funktionen verwendet, um zu bestimmen, ob Sie Ihre success- oder error-Funktionen aufrufen möchten. Es gibt many other status codes that can be sent, jedoch haben nicht alle direkte Web API 2-Klassen, um sie einzukapseln.

Zurückgeben nur Ok() würde ausreichen, um Ihrer Anwendung zu sagen, dass es gelungen ist. Sie möchten andere Informationen (Ihr Objekt) hinzufügen, wenn während des Anrufs mehrere Dinge passieren können. Da Ihre Aktionsmethode z. B. Add() heißt, möchten Sie unter Umständen die ID des Objekts zurückgeben, das Sie gerade erstellt haben. Wenn dies jedoch nicht erforderlich ist, müssen Sie dies nicht tun.

Was Sie tun sollten, ist nichts im Körper zurückgeben, und wenn Sie Ihre success Angular-Funktion treffen, dann ist es gelungen. Wenn während des Anrufs etwas passiert ist, wird keine OK/200-Antwort zurückgegeben, und stattdessen wird error aufgerufen.