API set. Utilizarea și conectarea API-ului platformei beseller

Acest termen scurt este bine cunoscut tuturor celor care au întâlnit cumva dezvoltare. Dar nu toată lumea înțelege ce înseamnă exact și de ce este nevoie. Dezvoltator Piotr Gazarov a vorbit despre API în cuvinte simple în blogul său.

Abrevierea API înseamnă „Application Programming Interface” (interfață de programare a aplicației, interfață de programare a aplicației). Majoritatea companiilor mari la un moment dat dezvoltă API-uri pentru clienți sau pentru uz intern. Pentru a înțelege cum și cum este utilizat API-ul în dezvoltare și afaceri, mai întâi trebuie să înțelegeți cum funcționează World Wide Web.

World Wide Web și servere la distanță

WWW poate fi gândit ca o rețea uriașă de servere conectate care stochează fiecare pagină. Un laptop obișnuit poate fi transformat într-un server capabil să deservească un întreg site în rețea, iar dezvoltatorii folosesc servere locale pentru a crea site-uri înainte de a le deschide pentru o gamă largă de utilizatori.

Când tastați în bara de adrese a unui browser www.facebook.com o cerere corespunzătoare este trimisă la serverul Facebook de la distanță. Odată ce browserul primește răspunsul, interpretează codul și redă pagina.

De fiecare dată când un utilizator vizitează o pagină de pe web, el interacționează cu API-ul serverului de la distanță. API-ul este partea serverului care primește cereri și trimite răspunsuri.

API ca o modalitate de a servi clienții

Multe companii oferă API-ul ca produs finit. De exemplu, Weather Underground vinde acces la API-ul de date meteo.

Scenariul de utilizare: pe site-ul unei firme mici există un formular de programare pentru clienți. Compania vrea să încorporeze Google Calendar în acesta pentru a oferi clienților posibilitatea de a crea automat un eveniment și de a completa detaliile unei întâlniri viitoare.

Aplicație API: obiectiv - serverul site-ului ar trebui să contacteze direct serverul Google cu o solicitare de a crea un eveniment cu detaliile specificate, să primească un răspuns de la Google, să-l proceseze și să transmită informațiile corespunzătoare browserului, de exemplu, un mesaj de confirmare utilizatorului .

Alternativ, browserul poate face o solicitare către API-ul serverului Google, ocolind serverul companiei.

Prin ce diferă API-ul Google Calendar de API-ul oricărui alt server la distanță de pe web?

Din punct de vedere tehnic, diferența este în formatul cererii și răspunsului. Pentru a genera o pagină web completă, browserul așteaptă un răspuns în limbajul de marcare HTML, în timp ce API-ul Google Calendar va returna doar date într-un format precum JSON.

Dacă o solicitare către API este făcută de serverul site-ului web al companiei, atunci acesta este clientul (la fel cum clientul este browserul când utilizatorul deschide site-ul web).

Datorită API-ului, utilizatorul are posibilitatea de a efectua o acțiune fără a părăsi site-ul companiei.

Cele mai multe site-uri web moderne folosesc cel puțin câteva API-uri terțe. Multe sarcini au deja soluții gata făcute oferite de dezvoltatori terți, fie că este vorba despre o bibliotecă sau un serviciu. Este adesea mai ușor și mai fiabil să recurgeți la o soluție gata făcută.

Mulți dezvoltatori distribuie aplicația pe mai multe servere care interacționează între ele folosind API-ul. Serverele care îndeplinesc o funcție auxiliară în raport cu serverul principal de aplicații sunt numite microservicii.

Astfel, atunci când o companie oferă un API utilizatorilor săi, înseamnă pur și simplu că a creat o serie de URL-uri speciale care returnează date doar ca răspuns.

