Doriți să accesați baza de date, să vă controlați sistemul sau să executați un cod de pe un alt site web? Un API poate face toate acestea pentru dvs. și este surprinzător de ușor de configurat.

Un API este un URL pe care îl puteți efectua GET, PUT, POST, și DELETE solicită controlul unui alt serviciu. Dacă creați unul singur, atunci puteți construi aceste API-uri pentru a face tot ce doriți în culise. Utilizările obișnuite sunt asigurarea controlului bazei de date, efectuarea de acțiuni pe API-uri terțe (API-ception) sau controlul unui alt serviciu.

De ce să folosiți un API?

Puteți întreba de ce avem nevoie de un API atunci când putem accesa direct baza de date sau putem rula codul de pe site. Există câteva avantaje masive pentru API-uri față de rularea codului pe site-ul dvs. web.

Ascundeți cheile și jetoanele de acces

Acesta este posibil cel mai important motiv pentru a utiliza un API. Dacă accesați o bază de date, atunci veți avea nevoie de detaliile bazei de date, precum și de datele de utilizator și jeton / cheie de acces.

Dacă accesați baza de date de pe site, atunci veți avea toate aceste detalii în codul sursă al site-ului dvs. Aceasta este practică foarte proastă, deoarece oricine poate căuta în controlul sursei și vă poate fura detaliile. Nu sună prea rău, dar ce se întâmplă dacă acestea sunt acreditările AWS sau Google Cloud Compute? Persoanele care accesează site-ul dvs. ar putea să le folosească pentru a rula orice vor în contul dvs., lăsându-vă o factură uriașă.

Rularea acestor procese din spatele unui API înseamnă că nimeni nu poate vedea niciun detaliu privat – nu le poate fura pentru a le folosi în propriile proiecte. Dacă stocați codul site-ului dvs. web în GitHub sau într-un alt control sursă publică, atunci înseamnă, de asemenea, că nu sunt vizibile acolo.

Rulați codul în altă parte

Ce se întâmplă dacă nu utilizați alte servicii și nu utilizați chei secrete? Dacă rulați un bit mare sau complex de cod sau dacă nu doriți ca nimeni altcineva să vă citească codul și să descopere cum funcționează, atunci puteți utiliza în continuare un API.

Controlează cine are acces

Cum se construieste un API cu Lambdas si API Gateway
Ușă verde închisă, închisă.

Furnizarea unui API vă permite, de asemenea, să restricționați cine poate accesa baza de date sau rula codul. Puteți face acest lucru solicitând o cheie API. Această cheie este utilizată pentru a identifica utilizatorul care face cererea și apoi permite sau respinge solicitarea.

Aceasta poate fi utilizată pentru a permite doar câtorva persoane să acceseze serviciul sau chiar pentru a crea un sistem de niveluri. Așa funcționează o mulțime de API-uri plătite. Toată lumea are acces gratuit, dar limitat, iar apoi permiteți plata pentru accesul la părți superioare ale serviciului sau doar la o rată mai mare de solicitări.

Construirea API-ului

Acum, că știm câteva motive pentru care am putea dori să creăm un API, să facem exact asta. Vom folosi API Gateway și AWS Lambdas, deoarece este mai simplu decât să rulăm un server. Asigurați-vă că aveți un cont AWS și că sunteți conectat.

Configurarea unui gateway API

Vom începe prin a deschide serviciul API Gateway și a face clic pe „Începeți”. În pagina următoare, trebuie să selectăm „API nou” opțiune. Apoi vom da API-ului nostru un nume și o descriere și vom face clic pe „Creați API”.

Cum se construieste un API cu Lambdas si API Gateway

Dând clic pe „Creați API” ne va duce în pagina de configurare pentru API.

Primul lucru pe care trebuie să-l facem este să adăugăm o resursă în API. Folosirea resurselor ne permite să grupăm apeluri API similare împreună utilizând bare înclinate. Vom crea un API pe care îl putem folosi pentru a face recomandări cu privire la ce să urmărim. Prin urmare putem avea /tv-shows și /movies ca două metode de bază.

Faceți clic pe meniul derulant „Acțiuni” și selectați „Creați resursă”. Denumiți-vă resursele, asigurându-vă că ambele se află pe calea „/”.

1611975728 21 Cum se construieste un API cu Lambdas si API Gateway
1611975729 682 Cum se construieste un API cu Lambdas si API Gateway

Vrem ca utilizatorii să poată merge la „/ movies / horror” sau „/ tv-shows / comedy” și putem face acest lucru adăugând parametri de cale. Acestea sunt variabile pe care le putem accesa în interiorul API-ului. Pentru a crea una dintre acestea, trebuie să setăm resursa la {resourceName} așa cum se arată mai jos. Acest lucru se poate face pentru „emisiuni TV” și „filme”.

1611975729 627 Cum se construieste un API cu Lambdas si API Gateway

Acum că avem lungimea și genul, putem crea metode pentru obținerea și adăugarea de date într-un tabel. Selectați unul dintre {genre} resurse, faceți clic pe „Acțiuni” și apoiCreați o metodă ”. Aceasta va crea o mică casetă gri sub resursă pe care o putem face clic. Vom începe cu un GET solicitați, deci selectați-l și faceți clic pe butonul de bifare.

Aici trebuie să decidem cum să gestionăm solicitarea. Vom folosi AWS Lambdas, dar trebuie să le creăm înainte de a finaliza configurarea metodelor.

