Hogyan készítsünk RESTful API-t hitelesítéssel 5 perc alatt - mindezt a parancssorból (1. rész)

Ha a cikk címe izgat, akkor barátom, a végére eléred az elégedettség 100-as szintjét . Gyorsan végigmegyek a cikk folyamán:

  1. Amit készíteni fogunk: RESTful API, amely az éttermi étlapok naplóit kezeli az éttermi menüben. A háttérben használt adatbázis a MongoDB lesz. (Ezen a bolygón szó szerint használhat bármelyik törzsadatbázist. Az alábbiakban felsoroljuk az adatbázis-csatlakozók / nem adatbázis-csatlakozók teljes listáját, amelyeket a LoopBack támogat.)
  2. Mi az a LoopBack: Rendkívül egyszerûen kifejezve, ez egy bõvíthetõ, nyílt forráskódú Node.js keretrendszer, amelyet nagyon dinamikus, végpontok közötti REST API-k létrehozására használnak. A LoopBack segítségével generált API-k Swagger API-k (a világ legnépszerűbb API keretrendszere, és hamarosan meglátod, miért). A kezelőfelület bármelyik keretrendszerben elkészíthető, amelybe szerelmes vagy; Szögletes vagy React.
  3. Alkalmazás létrehozása CLI-n keresztül: Ez a WOW rész, amely eltávolítja az összes érintett programozást. A LoopBack CLI olyan szép, hogy a fejlesztési munka minden órája másodpercekre csökken. Itt az CLI segítségével állítanánk fel adatbázisunkat.
  4. Adatmodellek létrehozása CLI-n keresztül: Ismét, nincs programozás. Mindezt a gyönyörű CLI-n keresztül.
  5. Hitelesítés beállítása CLI-n keresztül: Ha tapasztalata van az API-k létrehozásában, akkor tudja, milyen nehéz az API egyes részeinek hitelesítéssel történő korlátozása. A token alapú hitelesítés beállítása a kiszolgálói oldalon az Express + Node.js használatával fájdalom. Mindez a fájdalom megszűnik a LoopBack elixírjének megkóstolásával! Ez a menny saját itala.

Lépésről lépésre útmutató:

Előfeltételek: Győződjön meg arról, hogy a Node.js, a Robomongo telepítve van, és a MongoDB szerver fut.

1. LÉPÉS: Telepítse a LoopBack CLI-t az NPM-en keresztül

Nyissa meg a terminált, és írja be a következő parancsot a LoopBack CLI telepítéséhez, hogy az 'lb' parancs elérhető legyen. Csak az „lb” paranccsal generálhatunk alkalmazásokat, modelleket, adatforrásokat stb. További olvasmányok: //loopback.io/doc/en/lb2/Command-line-tools.html#using-yeoman

$ npm install -g loopback-cli

Győződjön meg róla, hogy globálisan telepítette ezt, különben az 'lb' parancs nem működik az Ön számára.

2. LÉPÉS: Alkalmazás létrehozása

Készítsen egy könyvtárat, ahol tárolni szeretné a projektjét. „Étterem-menü” -nek fogom nevezni. Győződjön meg róla, hogy megnyitotta ezt a könyvtárat a terminálján, hogy a LoopBack segítségével létrehozott összes fájl ebben a mappában legyen tárolva.

Ezután írja be a következő parancsot:

$ lb

Nagyon sok kérdést felteszünk, például az alábbi képen láthatóakat.

(Az opciók között történő navigáláshoz használja a billentyűzet nyílbillentyűit)

AZ API LÉTREHOZOTT!

Nem viccelek. Nem hiszel nekem? Futtassa az alkalmazást a következő paranccsal:

$ node .

Ha a localhost: 3000-re mutat, valami ilyesmit fog látni:

Ha azonban a localhost: 3000 / explorer oldalra megy, meglátja a csodálatos SwaggerAPI-t.

A LoopBack beállította az összes útvonalat az Ön számára:

GET felhasználók, POST felhasználók, PUT felhasználók, DELETE felhasználók, Bejelentkezés, Kijelentkezés, Jelszó módosítása. Szó szerint mindent! Egyébként órákon át kell dolgozni, hogy ezt kódolják.

Nyissa meg ezt a mappát bármely szövegszerkesztőben. Az Atomot használnám.

3. LÉPÉS: A MongoDB csatlakoztatása

Ha datasources.jsona Kiszolgáló mappában nyit meg, akkor valami ilyesmit kell látnia:

{ "db": { "name": "db", "connector": "memory" }}

Ez azt jelenti, hogy jelenleg a használt adatforrás a számítógép memóriája. Meg kell változtatnunk ezt Mongóra. Tehát telepítsük a mongo csatlakozót:

$ npm install --save loopback-connector-mongodb

Remélem, mongód fut. Így tudhatod, hogy fut:

2018-01-27T15:01:13.278+0530 I NETWORK [thread1] waiting for connections on port 27017

Csatlakoztassuk a csatlakozót!

$ lb datasource mongoDS --connector mongoDB

Ez sok kérdést fog feltenni az alábbiak szerint:

Most módosítson, datasources.jsonmert nem akarunk memóriát használni. Szeretnénk használni a Mongót.

{ "db": { "host": "localhost", "port": 27017, "url": "", "database": "food", "password": "", "name": "mongoDS", "user": "", "connector": "mongodb" }}

Tehát foodlétrejön az adatbázisunk:.

4. LÉPÉS: Adatmodellek létrehozása

Futtassa a következő parancsot adatmodellek létrehozásához:

$ lb model

You may add however many properties to a particular model. To stop entering more properties, just hit Enter to get out of the CLI.

Check out dishes.json in the Common/Models folder.

{ "name": "dishes", "base": "PersistedModel", "idInjection": true, "options": { "validateUpsert": true }, "properties": { "name": { "type": "string", "required": true }, "price": { "type": "number", "required": true } }, "validations": [], "relations": {}, "acls": [], "methods": {}}

You may edit the properties from this json file as well. It is not necessary to use CLI.

Now let’s rerun the server using the following command and head over to localhost:3000/explorer

$ node .

Now you’ll see 2 models: dishes, and user

Now let’s POST some dish.

Now let’s GET the same dish.

You may play around with other HTTP requests too!

These APIs can be accessed outside the explorer as well:

//localhost:3000/api/dishes

STEP 5: AUTHENTICATION: Cherry on the cake!

To set up authentication, run the following command:

$ lb acl

Now, let’s try to GET the dishes. Before that, please rerun the server.

Let’s get authenticated! For that, we need to get registered first. So we POST in users.

Now, let’s log in.

Now, copy the ID in the response body and paste it in the Access Token field on top of the page.

Now we are authenticated. YAY.

Now, let’s GET the dishes again.

HOORAY!

Congratulations if you’ve successfully reached this step. So proud of you.

Next steps would be to create a front end around this API which would be done later.

The frontend tutorial of this article can be found here. In that tutorial, I have used ReactJS to weave a frontend around this API.

Bye folks!

Happy coding.