Astfel de solicitări pot fi adesea trimise prin browser. Deoarece transferul de date prin HTTP este sub formă de text, browserul va putea întotdeauna să afișeze răspunsul. De exemplu, printr-un browser, puteți accesa direct API-ul GitHub (https://api.github.com/users/petrgazarov) și fără un token de acces și puteți obține următorul răspuns în format JSON:

Browserul afișează perfect un răspuns JSON, care poate fi inserat în cod. Este suficient să extragi pur și simplu date dintr-un astfel de text pentru a-l folosi la discreția ta.

Mai multe exemple de API

Cuvântul „aplicare” (aplicat, aplicare) poate fi folosit în diferite sensuri. În contextul API-ului, înseamnă:

  • program cu o anumită funcție,
  • serverul ca întreg, aplicația ca întreg sau doar o parte separată a aplicației.

Orice bucată de software care poate fi distinsă clar de mediu poate înlocui litera „A” din abrevierea engleză și poate avea, de asemenea, un fel de API. De exemplu, atunci când un dezvoltator implementează o bibliotecă terță parte în cod, aceasta devine parte a întregii aplicații. Fiind o bucată separată de software, biblioteca va avea un fel de API care îi va permite să interacționeze cu restul codului aplicației.

În proiectarea orientată pe obiecte, codul este reprezentat ca o colecție de obiecte. Pot exista sute de astfel de obiecte care interacționează între ele într-o aplicație. Fiecare dintre ele are propriul său API - un set public proprietăți și metode de interacțiune cu alte obiecte din aplicație. Obiectele pot avea, de asemenea privat, logică internă care este ascunsă de mediu și nu este un API.

API este prescurtarea pentru Application Programming Interface. În general, fiecare program, sistem de operare etc. are propriul API. API-ul Windows constă dintr-o serie de funcții care vă permit să utilizați construcția sistemului Windows. Toate funcțiile API Windows au fost scrise în C++, dar programele dumneavoastră le pot folosi în siguranță din Visual Basic „a. Funcțiile API trebuie declarate! Declarația funcțiilor API are următoarea sintaxă:
Declarați numele funcției Lib "libname" [()]

Cuvântul cheie Lib specifică în ce bibliotecă Visual Basic poate găsi funcția dorită. Aceasta se referă la biblioteci de legături dinamice (*.dll). Dar nu trebuie să specificați extensia în aliasname. Alias ​​specifică sub ce nume ar trebui să caute programul pentru funcția specificată în bibliotecă. Arglist sunt parametrii trecuți.Windows-API permite două lucruri: rularea anumitor joburi și accesarea resurselor de sistem. Puteți vizualiza lista diferitelor funcții API și declarațiile acestora folosind programul standard API-Viewer.

API-urile Windows pot fi apelate din Visual Basic pentru a efectua sarcini pentru care codul standard Visual Basic este insuficient. De exemplu, instrumentele standard Visual Basic nu vă permit să reporniți computerul. Cu toate acestea, reîncărcarea se poate face apelând funcția corespunzătoare Window API.

Notă: Dacă o funcție API așteaptă o variabilă de la dvs., trebuie neapărat declarați-l și umpleți-l cu spații. Acestea. variabila trebuie să fie definită de utilizator. Acestea sunt caracteristicile limbajului C++, în care a fost scris API-ul Windows.

Să ne uităm la câteva exemple:

Să presupunem că aplicația dvs. trebuie să definească directorul în care este instalat sistemul de operare Windows 95/98/NT. Cel mai simplu mod de a face acest lucru este să utilizați funcția API GetWindowsDirectory.

1. În modul, declarăm funcția API GetWindowsDirectory:

3. În subrutina principală introducem:

Codul
„Variabila care urmează să fie transmisă la API, o avem deja
„a declarat și acum completați golurile.
Ar trebui să existe cam atâtea spații cât
„aproximativ câte caractere ar trebui să aibă variabila.
„În acest caz, 20 este suficient, deoarece Windows este de obicei instalat în
" C:\Windows sau C:\Win95 etc. Adică, mai degrabă, suma caracterelor
„total nu va depăși 20
WindDir = Spațiu (20)
Debug.Print Left(WinDir, GetWindowsDirectory(WinDir, 20))
„Deoarece API-ul este o funcție, trebuie să returneze unele
„valoare. În acest caz, funcția GetWindowsDirectory revine
„lungimea valorii dorite. Adică dacă, de exemplu, valoarea dorită
" este C:\WINDOWS, atunci funcția va returna valoarea 10.
„Variabila are lungimea de 20. Aceste 10 caractere sunt scrise
„întâi, apoi trec 10 spații. De ce ne întrebăm,
„în plus 10 caractere? Folosește memorie inutilă...
„Prin urmare, cu instrucțiunea Left, scoatem variabila WinDir
„Exact câte primele personaje sunt necesare...

Al doilea exemplu:
De exemplu, programul dvs. trebuie să determine care dintre mediile dvs. este CD-ROM sau la distanță și așa mai departe. Setul de instrumente Visual Basic „nativ” nu vă permite să faceți acest lucru - trebuie să apelați la ajutorul funcției API GetDriveType.

1. În modul, declarăm funcția API GetDriveType:

2. În subrutină principală, introduceți:

Iată ce ne va returna funcția GetDriveType, de exemplu, pentru mine:
A:-2
C:-3
D:-3
E:-5
Toate celelalte litere sunt marcate cu numărul 1. Da, pentru a înțelege aceste denumiri, trebuie să cunoașteți următorul tabel:

Nume și valoare constantă:
DRIVE_UNKNOWN 0
DRIVE_NO_ROOT_DIR 1
DRIVE_REMOVEABLE 2
DRIVE_FIXED 3
DRIVE_REMOTE 4
DRIVE_CDROM 5
DRIVE_RAMDISK 6

Subrutina principală dintr-un modul este ca Form_Load pe un formular, adică. este considerată cea principală și este încărcată implicit. Înapoi

Scopul multor funcții API poate fi ușor de ghicit după numele lor. De exemplu, GetWindowsDirectory (obțineți directorul Windows) sau GetDriveType (obțineți tipul media).

Răspuns preluat de pe: www.mtsecurity.narod.ru

Am lansat o nouă carte, „Marketing de conținut în rețelele sociale: cum să intri în fruntea abonaților și să-i faci să se îndrăgostească de marca ta”.

Abonati-va

API este o interfață externă pentru programarea unei aplicații, accesarea site-urilor folosind un protocol specific pentru obținerea de informații și simplificarea dezvoltării programelor legate de serviciile interne.

Ce înseamnă API

Cea mai simplă analogie pentru utilizarea unui API ar fi procesul de lucru la un calculator pentru calcule complexe. Să presupunem că ai o sarcină, poți înțelege esența ei, construi ecuații și grafice, dar nu știi să faci operații aritmetice cu numere. Lângă tine se află un calculator care poate face aceste operații cu ușurință. Nu știi ce se întâmplă în interiorul unui computer și nici nu trebuie să știi. Dați informații într-o formă și le primiți în alta, necesare scopurilor dumneavoastră.

Orice API funcționează pe acest principiu. Nu-ți pasă cum primește programul răspunsul, ce cale urmează cererea în interiorul lui, cum se fac calculele. Sunteți sigur de un singur lucru - ca răspuns, vor fi emise informații standardizate despre succesul operațiunii sau despre eroarea acesteia.

Interfața API vă permite să nu vă pierdeți timpul, banii și efortul cumpărând o „bicicletă nouă”. Obțineți un port de informații de lucru care primește și trimite cantitățile necesare de date în scopul dezvoltării dvs.

Pro:

  • Economii la dezvoltarea interfeței dvs.
  • Nu este nevoie să înțelegeți nuanțele problemei.
  • API-urile sunt dezvoltate de profesioniști și iau în considerare toți factorii proceselor interne despre care este posibil să nu știți atunci când vă creați soluția.
  • Vă permite să comunicați cu servicii închise prin alte protocoale.

Minusuri:

  • În cazul actualizării serviciului țintă, API-ul nu primește întotdeauna instantaneu funcționalitatea completă.
  • Nu poți prinde erori și nu știi cum decurge procesul în codul altcuiva.
  • API-ul nu oferă întotdeauna rezultatul optimizat în timp, deoarece este conceput pentru a gestiona cazuri generale, nu anumite.

Exemple de API

Integrarea API este procesul de conectare a unei aplicații la o interfață de date externă. Lucrul cu API-ul începe cu studierea documentației și a protocoalelor utilizate, apoi cu integrarea directă a programului în interfață. Luați în considerare cele mai populare servicii care au propriul lor API.

VKAPI

Interfața externă pentru interacțiunea rețelei sociale populare VKontakte cu clienții, precum și cu aplicațiile browser și server. Vă permite să gestionați mesajele comunității, coperțile grupurilor, paginile de utilizator dacă aveți cheile de acces adecvate.

Toate cererile se fac la adresa https://api.vk.com/method/

Bara oblică este urmată de numele metodei API utilizate și sunt trecuți parametrii de solicitare GET. Răspunsul vine și prin HTTPS în format JSON.

API-ul TELEGRAM BOT

Unul dintre cele mai populare API-uri. Cu ajutorul acestuia, boții sunt controlați în messengerul Telegram. După ce ai creat un bot prin @botfather și ai obținut cheile de acces necesare, poți începe să interacționezi cu backend-ul.

Solicitările se fac către https://api.telegram.org/bot0000000:token/

Unde bot0000000 este înlocuit cu identificatorul unic al botului tău, iar simbolul exprimă cheia secretă.

Solicitările sunt trimise prin conexiuni HTTPS, numele metodei este specificat printr-o bară oblică către adresa principală. Răspunsul vine în format JSON.

Deschideți API-ul HARTĂ METEO

Adesea este necesar să obțineți informații despre vreme fără a utiliza widget-uri și aplicații plătite de la terți. Serviciul OpenWeatherMap vine în ajutor cu un API deschis și gratuit. După înregistrarea și obținerea datelor de identificare, puteți trimite solicitări de vreme în întreaga lume din scripturile de server. Ca răspuns la ID-ul orașului, resursa returnează cele mai detaliate informații despre vremea actuală și oferă o prognoză pentru viitorul apropiat.

Format de lucru: transfer HTTP prin api.openweathermap.org/data/2.5/weather?id= indicând numărul de identificare al orașului dorit. Răspuns server: JSON.

API-ul Google Maps

Ce poate fi mai frumos decât o hartă interactivă a lumii pe site? Mai ales dacă acesta nu este un șablon inserat din Google Maps, ci ediția dvs. personală a unei hărți populare cu grupuri personale de marcatori. Harta va interacționa cu alte scripturi de pe site, trimițând informații despre clicuri și coordonate.

API-ul JavaScript Google Maps oferă capabilități similare. Modulul este complet scriptat și funcționează pe partea de browser, așa că nu avem nevoie de solicitări HTTP de la PHP și de formarea antetelor pe partea de server, așa cum a fost cazul în alte API-uri.

De exemplu, plasarea unui marcator pe o hartă ar arăta astfel:

var mark = nou google.maps.Marker((
poziție: myPOS,
hartă:hartă,
titlu: „Bună ziua!”
});

Ce folosește API-ul și de ce este util

Există destul de multe caracteristici utile.

Primul aspect

Puteți stabili interacțiunea interactivă a utilizatorului cu rețelele sociale și mesageria instantanee, puteți utiliza capacitățile sistemelor de calcul terțe pentru a afișa cursurile de schimb, vremea și alte informații importante.

Folosind API-ul, vă puteți conecta instantaneu la serverele altor resurse și soluții software, care într-o implementare tipică ar dura săptămâni de dezvoltare. API-ul simplifică viața acolo unde nu este necesară o implementare unică, iar fiabilitatea și securitatea sunt o prioritate.

Al doilea aspect

Dacă sunteți proprietarul unei puteri de calcul complexe, a unui serviciu popular sau a stocării de date pentru acces deschis sau semi-privat, atunci ar fi o mișcare bună să vă creșteți propriul API. Ce va oferi:

  • Flux mare de clienți.
  • Acces simplificat la serviciile dvs. pentru parteneri.
  • Comoditatea analizei statistice a utilizării serviciului.

Al treilea aspect

Aproape la fel ca al doilea. Dar fără a fi necesară implementarea unui API pentru acces public. Dacă aveți un portal și doriți să creați o aplicație mobilă Android/IOS pentru acesta, atunci rescrierea sistemului pentru un singur API este cea mai bună soluție. Întreaga structură a datelor este sistematizată. Site-ul și aplicația vor funcționa prin canale de date unice.

API-urile pot fi atât distractive, cât și frustrante în același timp. Pe de o parte, interacționând cu alte aplicații, puteți crește considerabil acoperirea publicului și „efectul wow” al aplicației dumneavoastră. Pe de altă parte, aceasta include citirea de tone de documentație, învățarea despre strategiile de autentificare și analizarea mesajelor de eroare neinformative (sau chiar lipsă).

În primul rând, dacă încă nu înțelegi pe deplin ce este un API (Application Programming Interface), citește explicația Skillcrush și apoi prima parte a acestui articol pentru a prinde din urmă.

„API” este un concept incredibil de larg - de fiecare dată când aplicația ta „vorbește” cu o altă aplicație, se face printr-un fel de API. Componentele din cadrul propriei aplicații, cum ar fi diferite părți ale Rails, comunică, de asemenea, între ele prin intermediul unui API. Sunt subaplicații mai mult sau mai puțin independente care transmit datele de care au nevoie fiecare pentru a-și îndeplini sarcinile specifice. În lumea aplicațiilor, totul este un API!

Când creați aplicații cu funcționalitate front-end mai dinamică (atât aplicații Javascript cu o singură pagină, cât și aplicații simple cu apeluri AJAX separate), acestea vor comunica cu backend-ul Rails prin propriul dvs. API, care este de fapt doar o linie suplimentară sau două de cod. . , spunându-le controlorilor cum să difuzeze JSON sau XML în loc de HTML.

În acest tutorial, veți învăța cum să vă creați propriul API. În lecțiile ulterioare, vom trata cum să interacționăm cu API-urile altor aplicații. Lecțiile ar trebui să fie o bună trambulină pentru a învăța despre acest subiect, dar este puțin probabil să poată acoperi pe deplin toate cazurile. O mare parte a lucrului cu API-urile este să le citești documentația și să-ți dai seama ce vor de la tine.

Puncte de reflecție

Examinați întrebările și vedeți dacă știți răspunsurile. Verificați-vă din nou după finalizarea sarcinii.

  • Cum înțelege Rails ce tip de fișier așteptați ca răspuns atunci când trimiteți o solicitare HTTP.
  • Care este scopul metodei #respond_to?
  • Cum returnați un obiect utilizator (Utilizator) în timp ce specificați atribute pe care nu doriți să le includă în acel obiect (adică nu puteți returna pur și simplu User.first)?
  • Numiți 2 pași din culisele metodei #to_json.
  • Cum îi spun unei acțiuni controlerului să redea doar un mesaj de eroare?
  • Cum să-ți creezi propriul mesaj de eroare?
  • De ce nu puteți utiliza metode de autentificare a controlerului bazate pe sesiune dacă doriți să permiteți conexiunea programatică la API-ul dvs.?
  • Ce este „Arhitectura Orientată pe Servicii”?

Bazele API

Aplicația dvs. Rails este de fapt deja un API, deși este posibil să nu vă gândiți la ea ca la un API. Browserul web lansat de utilizatorii dvs. este, de asemenea, un program, astfel încât de fapt trimite o solicitare API către aplicația dvs. Rails atunci când utilizatorul deschide o pagină nouă. Avem tendința de a gândi în acest fel, deoarece redarea șabloanelor HTML este o sarcină atât de comună încât doar codificăm acea funcționalitate în programele noastre de server ca tip de răspuns standard și tratăm totul ca pe ceva ieșit din comun.

Cu toate acestea, de multe ori doriți să faceți o solicitare care nu vă cere să treceți prin toate durerile de cap ale utilizării unui browser. Poate că nu vă pasă de structura paginii (HTML), dar în schimb doriți date curate. Să presupunem că doriți să obțineți o listă cu toți utilizatorii. Puteți solicita ceva de genul http://yourapplication.com/users , care probabil va declanșa acțiunea #index și va afișa o listă cu toți utilizatorii aplicației.

Dar de ce să te deranjezi cu toate aceste informații suplimentare când tot ce vrei este o listă de utilizatori? Cea mai simplă opțiune ar fi să trimiteți o solicitare la aceeași adresă URL, specificând în schimb așteptarea unui răspuns JSON sau XML. Dacă vă configurați corect controlerul Rails, veți primi înapoi un simplu obiect matrice JSON care conține toți utilizatorii. Minunat!

Același principiu se aplică atunci când comunicați cu un API extern. Să presupunem că doriți să obțineți „tweeturile” recente ale unui utilizator de pe Twitter. Tot ce trebuie să faceți este să spuneți aplicației dvs. Rails cum să interacționeze cu API-ul Twitter (adică să vă autentificați), să trimiteți cererea și să procesați setul de „tweeturi” care vor fi returnate.

Crearea unui API

Poate doriți să faceți din aplicația dvs. Rails un API back-end pur pentru paginile web front-end sau poate doriți pur și simplu să aflați cum să trimiteți JSON atunci când front-end-ul solicită acest lucru. Această secțiune nu va acoperi cum să creați API-uri RESTful complete cu funcționalitate de autentificare. Aceasta este o introducere simplă în tratarea aplicației dvs. ca API.

Bazele

Dacă doriți ca aplicația dvs. Rails să returneze JSON în loc de HTML, va trebui să spuneți controlerului dvs. să facă acest lucru. Lucrul grozav este că aceeași acțiune a controlerului poate returna tipuri diferite, în funcție de faptul dacă utilizatorul face o solicitare normală de browser sau accesează un API prin linia de comandă. Aceasta determină ce tip de solicitare a fost făcută pe baza extensiei fișierului solicitat, cum ar fi example.xml sau example.json .

Puteți verifica ce „gândește” Rails despre tipul de fișier la care vă așteptați verificând jurnalul serverului:

A început GET „/posts/new” pentru 127.0.0.1 la 2013-12-02 15:21:08 -0800 Procesarea de către PostsController#new ca HTML

Prima linie vă spune ce adresă URL a fost solicitată, iar a doua vă spune unde a fost direcționată și cum o gestionează Rails. Dacă ar fi să utilizați extensia .json, ar arăta astfel:

A început GET „/posts.json” pentru 127.0.0.1 la 2013-12-04 12:02:01 -0800 Procesarea de către PostsController#index ca JSON

Dacă rulați o aplicație de testare, încercați să solicitați adrese URL diferite. Dacă controlerul tău nu știe cum să le gestioneze, atunci s-ar putea să primești o eroare, dar ar trebui totuși să poți vedea ce înțelege Rails prin solicitările tale.

Redare JSON sau XML

Când decideți că doriți să răspundeți cu JSON sau XML, va trebui să îi spuneți controlerului să redeze JSON sau XML în loc de HTML. O modalitate de a face acest lucru este să utilizați metoda #respond_to:

Clasa UsersController< ApplicationController def index @users = User.all respond_to do |format| format.html # index.html.erb format.xml { render xml: @users } format.json { render json: @users } end end end

În acest caz, #respond_to transmite un obiect format blocului la care puteți atașa apelul de randare corespunzător. Dacă nu faceți nimic, html va fi redat folosind șablonul standard Rails (app/views/index.html.erb în acest exemplu).

Funcția #render este suficient de inteligentă pentru a înțelege cum să redați o mare varietate de formate. Când îi transmiteți cheia:json , va apela #to_json pe valoarea, în acest exemplu @users . Aceasta va converti obiectele dvs. Ruby în șiruri JSON, care vor fi transmise aplicației solicitante.

Acesta este modul în care obțineți API-ul. Desigur, crearea unui API poate fi puțin mai complicată dacă doriți să faceți niște lucruri fanteziste, dar totul ține de elementele de bază.

Specificarea atributelor de returnare

Să presupunem că doriți să vă asigurați că nu returnați adresa de e-mail a unui utilizator împreună cu un obiect User. În acest caz, veți dori să modificați atributele care vor fi returnate, modificând ceea ce face metoda #to_json.

Anterior, ați fi suprascris pur și simplu metoda #to_json cu versiunea dvs., dar acum nu mai trebuie - de fapt, înlocuiți metoda #as_json. Metoda #as_json este folosită în metoda #to_json, deci modificarea acesteia schimbă implicit rezultatul #to_json , dar într-un mod destul de specific.

#to_json face 2 lucruri: rulează #as_json și primește un hash al atributelor care urmează să fie redate în JSON. Apoi se redă în JSON folosind ActiveSupport::json.encode . Deci, modificând #as_json , sunteți mai precis cu privire la partea din metoda #to_json pe care doriți să o modificați.

În cazul nostru, facem acest lucru modificând #as_json în modelul nostru pentru a returna numai atributele de care avem nevoie:

# app/models/user.rb clasa Utilizator< ActiveRecord::Base # Вариант 1: Полное переопределение метода #as_json def as_json(options={}) { :name =>self.name ) # NU includeți câmpul de e-mail end # Opțiunea 2: Folosiți metoda standard #as_json def as_json(options=()) super(only: [:name]) end end

Apoi, în controlerul nostru, tot ce trebuie să facem este să redăm JSON ca de obicei (exemplul de mai jos va returna întotdeauna JSON, indiferent dacă a fost trimisă sau nu o solicitare HTML):

# app/controllers/users_controller.rb clasa UsersController< ApplicationController def index render json: User.all end end

Rețineți că nu trebuie să apelați singur #to_json când utilizați #render - o va face pentru dvs.

Uneori, Heroku poate necesita pași suplimentari pentru a afișa corect paginile de eroare. Uite. Poate fi necesar să eliminați mai întâi paginile statice din aplicația/directorul public.

Asigurarea din exterior

Să presupunem că doriți să permiteți accesul la API numai dacă utilizatorul este conectat. Autentificarea controlerului dvs. existent deja face treaba - asigurați-vă doar că aveți setul corect #before_action (de exemplu, before_action:require_login). Este posibil să doriți o funcționalitate în care atât utilizatorii autentificați, cât și cei care nu sunt conectați pot vizualiza pagina, dar fiecare trebuie să vadă date diferite. Nu doriți ca utilizatorii neconectați să poată face solicitări API pentru a prelua date sensibile. De asemenea, nu doriți să permiteți utilizatorilor neautorizați să viziteze anumite pagini HTML.

Dacă doriți să procesați cereri de la o aplicație care nu este browser (de exemplu, din linia de comandă), nu vă puteți baza pe cookie-urile de browser pentru autentificare. Acesta este motivul pentru care majoritatea API-urilor folosesc token-uri native ca parte a procesului de autentificare. Vom vorbi mai mult despre jetoane în următoarea lecție.

Pasii urmatori

Acum aveți abilitățile de a vă folosi aplicația Rails pentru a servi nu doar HTML, ci și orice alt format. Dacă doriți să mergeți mai departe și să lăsați alți dezvoltatori să construiască lucruri folosind platforma dvs. (de exemplu, pentru a putea face cereri programatice în loc să se autentifice ca utilizator), va trebui să vă faceți sistemul API mult mai sigur. Nu vom acoperi totul aici, dar verificați următoarele:

  • Articolul Building Awesome Rails API-uri descrie multe dintre cele mai bune abordări pentru trecerea de la o aplicație de jucărie la API-uri standard din industrie.

Arhitectura orientată spre servicii

Este timpul să introducem o abordare arhitecturală numită Arhitectură Orientată către Servicii (SOA). Ideea de bază este că aplicația dvs. va consta din multe servicii, precum un sistem de plată, înregistrarea utilizatorilor, un modul de recomandare etc. În loc să construiți totul într-o aplicație principală, împărțiți subsistemele în bucăți complet independente care interacționează între ele folosind API-uri interne.

Acest lucru este bun din multe motive. Asigurându-vă că fiecărei părți a aplicației dvs. nu îi pasă cum funcționează celelalte părți și știe doar cum să solicite date prin intermediul API-ului lor, puteți face modificări semnificative codului de serviciu, iar restul aplicației va funcționa ca înainte. Puteți înlocui complet un serviciu cu altul și, atâta timp cât comunică folosind aceleași metode API, va funcționa foarte bine. Puteți utiliza API-uri externe ca parte a aplicației dvs. (cum ar fi procesatorii de plăți) în loc să le scrieți pe ale dvs. Puteți crea o aplicație PHP care interacționează cu o aplicație Python care interacționează cu o aplicație Rails și totul va funcționa, deoarece comunică între ei folosind API-ul.

În general, este o idee bună să încercați să păstrați fiecare parte a aplicației dvs. cât mai independentă posibil. Conceptul de SOA vă încurajează să vă gândiți exact în ceea ce privește metodele pe care doriți să le expuneți altor părți ale aplicației dvs. și vă va îmbunătăți codul pe parcurs. În plus, presupunând că fiecare componentă majoră a aplicației dvs. este independentă, puteți, de asemenea, să izolați problemele mult mai ușor și să gestionați erorile mai inteligent.

Utilizarea unei arhitecturi orientate către servicii pentru o întreagă aplicație este ca și cum a descompune un script Ruby uriaș și complex în clase și metode ingenioase, doar la scară mai mare.

Unul dintre cele mai cunoscute cazuri de tranziție la o arhitectură orientată spre servicii este Amazon.com. Într-o zi din 2002, Jeff Bezos a declarat fără îndoială că toate echipele de lucru trebuie să treacă la SOA sau să fie concediate. Notoriu postare pe blog un angajat Google, destinat în scopuri interne, dar expus accidental publicului, a vorbit despre puterea Amazon folosind SOA. Aceasta este o lectură grozavă, așa că asigurați-vă că o evaluați, dar principalele teze ale scrisorii lui Bezos sunt extrase din următoarele citate din postare:

1) Toate comenzile își oferă acum datele și funcționalitatea prin interfețe de serviciu.

