Egyszerű AngularJS front-end egy REST API-hoz

1. Áttekintés

Ebben a gyors oktatóanyagban megtudhatjuk, hogyan használhatunk egy RESTful API-t egy egyszerű AngularJS kezelőfelületről.

Meg fogjuk jeleníteni az adatokat egy táblázatban, létrehozunk egy erőforrást, frissítjük és végül töröljük.

2. A REST API

Először vessünk egy gyors pillantást az egyszerű API-ra - tegyük ki a Feed erőforrás oldalszámozással:

  • lapozzon - KAP / api / myFeeds? page = {page} & size = {size} & sortDir = {dir} & sort = {propertyName}
  • létrehozni - POST / api / myFeeds
  • frissítés - PUT / api / myFeeds / {id}
  • törlés - TÖRÖL / api / myFeeds / {id}

Egy rövid megjegyzés, hogy a lapozás a következő 4 paramétert használja:

  • oldalt: a kért oldal indexe
  • méret: oldalankénti rekordok maximális száma
  • fajta: a rendezésnél használt tulajdonság neve
  • sortDir: a rendezési irány

És itt van egy példa arra, hogy mi a Feed forrás néz ki:

{"id": 1, "name": "baeldung feed", "url": "/ feed"}

3. A hírcsatornák oldal

Most nézzük meg a hírcsatornák oldalt:

      Új RSS-hírcsatorna hozzáadása 
{{row.name}}{{row.url}} Szerkesztés Törlés

Ne feledje, hogy az ng-table-t használtuk adatok megjelenítésére - erről a következő szakaszokban olvashat bővebben.

4. Szögvezérlő

Ezután vessünk egy pillantást az AngularJS vezérlőnkre:

var app = szögletes.modul ('myApp', ["ngTable", "ngResource"]); app.controller ('mainCtrl', function ($ hatókör, NgTableParams, $ erőforrás) {...});

Vegye figyelembe, hogy:

  • Fecskendeztük a ngTable modul segítségével adatainkat egy felhasználóbarát táblában jeleníthetjük meg, és kezelhetjük a lapozás / rendezés műveleteket
  • Mi is beadtunk injekciót ngResource modul a REST API-erőforrásaink eléréséhez használja

5. Egy AngularJS DataTable

Vessünk egy gyors pillantást a ng-table modul - itt van a konfiguráció:

$ scope.feed = $ erőforrás ("api / myFeeds /: feedId", {feedId: '@ id'}); $ scope.tableParams = new NgTableParams ({}, {getData: function (params) {var queryParams = {page: params.page () - 1, size: params.count ()}; var sortingProp = Object.keys (params .sorting ()); if (sortingProp.length == 1) {queryParams ["sort"] = sortingProp [0]; queryParams ["sortDir"] = params.sorting () [sortingProp [0]];} return $ hatókör.feed.query (queryParams, függvény (adatok, fejlécek) {var totalRecords = fejlécek ("PAGING_INFO"). split (",") [0] .split ("=") [1]; params.total (totalRecords ); visszatérési adatok;}). $ ígéret;}});

Az API egy bizonyos stílusú lapozást vár, ezért ezt a táblázatban kell testre szabnunk, hogy megfeleljen annak. Használjuk params kívül ng-modul és létrehozzuk a sajátunkat queryParams itt.

Néhány további megjegyzés a lapozásról:

  • params.page () 1-től kezdődik, ezért arra is figyelnünk kell, hogy nulla indexelésű legyen, amikor kommunikálunk az API-val
  • params.sorting () egy objektumot ad vissza - például {“Név”: “asc”}, ezért el kell különítenünk a kulcsot és az értéket két különböző paraméterként - fajta, sortDir
  • kivonjuk a teljes elemszámot a Válasz HTTP fejlécéből

6. További műveletek

Végül sok műveletet hajthatunk végre ngResource modul - $ erőforrás lefedi a teljes HTTP szemantikát az elérhető műveletek szempontjából. Meghatározhatjuk egyedi funkcióinkat is.

