AngularJS CRUD alkalmazás Spring Data REST alkalmazással

1. Áttekintés

Ebben az oktatóanyagban létrehozunk egy példát egy egyszerű CRUD alkalmazásra, amely az AngularJS-t használja a front-endhez és a Spring Data REST-et a háttérhez.

2. A REST Data Service létrehozása

A perzisztencia támogatásának megteremtése érdekében felhasználjuk a Spring Data REST specifikációt, amely lehetővé teszi számunkra, hogy CRUD műveleteket hajtsunk végre egy adatmodellen.

A REST végpontok beállításával kapcsolatos összes szükséges információt a Spring Data REST bevezetőjében találja meg. Ebben a cikkben újból felhasználjuk a meglévő projektet, amelyet beállítottunk a bevezetéshez.

A kitartás érdekében a H2 a memória adatbázisban.

Adatmodellként az előző cikk meghatározza a WebsiteUser osztály, azzal id, név és email tulajdonságok és egy lerakat felület UserRepository.

Ennek a felületnek a meghatározása utasítja Springet, hogy hozza létre a támogatást a REST gyűjtemény-erőforrások és elem-erőforrások feltárásához. Vizsgáljuk meg közelebbről a rendelkezésünkre álló végpontokat, amelyekről később felhívunk SzögletesJS.

2.1. A gyűjteményi források

Az összes felhasználó listája elérhető lesz a végponton / felhasználók. Ez az URL a GET metódussal meghívható, és az űrlap JSON objektumait adja vissza:

{"_embedded": {"users": [{"name": "Bryan", "age": 20, "_links": {"self": {"href": "// localhost: 8080 / users / 1 "}," Felhasználó ": {" href ":" // localhost: 8080 / users / 1 "}}}, ...]}}

2.2. Az elem források

Egyetlen WebsiteUser Az objektum az űrlap URL-jeinek elérésével manipulálható / users / {userID} különböző HTTP módszerekkel és hasznos terhelésekkel.

A WebsiteUser objektum, hozzáférhetünk / users / {userID} a GET módszerrel. Ez az űrlap JSON objektumát adja vissza:

{"name": "Bryan", "email": "[email protected]", "_links": {"self": {"href": "// localhost: 8080 / users / 1"}, "User" : {"href": "// localhost: 8080 / users / 1"}}}

Új hozzáadásához WebsiteUser, telefonálnunk kell / felhasználók POST módszerrel. Az új tulajdonságai WebsiteUser rekord hozzá lesz adva a kérelem törzséhez JSON objektumként:

{név: "Bryan", e-mail: "[e-mail védett]"}

Ha nincs hiba, akkor ez az URL egy 201 CREATED állapotkódot ad vissza.

Ha frissíteni akarjuk a WebsiteUser rekordot, meg kell hívnunk az URL-t / users / {UserID} a PATCH módszerrel és az új értékeket tartalmazó kéréstesttel:

{név: "Bryan", e-mail: "[e-mail védett]"}

Törléséhez a WebsiteUser rekordot, meghívhatjuk az URL-t / users / {UserID} a DELETE módszerrel. Ha nincs hiba, akkor a 204 NINCS TARTALMA állapotkódot adja vissza.

2.3. MVC konfiguráció

Ezenkívül hozzáadunk egy alap MVC konfigurációt a html fájlok megjelenítéséhez alkalmazásunkban:

@Configuration @EnableWebMvc public class Az MvcConfig megvalósítja a WebMvcConfigurer {public MvcConfig () {super (); } @Orride public void configureDefaultServletHandling (DefaultServletHandlerConfigurer configurer) {configurer.enable (); }}

2.4. Kereszt származási kérelmek engedélyezése

Ha telepíteni akarjuk a SzögletesJS elülső alkalmazás külön, mint a REST API - akkor engedélyeznünk kell a kereszt-származási kérelmeket.

A Spring Data REST támogatást adott ehhez az 1.5.0 verziótól kezdve. RELEASE. Egy másik domainről érkező kérések engedélyezéséhez mindössze annyit kell tennie, hogy hozzáadja a @CrossOrigin kommentár az adattárhoz:

