2016-05-26 8 views
2

Ich versuche, eine HTTP-Löschanforderung an meine API zu tun, aber der Aufruf schlägt fehl. Die Methoden Get und Post funktionieren einwandfrei, nicht jedoch der Löschaufruf. Meine Vermutung ist, dass das Problem auf dem Client-Code ist, aber nicht herausfinden kann, was. Dies ist der Code des Client

 $http.delete("http://localhost:69174/api/posts", postId) 
      .then(function (response) { 

       // sucess delete 
       viewModel.posts.delete(response.data); 
       viewModel.newPost = {}; 

      }, function() { 

       // failed to delete 
       viewModel.errorMessage = "Failed to delete post"; 

      }) 
      .finally(function() { 

      }); 

und dies ist die API-Funktion

// DELETE api/values/5 
    [HttpDelete("{id}")] 
    public async Task Delete(Guid id) 
    { 
     await _postsRepo.DeletePostAsync(id); 
    } 

man auch mehr Frage, was ist die beste Praxis machen dies zu http vom Client an die API-Aufrufe, Anfragen machen direkt aus mein AngularJs-Controller oder der ASP.NET-Controller? Diese

+0

Haben Sie die Ziel-URL in den Entwickler-Tools bestätigen? – robjam

+0

Ja, tat ich. Ich konnte arbeiten und postete wie ich, aber ich frage mich, warum es nicht mit meiner vorherigen Implementierung funktionierte, und ob es eine bessere Lösung gibt. –

Antwort

0

erlaubt der Aufruf zu sein sucessful, aber nicht sicher, ob es eine gute Praxis ist auch eine ID über die URL zu übergeben, wenn das Löschen

$http.delete("http://localhost:69174/api/posts/" + postId) 
     .then(function (response) { 
      ... 
     }, function() { 
      ... 
     }) 
     .finally(function() { 
      ... 
     }); 
+0

"nicht sicher, ob es eine gute Übung ist, eine ID über die URL selbst beim Löschen ", ist es in Ordnung, und ein Standard von RESTful Design. Wenn der Rest Ihrer API den Grundlagen des REST-Designs entspricht, sollten Sie '$ resource' anstelle von' $ http' verwenden, um eine einfachere Abstraktion zu erhalten. – Snixtor

+0

Ja, der Rest meiner API folgt RESTful Design. Wie würde ich das tun? Ich versuchte nur $ http mit $ Ressource auf meinem Code zu ersetzen und es macht nicht den Aufruf an die API –

+0

oh und vielen Dank für Ihr Feedback auf die Frage der guten Praxis :) –

Verwandte Themen