2) Echipele trebuie să comunice între ele prin aceste interfețe.

3) Sunt interzise alte forme de comunicare între procese: fără legături directe, fără citire directă a datelor de la o altă comandă, fără modele de memorie partajată, fără „backdoors” și altele asemenea. Singura modalitate permisă de a comunica este accesarea interfeței de serviciu prin rețea.

4) Nu contează ce tehnologie folosesc. HTTP, Corba, Pubsub, protocoale native - nu contează. lui Bezos nu-i pasă.

5) Toate interfețele de service, fără excepție, trebuie să fie proiectate inițial cu capacitatea de a fi controlate din exterior. Adică, echipa trebuie să planifice și să proiecteze pentru a putea oferi o interfață dezvoltatorilor din afara companiei. Fara exceptii.

6) Oricine ignoră aceste cerințe va fi concediat.

SOA este o afacere serioasă. Sigur, există o mulțime de probleme care apar atunci când îl utilizați - consultați această postare pe „lecțiile învățate” Amazon - dar are o cantitate incredibilă de beneficii.

Probabil că nu vă veți face prea multe griji cu privire la SOA în timp ce construiți aplicații „de jucărie” pentru dvs., dar această întrebare va apărea cu siguranță când veți începe să lucrați pentru o companie IT, așa că este o bună practică să cunoașteți acest lucru.