@CrossOrigin @RepositoryRestResource (collectionResourceRel = "users", path = "users") nyilvános felület A UserRepository kiterjeszti a CrudRepository {}

Ennek eredményeként a REST végpontok minden válaszára egy fejléc tartozik Access-Control-Allow-Origin hozzá lesz adva.

3. Az AngularJS kliens létrehozása

A CRUD alkalmazás kezelőfelületének létrehozásához felhasználjuk SzögletesJS - jól ismert JavaScript keretrendszer, amely megkönnyíti a front-end alkalmazások létrehozását.

Használata érdekében SzögletesJS, először be kell vonnunk a szögletes.min.js fájl a html oldalunkon, amelyet meghívunk users.html:

Ezután létre kell hoznunk egy szögletes modult, vezérlőt és szolgáltatást, amely felhívja a REST végpontokat és megjeleníti a visszaküldött adatokat.

Ezeket a nevű JavaScript fájlba helyezzük app.js azt is bele kell foglalni a users.html oldal:

3.1. Szögletes szolgálat

Először hozzunk létre egy úgynevezett szögletes szolgáltatást UserCRUDService hogy felhasználja az injekciót SzögletesJS$ http szolgáltatás a szerver felé történő hívások kezdeményezéséhez. Minden hívás külön módszerrel történik.

Vessünk egy pillantást a felhasználó azonosítóval történő lekérésének módszerének meghatározására a / users / {userID} végpont:

app.service ('UserCRUDService', ['$ http', function ($ http) {this.getUser = function getUser (userId) {return $ http ({method: 'GET', URL: 'users /' + userId} );}}]);

Ezután határozzuk meg a felhasználó hozzáadása módszer, amely POST kérést küld a / felhasználók URL és elküldi a felhasználói értékeket a adat tulajdonság:

this.addUser = function addUser (név, e-mail) {return $ http ({módszer: 'POST', url: 'felhasználók', adatok: {név: név, e-mail: e-mail}}); }

A updateUser metódus hasonló a fentihez, csakhogy lesz id paraméter és PATCH kérést küld:

this.updateUser = function updateUser (id, név, e-mail) {return $ http ({method: 'PATCH', url: 'users /' + id, data: {név: név, e-mail: email}}); }

A törlés módszere a WebsiteUser rekord törlési kérelmet küld:

this.deleteUser = function deleteUser (id) {return $ http ({metódus: 'DELETE', url: 'felhasználók /' + id})}

Végül pedig nézzük meg a teljes felhasználói lista lekérésének módszereit:

this.getAllUsers = function getAllUsers () {return $ http ({method: 'GET', url: 'users'}); }

Ezeket a szolgáltatási módszereket egy SzögletesJS vezérlő.

3.2. Szögvezérlő

Létrehozunk egy UserCRUDCtrlSzögletesJS vezérlő, amelynek lesz UserCRUDService és a szolgáltatási módszereket használja a szerver válaszának megszerzésére, kezelje a siker és hiba esetek, és meg $ hatókör változók, amelyek a válaszadatokat tartalmazzák a HTML oldalon való megjelenítéshez.

Vessünk egy pillantást a getUser () függvény, amely meghívja a getUser (userId) szolgáltatási funkció, és két visszahívási módszert határoz meg siker és hiba esetén. Ha a kiszolgálói kérés sikeres, akkor a választ a felhasználó változó; ellenkező esetben a hibaüzeneteket kezeljük:

app.controller ('UserCRUDCtrl', ['$ hatókör', 'UserCRUDService', függvény ($ hatókör, UserCRUDService) {$ hatókör.getUser = függvény () {var id = $ hatókör.user.id; UserCRUDService.getUser ($ scope.user.id) .then (a függvény sikere (válasz) {$ scope.user = response.data; $ scope.user.id = id; $ scope.message = ""; $ scope.errorMessage = "";} , függvényhiba (válasz) {$ scope.message = ''; if (response.status === 404) {$ scope.errorMessage = 'A felhasználót nem találtuk!';} else {$ scope.errorMessage = "Hiba a felhasználó beolvasásakor ! ";}});};}]);

