Kako izraditi RESTful API s autentifikacijom za 5 minuta - sve iz vašeg naredbenog retka (1. dio)

Ako vas naslov ovog članka oduševi, onda prijatelju, do kraja ćete postići razinu zadovoljstva 100 . Brzo ću proći kroz tijek ovog članka:

  1. Što ćemo stvoriti: RESTful API koji obrađuje zapisnike prehrambenih proizvoda na meniju restorana. Baza podataka koja se koristi u pozadini bit će MongoDB. (Možete doslovno koristiti bilo koju nesigurnu bazu podataka na ovom planetu. U nastavku je iscrpan popis konektora baze podataka / konektora koji nisu baze podataka i koje podržava LoopBack.)
  2. Što je LoopBack: U krajnje jednostavnim uvjetima, vrlo je proširiv, Node.js okvir otvorenog koda koji se koristi za vrlo brzo stvaranje dinamičnih REST API-ja. API-ji generirani putem LoopBacka su Swagger API-ji (najpopularniji svjetski API okvir, a vrlo brzo ćete vidjeti zašto). Front-end bi mogao biti napravljen u bilo koji okvir u koji ste zaljubljeni; Kutni ili Reagiraj.
  3. Stvaranje aplikacije putem CLI-a: Ovo je WOW dio koji uklanja sve uključeno programiranje. LoopBack CLI je toliko lijep da se svi sati razvojnog rada smanjuju na sekunde. Ovdje bismo postavljali našu bazu podataka koristeći CLI.
  4. Stvaranje podatkovnih modela putem CLI-ja: Opet, bez programiranja. Sve putem prekrasnog CLI-ja.
  5. Postavljanje provjere autentičnosti putem CLI-a: Ako imate iskustva u stvaranju API-ja, znate koliko je teško ograničiti dijelove API-ja pomoću provjere autentičnosti. Postavljanje provjere autentičnosti na temelju tokena pomoću Express + Node.js na strani poslužitelja je muka. Sav taj bol uklonit će se kušanjem eliksira LoopBacka! To je nebesko piće.

Vodič korak po korak:

Preduvjeti: Provjerite imate li instaliran Node.js, Robomongo i pokrenut MongoDB poslužitelj.

KORAK 1: Instalirajte LoopBack CLI putem NPM-a

Otvorite terminal i napišite sljedeću naredbu da biste instalirali LoopBack CLI tako da se može pristupiti naredbi 'lb'. Samo pomoću naredbe 'lb' možemo generirati aplikacije, modele, izvore podataka itd. Za daljnje čitanje: //loopback.io/doc/en/lb2/Command-line-tools.html#using-yeoman

$ npm install -g loopback-cli

Obavezno instalirajte ovu globalno, inače vam naredba 'lb' možda neće raditi.

KORAK 2: Izrada aplikacije

Napravite direktorij u kojem želite pohraniti svoj projekt. Nazvat ću ga 'restoran-meni'. Obavezno otvorite ovaj direktorij u terminalu kako bi se sve datoteke generirane putem LoopBacka pohranile u tu mapu.

Zatim unesite sljedeću naredbu:

$ lb

Bit će postavljeno puno pitanja, poput onih prikazanih na donjoj slici.

(Za kretanje po opcijama koristite tipke sa strelicama na tipkovnici)

API JE STVOREN!

Ne šalim se. Ne vjerujete mi? Pokrenite aplikaciju pomoću sljedeće naredbe:

$ node .

Ako pokažete na localhost: 3000, vidjet ćete otprilike ovo:

Međutim, ako odete na localhost: 3000 / explorer, vidjet ćete prekrasan SwaggerAPI.

LoopBack je za vas postavio sve rute:

GET korisnici, POST korisnici, PUT korisnici, DELETE korisnici, Prijava, Odjava, Promjena lozinke. Doslovno sve! Inače bi to trebalo satima rada da se ovo kodira.

Otvorite ovu mapu u bilo kojem uređivaču teksta. Koristio bih Atom.

KORAK 3: Povezivanje MongoDB-a

Ako otvorite datasources.jsonu mapi Poslužitelj, trebali biste vidjeti nešto poput:

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

To znači da je trenutno izvor podataka koji se koristi memorija našeg računala. Moramo ovo promijeniti u Mongo. Pa instalirajmo mongo konektor:

$ npm install --save loopback-connector-mongodb

Uz to, nadam se da se mongod kandidira. Evo kako biste znali da se izvodi:

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

Sad, spojimo konektor!

$ lb datasource mongoDS --connector mongoDB

To će postaviti puno pitanja na sljedeći način:

Sada modificirajte datasources.jsonjer ne želimo koristiti memoriju. Želimo koristiti Mongo.

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

Tako foodje stvorena naša baza podataka pod nazivom:.

KORAK 4: Izrada podatkovnih modela

Pokrenite sljedeću naredbu za stvaranje modela podataka:

$ 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.