Nachdem ich Ihre Frage zuerst gelesen hatte, war ich verwirrt ein wenig ...
Warum wird $http.post
verwendet, um eine DELETE-Anfrage zu stellen? Warum wird $http.delete
nicht für diesen Zweck verwendet? Dann lese ich mehr über AngularJS $http.delete
und festgestellt, dass Sie einen Körper an den Server senden können. Dann habe ich mich gefragt, warum sollten Sie in der Lage sein, einen Körper in einer DELETE-Anfrage zu senden. Hier ist eine nette Frage: Is an entity body allowed for an HTTP DELETE request? - Die Spezifikationen erlauben DELETE-Anfragen mit Body-Daten.
Um eine lange Geschichte kurz machen ...
ASP.NET-Core mit JSON-Daten DELETE-Anforderungen verarbeiten kann in dem Körper gesendet. Also ist der Controller Teil gültig.
[HttpDelete]
public async Task<IActionResult> Delete([FromBody]EntityViewModel vm)
{
Um den Statuscode 415 (Nicht unterstützter Medientyp), ist es sehr wichtig, dass das Header-Feld zu vermeiden Content-Type
zu application/json
gesetzt. Ich habe dies in meinen Experimenten mit Postman als Client vergessen und habe auch den Statuscode 415 erhalten.
Für den AngularJS Teil schlage ich vor,
var obj = new Object();
obj.atr1 = 1;
obj.atr2 = 2 ;
$http(
{
method: 'DELETE',
url: route,
headers: {
'Content-Type': 'application/json'
},
data: obj
}
).then(function (response) {
Welche Art von Datentyp zu verwenden ist yout API Route erwartet? –
@SterlingArcher hat die Frage mit der EntityViewModel-Klasse aktualisiert –