Használtuk lekérdezés az előző szakaszban a hírcsatornák listájának megszerzéséhez. Vegye figyelembe, hogy mindkettő kap és lekérdezés csinálni KAP - de lekérdezés tömb válasz kezelésére szolgál.

6.1. Új hozzáadása Feed

Új hírcsatorna hozzáadásához használjuk $ erőforrás módszer mentés - alábbiak szerint:

$ scope.feed = {név: "Új hírcsatorna", url: "//www.example.com/feed"}; $ scope.createFeed = function () {$ scope.feeds.save ($ scope.feed, function () {$ scope.tableParams.reload ();}); }

6.2. Frissítés a Feed

Használhatjuk saját egyéni módszerünket $ erőforrás - alábbiak szerint:

$ scope.feeds = $ erőforrás ("api / myFeeds /: feedId", {feedId: '@ id'}, {'update': {módszer: 'PUT'}}); $ scope.updateFeed = function () {$ scope.feeds.update ($ scope.feed, function () {$ scope.tableParams.reload ();}); } 

Vegye figyelembe, hogyan konfiguráltuk a sajátunkat frissítés módszer a küldésre a PUT kérés.

6.3. Törölje a Feed

Végül a (z) használatával törölhetünk egy hírcsatornát töröl módszer:

$ scope.confirmDelete = function (id) {$ scope.feeds.delete ({feedId: id}, function () {$ scope.tableParams.reload ();}); }

7. Szögletes Js párbeszédpanel

Most nézzük meg, hogyan kell használni ngDialog modul az űrlapok egyszerű hozzáadásához / frissítéséhez.

Itt van a sablonunk, külön HTML oldalon vagy ugyanazon az oldalon definiálhatjuk:

{{feed.name}}

Mentés

Ezután megnyitjuk a párbeszédpanelt egy hírcsatorna hozzáadásához / szerkesztéséhez:

$ scope.addNewFeed = function () {$ scope.feed = {név: "Új hírcsatorna", url: ""}; ngDialog.open ({sablon: 'templateId', hatókör: $ hatókör}); } $ hatókör.editFeed = függvény (sor) {$ hatókör.csatorna.id = sor.azonosító; $ hatókör.csatorna.név = sor.név; $ hatókör.feed.url = sor.url; ngDialog.open ({sablon: 'templateId', hatókör: $ hatókör}); } $ scope.save = function () {ngDialog.close ('ngdialog1'); if (! $ hatókör.feed.id) {$ hatókör.createFeed (); } else {$ scope.updateFeed (); }}

Vegye figyelembe, hogy:

  • $ scope.save () hívják, amikor a felhasználó rákattint Mentés gombra a párbeszédpanelen
  • $ scope.addNewFeed () hívják, amikor a felhasználó rákattint Új hírcsatorna hozzáadása gomb a hírcsatornák oldalon - inicializál egy újat Feed objektum ( id)
  • $ scope.editFeed () akkor hívódik meg, amikor a felhasználó egy adott sort akar szerkeszteni a Hírcsatornák táblázatban

8. Hibakezelés

Végül nézzük meg hogyan kell kezelni a válasz hibaüzeneteit az AngularJS segítségével.

A szerverhibákra adott válaszok globális kezelése érdekében - kérésenként - regisztrálunk egy elfogót a $ httpProvider:

app.config (['$ httpProvider', function ($ httpProvider) {$ httpProvider.interceptors.push (function ($ q, $ rootScope) {return {'responseError': function (responseError) {$ rootScope.message = responseError. data.message; return $ q.reject (responseError);}};});}]);

És íme az üzenet megjelenítésünk HTML-ben:

 {{üzenet}} 

9. Következtetés

Ez gyors leírást jelentett az AngularJS REST API-jának felhasználásával.

A teljes végrehajtása ennek az oktatóanyagnak a github projektje található meg - ez egy Eclipse alapú projekt, ezért könnyen importálhatónak és futtathatónak kell lennie.