Crearea Lambdas

Suntem capabili să răspundem la aceste solicitări API folosind Lambdas, ceea ce este extraordinar, deoarece rulează numai atunci când avem nevoie de ele. De asemenea, sunt foarte ușor de creat, deci asta vom face acum.

În consola Lambda, faceți clic pe „Creare funcție”. Apoi, putem numi prima noastră funcție API movieAPI, setați-l să ruleze nodul 8.10 și „Creați un rol nou din șablon (e)”. Vom denumi noul nostru rol „tableAPI” și vom adăuga „Permisiuni simple la microserviciu” ca singur șablon.

Toate codurile pot fi găsite la https://github.com/SamWSoftware/Projects/tree/master/movieAPI

Dacă faceți clic pe „Creați funcția” ne vom trimite în fereastra Lambda. Derulați în jos până la secțiunea „Cod funcție” și vom schimba codul. Primul lucru pe care îl vom face este să verificăm ce metodă de solicitare a fost utilizată.

exports.handler = async (event) => {
    console.log(event);
    if (event.httpMethod === 'PUT'){
        let response = putMovie(event)
        return done(response);
    } else if (event.httpMethod === 'GET'){
        let response = getMovie(event);
        return done(response);
    }
};

Vom începe prin a scrie getMoviefuncţie. Această funcție va începe prin obținerea fișierului genredin parametrii căii. Aici utilizarea parametrilor de cale poate face acest proces ușor.

const getMovie = event => {
    let genre = event.pathParameters.genre;
    return;
}

Cu genul solicitat de utilizator, vom obține un film recomandat pentru ei. Le-am copiat de la 25 de filme de top din fiecare gen și le-a adăugat la un obiect cu genul ca cheie. Apoi putem obține filmul obținând valoarea genului solicitat.

const movies = {
    action: 'Desperado (1995)',
    fantasy: 'Inception (2010)',
    ...
    horror: 'Black Swan (2010)'
}

const getMovie = event => {
    let genre = event.pathParameters.genre;
    return movies[genre];
}

Aceasta înseamnă că titlul filmului este transmis în done funcţie. Această funcție este utilizată, deoarece API Gateway se așteaptă ca datele să revină într-un format foarte specific. Această funcție transformă un șir în formatul respectiv.

const done = response => {
    return {
        statusCode: '200',
        body: JSON.stringify(response),
        headers: {
            'Content-Type': 'application/json',
            'Access-Control-Allow-Methods': '*',
            'Access-Control-Allow-Origin': '*'
        }
    }
}

Putem face un lucru foarte asemănător pentru un tv-showsAPI funcție, reutilizând majoritatea codului. Trebuie doar să schimbați numele funcțiilor și sugestiile de film pentru a le arăta la televizor.

Conectarea Lambdas la API Gateway

Înapoi în API Gateway, putem adăuga noul nostru Lambdas la metodele pe care le-am creat mai devreme. Trebuie să ne asigurăm că „Utilizați integrarea proxy Lambda” este selectat și că arătăm spre Lambda corectă. Dacă faceți clic pe „Salvați” vă va cere permisiunile pentru a accesa acest Lambda, căruia îi putem da „OK”.

1611975730 315 Cum se construieste un API cu Lambdas si API Gateway

Faceți acest lucru pentru GET metode pe ambele resurse și putem începe să testăm. Selectarea metodelor ar trebui să afișeze acum o diagramă de execuție a metodei. Sună complicat, dar singurul element de care avem nevoie este „TEST” secțiune.

Dând clic pe „TEST” se va deschide o nouă secțiune în care putem încerca API-ul. Există o mulțime de lucruri pe care le puteți seta aici, dar singurul la care ne interesează este Path {genre}. Trebuie să setăm acest lucru la genul pe care îl solicităm. Introducerea „westernului” ca gen și apăsarea butonului „Test” obține un răspuns ca acesta:

1611975730 454 Cum se construieste un API cu Lambdas si API Gateway

API-ul nostru funcționează! Acum trebuie să ne asigurăm că alte persoane îl pot accesa. Există doi pași în acest sens.

  1. Activăm CORS – Selectați „{genre}” resursă și apoi faceți clic pe „Acțiuni” și „Activați CORS”. Lăsați totul ca implicit și, când vi se solicită, faceți clic pe „Da, înlocuiți valorile existente”.
  2. Implementați API-ul nostru – Faceți clic pe „Acțiuni” șiImplementați API ”. Setați etapa de implementare la „[New Stage]”Și apoi dați scenei dvs. un nume ca„ producție ” saupublic”.

Odată ce API-ul dvs. a fost implementat, ar trebui să obțineți o adresă URL ca aceasta. Aceasta este baza API-ului dvs. Poti sa adaugi /movies/western pentru a accesa API-ul dvs.

https://{uniqueCode}.execute-api.eu-west-1.amazonaws.com/production

Adresa URL a API-ului dvs. ar putea ajunge la ceva de genul:

https://fds1fe31fes476s.execute-api.eu-west-1.amazonaws.com/production/movies/western

Asta este tot pentru acest articol. În următoarea vom conecta acest API la tabelele Dynamo și le vom permite utilizatorilor să voteze filmele lor preferate din fiecare gen. Puteți citi articolul de mai jos.

Construirea unui API cu Lambdas și API Gateway – Partea 2
În prima parte am creat un API care a transmis solicitările către un Lambda care a returnat emisiunea sau filmul de top …
medium.com