Scopul tău

  1. Citiți Secțiunea 7 din Ghidul șinelor pentru controlere pentru a afla despre randarea JSON și XML.
  2. Nu sunt obligatorii vizionare (pentru că merg puțin mai departe decât avem în prezent), dar dacă sunteți interesat, aruncați o privire la Railscasts în secțiunea Resurse suplimentare din partea de jos a tutorialului pentru a afla mai multe despre beneficiile API.

Concluzie

Vom lucra mai îndeaproape cu aplicația dvs. ca API în timpul cursului Javascript. În acest curs, veți crea mai multe aplicații full-stack care utilizează apeluri AJAX pentru o experiență de utilizator mai bună, care implică de fapt redarea datelor XML sau JSON în loc de o pagină HTML completă. În continuare, veți crea mai multe aplicații Javascript cu o singură pagină care se bazează pe API-ul furnizat de aplicația Rails pentru a obține toate datele de care au nevoie din baza de date și, în caz contrar, vor rula pe partea client (în browser).

Cel mai bun mod de a face față unui API este să creați și să interacționați cu acesta, pe care ne vom concentra în proiectele noastre.

Salutari!
În acest articol, ne vom uita la ce este un API, unde, cum și pentru ce este utilizat. Ne vom uita, de asemenea, la modul în care API-ul poate fi utilizat în dezvoltarea dvs. web și cum poate face viața mai ușoară unui programator web.

