Sådan opbygges en RESTful API med godkendelse på 5 minutter - alt fra din kommandolinje (del 1)

Hvis titlen på denne artikel ophidser dig, så min ven, er du ved at nå niveau 100 af tilfredshed ved udgangen. Jeg gennemgår hurtigt løbet af denne artikel:

  1. Hvad vi er ved at oprette: RESTful API, der håndterer logfiler over madvarer i en restaurantmenu. Den anvendte database i back-enden vil være MongoDB. (Du kan bogstaveligt talt bruge enhver friktionsdatabase på denne planet. Der er en udtømmende liste over databasestik / ikke-databasestik understøttet af LoopBack nedenfor.)
  2. Hvad er LoopBack: I ekstremt enkle vendinger er det meget udvidelig, open source Node.js-ramme, der bruges til at skabe dynamiske, end-to-end REST API'er meget hurtigt. API'er genereret via LoopBack er Swagger API'er (verdens mest populære API-ramme, og du kan se hvorfor meget snart). Front-end kan laves inden for hvilken ramme du er forelsket i; Vinklet eller Reager.
  3. Oprettelse af applikation via CLI: Dette er WOW-delen, der fjerner al den involverede programmering. LoopBack CLI er så smuk, at alle timers udviklingsarbejde reduceres til sekunder. Her opretter vi vores database ved hjælp af CLI.
  4. Oprettelse af datamodeller via CLI: Igen, ingen programmering. Alt via den smukke CLI.
  5. Opsætning af godkendelse via CLI: Hvis du har erfaring med at oprette API'er, ved du, hvor svært det er at begrænse dele af API ved hjælp af godkendelse. Opsætning af tokenbaseret godkendelse ved hjælp af Express + Node.js på serversiden er en smerte. Al den smerte vil blive fjernet ved at smage på LixBacks eliksir! Det er himmelens egen drink.

Trin for trin guide:

Forudsætninger: Sørg for, at du har Node.js, Robomongo installeret og MongoDB-serveren kører.

TRIN 1: Installer LoopBack CLI via NPM

Åbn terminalen, og skriv følgende kommando for at installere LoopBack CLI, så kommandoen 'lb' kan fås. Kun gennem kommandoen 'lb' kan vi generere applikationer, modeller, datakilder osv. For yderligere læsning: //loopback.io/doc/en/lb2/Command-line-tools.html#using-yeoman

$ npm install -g loopback-cli

Sørg for at installere dette globalt, ellers fungerer 'lb' kommandoen muligvis ikke for dig.

TRIN 2: Oprettelse af applikation

Opret et bibliotek, hvor du ønsker at gemme dit projekt. Jeg kalder det 'restaurant-menu'. Sørg for, at du har åbnet denne mappe i din terminal, så alle de filer, der genereres via LoopBack, er gemt i den mappe.

Indtast derefter følgende kommando:

$ lb

Mange spørgsmål vil blive stillet, som dem der vises på billedet nedenfor.

(For at navigere mellem indstillingerne skal du bruge piletasterne på dit tastatur)

APIEN OPRET!

Jeg laver ikke sjov. Tro mig ikke? Kør applikationen ved hjælp af følgende kommando:

$ node .

Hvis du peger på localhost: 3000, kan du se noget som dette:

Men hvis du går til localhost: 3000 / explorer, vil du se den smukke SwaggerAPI.

LoopBack har oprettet alle ruter til dig:

FÅ brugere, POST-brugere, PUT-brugere, SLET brugere, Login, Log ud, Skift adgangskode. Bogstaveligt talt alt! Det ville ellers tage timer med arbejde at kode dette ud.

Åbn denne mappe i en hvilken som helst teksteditor. Jeg bruger Atom.

TRIN 3: Tilslutning af MongoDB

Hvis du åbner datasources.jsoni servermappen, skal du se noget som:

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

Dette betyder, at i øjeblikket er den anvendte datakilde hukommelsen på vores computer. Vi er nødt til at ændre dette til Mongo. Så lad os installere mongo-stik:

$ npm install --save loopback-connector-mongodb

Ved siden af ​​håber jeg, at mongod kører. Sådan ved du, at det kører:

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

Lad os nu forbinde stikket!

$ lb datasource mongoDS --connector mongoDB

Dette vil stille mange spørgsmål som følger:

Rediger nu, datasources.jsonfordi vi ikke ønsker at bruge hukommelse. Vi ønsker at bruge Mongo.

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

Så vores database med navnet: foodoprettes.

TRIN 4: Oprettelse af datamodeller

Kør følgende kommando for at oprette datamodeller:

$ lb model

Du kan dog tilføje mange egenskaber til en bestemt model. For at stoppe med at indtaste flere ejendomme skal du bare trykke på Enter for at komme ud af CLI.

Tjek dishes.jsoni mappen Common / Modeller.

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

Du kan også redigere egenskaberne fra denne json-fil. Det er ikke nødvendigt at bruge CLI.

Lad os nu køre serveren igen ved hjælp af følgende kommando og gå over til localhost: 3000 / explorer

$ node .

Nu kan du se 2 modeller:, dishesoguser

Lad os POST nogle dish.

Lad os FÅ det samme dish.

Du kan også lege med andre HTTP-anmodninger!

Disse API'er kan også fås uden for opdagelsesrejseren:

// localhost: 3000 / api / retter

TRIN 5: GODKENDELSE: Kirsebær på kagen!

For at konfigurere godkendelse skal du køre følgende kommando:

$ lb acl

Lad os nu prøve at FÅ dishes. Inden det skal du køre serveren igen.

Lad os blive godkendt! Til det skal vi først blive registreret. Så vi POSTER ind users.

Lad os nu logge ind.

Nu skal du kopiere ID'et i svarteksten og indsætte det i feltet Access Token øverst på siden.

Nu er vi godkendt. YAY.

Lad os FÅ det dishesigen.

HURRA!

Tillykke, hvis du har nået dette trin. Så stolt af dig.

Næste trin vil være at oprette en frontend omkring denne API, som vil blive gjort senere.

Frontend-tutorialen til denne artikel kan findes her. I denne tutorial har jeg brugt ReactJS til at væve en frontend omkring denne API.

Farvel folk!

Glad kodning.