CRUD mit ASP.NET Web API und AngularJS

In Zuge einer Vorbereitung eines Vortrages, wollte ich den nötigen JavaScript Code auf ein Minimum reduzieren. Dabei habe ich mich beinahe in ngResource verliebt. ASP.NET Web API und Angular sind mit $resource ein fast perfektes Paar.

ngResource kapselt das $http Objekt und stellt die REST typischen Methoden nativ zur Verfügung.

Laut Doku

{ 'get':    {method:'GET'},
  'save':   {method:'POST'},
  'query':  {method:'GET', isArray:true},
  'remove': {method:'DELETE'},
  'delete': {method:'DELETE'} };

Es fehlt in der Auflistung das Gegenstück zum SQL Update, typischerweise mit HTTP PUT oder eher selten mit PATCH ausgeführt. Glücklicherweise lässt sich im $resource Objekt nicht nur der Web API HTTP Endpunkt, sondern auch eine zusätzliche Update Methode deklarieren.

   1:  App.factory('myFactory', function ($resource) {
   2:              return $resource('/api/customers/:id', {}, {
   3:                  'update': { method: 'PUT' }
   4:                              });
   5:   
   6:          });

Es ist zwar nicht nötig $resource in einen Angular Service (factory) zu kapseln, erleichtert aber die spätere Nutzung. Um einen einfache Liste aller Customer zu bekommen reicht es den Aufruf myFactory.query() zuzuweisen. Folgender prototypisch aber funktioneller Code Beispiel ,liest einen Datensatz per REST Call, aktualisiert diesen per ID und Objekt und fügt einen neuen Satz ein.

   1:   App.controller('myController', function ($scope, myFactory) {
   2:              $scope.vm = myFactory.get({ id: 'ALFKI' });
   3:   
   4:              $scope.save = function (vm) {
   5:                  myFactory.update({ id: 'ALFKI' }, vm);
   6:              };
   7:              $scope.insert = function (vm) {
   8:                  myFactory.save(vm);
   9:              };
  10:   
  11:   
  12:          });

Der ASP.NET Web API Controller besteht dabei aus den den Standard Methoden, generiert aus einem EF Model.

Ich führe für ppedv AngularJS Trainings durch.

Kommentare sind geschlossen