Deci, să începem cu o definiție. API (Application Programming Interface) este o interfață de programare, o interfață pentru crearea de aplicații. Într-un limbaj mai ușor de înțeles, API-ul este un cod gata făcut pentru a simplifica viața unui programator. API-ul a fost creat astfel încât programatorul să poată facilita cu adevărat sarcina de a scrie cutare sau cutare aplicație folosind cod gata făcut (de exemplu, funcții). Cunoscutul jQuery scris în JavaScript este, de asemenea, un fel de API. Dacă luăm în considerare acest exemplu special, atunci jQuery face mult mai ușor să scrieți cod. Ceea ce s-ar putea face în 30 de rânduri cu instrumentele JavaScript obișnuite, este scris prin jQuery în 5-6. Dacă luăm în considerare API-ul în general, atunci puteți găsi o mulțime de servicii care reprezintă soluții de dezvoltare. Cel mai faimos astăzi este serviciul code.google.com, care oferă aproximativ cincizeci de API-uri diferite! Aceasta este o interfață pentru crearea de aplicații Android și diverse API-uri pentru lucrul cu AJAX și diverse API-uri de aplicații care pot fi ușor personalizate după bunul plac.

La urma urmei, are sens să scrii cod cu propriile mâini? De ce să lucrezi la ceea ce a fost deja creat? Are sens să refuzi soluții gratuite (și de fapt, ajutor gratuit) în dezvoltarea web? Dacă ați răspuns „NU” la toate aceste întrebări, atunci luați în considerare că înțelegeți esența API-ului.

Dar vreau și să clarific. Dezvoltatorii începători NU ar trebui să folosească soluții semifinite, deoarece nu vor face față sarcinii reale în viitor. Prin urmare, dacă sunteți un programator web începător, atunci nu utilizați semifabricate! Învață să gândești cu capul, construiește diverși algoritmi pentru a înțelege esența programării. Mai spun, adresându-mă deja tuturor, că API-ul nu este o soluție gata făcută, este un mediu, o interfață pentru crearea propriilor proiecte. Nu mănânci chiftele congelate de la magazin, nu? Le prăjiți mai întâi, nu? Această analogie surprinde foarte clar esența API-ului.

În general, am spus ce este API-ul, unde și cum este folosit, cel mai important, pentru ce. Vă doresc un studiu plăcut al programării web și înțelegerea profunzimii sale mai mari!

Fără etichete

Acest articol nu face obiectul comentariilor, deoarece autorul său nu este încă un membru cu drepturi depline al comunității. Veți putea contacta autorul numai după ce acesta va primi

Acțiune