A felhasználó hozzáadása() függvény meghívja a megfelelő szervizfunkciót és kezeli a választ:

$ scope.addUser = function () {if ($ scope.user! = null && $ scope.user.name) {UserCRUDService.addUser ($ scope.user.name, $ scope.user.email). akkor (a függvény sikere (válasz) {$ hatókör.message = 'Felhasználó hozzáadva!'; $ hatókör.errorMessage = '';}, függvényhiba (válasz) {$ hatókör.errorMessage = 'Hiba a felhasználó hozzáadásakor!'; $ hatókör.message = "" ;}); } else {$ scope.errorMessage = 'Kérjük, adjon meg egy nevet!'; $ scope.message = ''; }}

A updateUser () és deleteUser () funkciók hasonlóak a fentiekhez:

$ scope.updateUser = function () {UserCRUDService.updateUser ($ scope.user.id, $ scope.user.name, $ scope.user.email) .then (a függvény sikere (válasz) {$ scope.message = 'Felhasználó adatok frissítve! '; $ hatókör.errorMessage =' ';}, függvényhiba (válasz) {$ hatókör.errorMessage =' Hiba a felhasználó frissítésekor! '; $ hatókör.message =' ';}); } $ scope.deleteUser = function () {UserCRUDService.deleteUser ($ scope.user.id) .majd (a függvény sikere (válasz) {$ scope.message = 'Felhasználó törölve!'; $ hatókör.User = null; $ hatókör .errorMessage = '';}, függvényhiba (válasz) {$ scope.errorMessage = 'Hiba a felhasználó törlésekor!'; $ scope.message = '';}); }

Végül definiáljuk azt a függvényt, amely lekéri a felhasználók listáját, és tárolja a felhasználók változó:

$ scope.getAllUsers = function () {UserCRUDService.getAllUsers () .then (függvénysiker (válasz) {$ scope.users = response.data._embedded.users; $ scope.message = ""; $ scope.errorMessage = ' ';}, function error (response) {$ scope.message =' '; $ scope.errorMessage =' Hiba a felhasználók megszerzésében! ';}); }

3.3. HTML oldal

A users.html oldalon az előző szakaszban meghatározott vezérlőfunkciókat és a tárolt változókat fogja használni.

Először is, az Angular modul használatához be kell állítanunk a ng-app ingatlan:

Ezután a gépelés elkerülése érdekében UserCRUDCtrl.getUser () valahányszor a vezérlő valamely funkcióját használjuk, a HTML elemeinket a-ba csomagolhatjuk div val,-vel ng-controller tulajdonságkészlet:

Hozzuk létre aűrlap, amely beviszi és megjeleníti a WebiteUser tárgy, amelyet manipulálni akarunk. Ezek mindegyikének lesz egy ng-modell attribútumkészlet, amely az attribútum értékéhez köti:

Azonosító:
Név:
Kor:

Kötés a id bemenet a Felhasználói azonosító A változó például azt jelenti, hogy amikor a bemenet értéke megváltozik, ez az érték a Felhasználói azonosító változó és fordítva.

Ezután használjuk a ng kattintás attribútum az egyes definiált CRUD vezérlőfunkciók meghívását kiváltó hivatkozások meghatározásához:

Felhasználói frissítés letöltése Felhasználó hozzáadása Felhasználó hozzáadása Felhasználó törlése

Végül jelenítsük meg a felhasználók listáját teljes egészében és név szerint:

Minden felhasználó megszerzése

{{usr.name}} {{usr.email}}

4. Következtetés

Ebben az oktatóanyagban bemutattuk, hogyan hozhat létre CRUD alkalmazást SzögletesJS és a Tavaszi adatok REST leírás.

A fenti példa teljes kódja megtalálható a GitHub projektben.

Az alkalmazás futtatásához használhatja a parancsot mvn spring-boot: fut és elérheti az URL-t /users.html.


$config[zx-auto] not found$config[zx-overlay] not found