» »

Klasifikace motorových olejů podle API. Co je api? Co znamená api?

03.10.2023

Začněme se základy: co je API? Zkratka znamená Application Programming Interface nebo aplikační programovací rozhraní. Zdá se, že název mluví sám za sebe, ale je lepší zvážit podrobnější vysvětlení.

Jak již bylo zmíněno, API je především rozhraní. Rozhraní, které umožňuje vývojářům používat připravené bloky k sestavení aplikace. V případě vývoje mobilních aplikací může knihovna pro práci s chytrou domácností fungovat jako API – všechny nuance jsou implementovány v knihovně a k tomuto API přistupujete pouze ve svém kódu.

V případě webových aplikací může API vracet data v jiném formátu, než je standardní HTML, což usnadňuje použití při psaní vlastních aplikací. Veřejná rozhraní API třetích stran nejčastěji poskytují data v jednom ze dvou formátů: XML nebo JSON. V případě, že se rozhodnete vytvořit API pro vaši aplikaci, nezapomeňte, že JSON je mnohem výstižnější a snáze čitelný než XML a služby poskytující přístup k datům ve formátu XML od toho druhého postupně upouštějí.

API ve webových aplikacích s příklady

Aplikace – například Github – má své vlastní API, které mohou používat ostatní vývojáři. Jak jej budou používat, závisí na možnostech, které API poskytuje, a na tom, jak dobře funguje představivost vývojářů. GitHub API umožňuje například získat informace o uživateli, jeho avatarovi, čtenářích, úložištích a mnoho dalších užitečných a zajímavých informací.

Podobným způsobem můžete odeslat požadavek v jakémkoli jazyce, včetně Ruby. Odpověď na žádost bude přibližně následující informace:

( "login" : "Freika" , "id" : 3738638, "avatar_url" : "https://avatars.githubusercontent.com/u/3738638?v=3", "gravatar_id" : "" , "url" : "https://api.github.com/users/Freika", "html_url" : "https://github.com/Freika" , "followers_url" : "https://api.github.com/users/Freika/followers", "following_url" : "https://api.github.com/users/Freika/following(/other_user)", "gists_url" : "https://api.github.com/users/Freika/gists(/gist_id)", "starred_url" : "https://api.github.com/users/Freika/starred(/owner)(/repo)", "subscriptions_url" : "https://api.github.com/users/Freika/subscriptions", "organizations_url" : "https://api.github.com/users/Freika/orgs", "repos_url" : "https://api.github.com/users/Freika/repos", "url_událostí" : "https://api.github.com/users/Freika/events(/privacy)", "received_events_url" : "https://api.github.com/users/Freika/received_events", "type" : "User" , "site_admin" : false , "name" : "Evgeniy" , "company" : "" , "blog" : "http://frey.su/" , "location" : " Barnaul" , "email" : "" , "najímatelné" : true , "bio" : null, "public_repos" : 39, "public_gists" : 13, "followers" : 15, "followers" : 21, "created_at" : "2013-03-01T13:48:52Z" , "updated_at" : "2014-12-15T13:55:03Z" )

Jak je patrné z bloku výše, odpověď obsahuje login, avatar, odkaz na profil na webu a v API, stav uživatele, počet veřejných úložišť a další užitečné a zajímavé informace.

Samotné API nestačí

Vytvoření plnohodnotného API pro vaši aplikaci je jen polovina úspěchu. Jak byste měli přistupovat k API? Jak k němu budou vaši uživatelé přistupovat?

První, co vás napadne, je obvyklá série HTTP požadavků na získání požadovaných informací, a to je špatná odpověď. Nejviditelnější metoda v tomto případě není nejpohodlnější a nejjednodušší. Mnohem rozumnější by bylo vytvořit speciální knihovnu pro práci s rozhraním, která bude popisovat všechny potřebné způsoby přijímání a odesílání informací pomocí API.

Použijme Github ještě jednou jako příklad: pro práci s API této skvělé služby (a její rozhraní poskytuje rozsáhlé možnosti) bylo vytvořeno několik knihoven v různých jazycích, například drahokam Octokit. V dokumentaci pro takové knihovny (a klenotu uvedeném jako příklad) bude každý zainteresovaný vývojář schopen najít všechny potřebné způsoby, jak získat informace z Githubu a odeslat je zpět prostřednictvím rozhraní API služby.

Pokud tedy vytváříte vlastní API, zvažte možná vytvoření knihoven pro práci s ním v nejběžnějších jazycích. A buďte připraveni, že při určité úrovni poptávky po vaší aplikaci si někdo jiný může vytvořit vlastní knihovnu pro práci s vaším API. To je v pořádku.

Užitečné odkazy

V dalších článcích si povíme, jak správně vytvořit API, zajistit jeho bezpečnost a omezit přístup k některým informacím.

Je třeba také poznamenat, že programátor má často k dispozici několik různých API, aby dosáhl stejného výsledku. Každé API je navíc obvykle implementováno pomocí softwarových komponent API nižší úrovně abstrakce.

Například: aby se v prohlížeči zobrazil řádek „Ahoj, světe!“. Vše, co musíte udělat, je vytvořit dokument HTML s minimálním nadpisem a jednoduchým tělem obsahujícím tento řádek. Co se stane, když prohlížeč otevře tento dokument? Prohlížeč předá název souboru (nebo již otevřený deskriptor souboru) knihovně, která zpracovává dokumenty HTML, která naopak pomocí rozhraní API operačního systému přečte tento soubor a pochopí jeho strukturu a zavolá operace jako „vymazat okno“, „napiš Ahoj, světe ve vybraném písmu!“, během těchto operací bude knihovna grafických primitiv kontaktovat knihovnu rozhraní okna s odpovídajícími požadavky a tato knihovna bude kontaktovat API operačního systému s požadavky jako „vlož to moje grafická karta to ukládá do paměti."

Navíc téměř na každé úrovni existuje několik možných alternativních API. Například: mohli bychom napsat zdrojový dokument ne v HTML, ale v LaTeXu a k zobrazení bychom mohli použít jakýkoli prohlížeč. Různé prohlížeče obecně používají různé HTML knihovny a navíc to celé lze (obecně řečeno) zkompilovat pomocí různých primitivních knihoven a na různých operačních systémech.

Hlavní výzvy stávajících víceúrovňových systémů API jsou tedy:

  • Potíže s přenosem programového kódu z jednoho systému API do druhého (například při změně OS);
  • Ztráta funkčnosti při přechodu z nižší úrovně na vyšší. Zhruba řečeno, každá „vrstva“ API je vytvořena pro usnadnění provádění některých standardních operací. Zároveň se ale stává opravdu obtížné nebo zásadně nemožné provádět některé další operace, které poskytuje nižší úroveň API.

Základní typy API

  • Přístup k API je omezen pouze na interní vývojáře
  • Aplikace jsou zaměřeny na zaměstnance podniků

Obchodní řidiči:

  • Důslednost vývoje
  • Snížení nákladů
  • Zvýšená efektivita vývoje

Partnerská API

  • Rozhraní API jsou k dispozici pouze omezené skupině obchodních partnerů
  • Aplikace jsou určeny pro koncové spotřebitele a firemní uživatele

Obchodní řidiči:

  • Automatizace procesu vývoje
  • Rozvoj partnerských vztahů
  • Optimalizace procesu interakce s partnery

Veřejná rozhraní API

Přístup je udělen jakémukoli externímu vývojáři Aplikace jsou zaměřeny na koncové uživatele

Obchodní řidiči:

  • Vývoj nových služeb
  • Vývoj ekosystému
  • Omnichannel interakce

Nejznámější API

API operačních systémů

GUI API

  • Direct3D (součást DirectX)
  • DirectDraw (součást DirectX)

Audio API

  • DirectSound (součást DirectX)
  • DirectMusic (součást DirectX)

API autentizačních systémů

Princip a využití API Economy

  • Práce s API musí mít měřitelnou hodnotu. Neplýtvejte prostředky vytvářením API, které žádný vývojář nepoužije.
  • API vytvořte pouze v případě, že bude mít konkrétního uživatele. Musí existovat partner nebo ekosystém, který to potřebuje.
  • Průměrný podnik vždy používá více rozhraní API, než sám vytvoří. Jeho oddělení se budou zabývat spoustou API a CIO bude mít za úkol toto spravovat.
  • Rozhraní API jsou zásadní pro internet věcí, schopnosti spotřebitelů, analýzy a informační systémy. Pokud na tyto věci při vytváření API zapomenete, dobře se zamyslete.

Rozhraní API umožňují organizacím vytvářet personalizované uživatelské prostředí

Očekávání a chování zákazníků se mění

Kupující:

  • Vyžadují individuální přístup – podle jejich podmínek
  • Očekávejte komplexní integrované služby
  • Přejdou ke každému, kdo lépe uspokojí jejich požadavky

organizace:

  • Komunikujte se zákazníky prostřednictvím interaktivních webových stránek, mobilních aplikací vytvořených pro tento účel a dalších přátelských digitálních rozhraní
  • Očekávejte komplexní integrovanou službu
  • Přejdou ke každému, kdo lépe uspokojí jejich požadavky.

API jsou všude!

Chronologie událostí

2019

Výzkum TAdviser společně s PJSC VTB Bank za účasti Skolkovo: V ruském bankovním sektoru začíná transformace API

Centrální banka pozvala asi 20 bank k účasti na pilotním projektu v oblasti otevřených API

Dne 21. srpna 2019 vyšlo najevo, že Bank of Russia působila jako koordinátor pilotního projektu v oblasti otevřených API (aplikačních programových rozhraní) pro integraci bankovních služeb v rámci Euroasijské hospodářské unie (EAEU). V době zveřejnění materiálu centrální banka společně s centrálními bankami zemí EAEU pracuje na přípravě pilotního projektu k realizaci. Bankéři, kteří obdrželi návrh centrální banky, o tom informovali Kommersant. Celkem asi 20 úvěrových institucí obdrželo dopis regulátora, který musí odpovědět o své připravenosti zúčastnit se do 23. srpna. Přečtěte si více.

Odvětví cenných papírů je připraveno na API

2. srpna 2019 vyšlo najevo, že společná studie společností SWIFT a BCG odhalila nárůst používání API na pozadí touhy společností zlepšit efektivitu a nabízet služby.

Odvětví cenných papírů se blíží bodu obratu v přijímání aplikačních programovacích rozhraní (API), protože firmy hledají vyšší efektivitu a moderní obchodní modely.

Podle průzkumu BCG se povědomí o API mezi správci aktiv jen během roku 2018 zvýšilo o 26 % (ze 46 % na 72 %). Rostoucí komerční zájem pohání pilotní schémata a případy použití, zejména mezi společnostmi spravujícími aktiva a jejich správci.

API mají potenciál pomoci odvětví cenných papírů vyrovnat se s mnoha a různorodými typy aktiv, složitými výměnami informací a rostoucími tlaky na poplatky. Zpráva identifikuje čtyři oblasti, kde mohou API prospět celému odvětví:

  • Efektivita a úspora nákladů díky automatizované výměně dat
  • Přístup k informacím v reálném čase, jako je stav vypořádání a intradenní riziko
  • Doplňkové služby: obohacená data a analýzy
  • Provozní metriky umožňující poskytovatelům služeb porovnávat výkon mezi hráči na trhu

Přijímání API bylo v odvětví cenných papírů pomalejší než v jiných odvětvích finančních služeb, částečně kvůli nedostatku regulačního rámce a nedostatku konzistence v ochotě účastníků trhu přijímat API. Společnosti spravující aktiva se výrazně liší ve své technické vyspělosti a otevřenosti vůči interakci s poskytovateli prostřednictvím API. Přibližně 56 % respondentů v průzkumu BCG považuje úroveň přijetí API po obchodu za „experimentální“, zatímco pouze 21 % uvádí, že je „vysoká“ nebo „střední“.

Rozhraní API mohou být silným hnacím motorem inovací v post-obchodování, jak tomu bylo v odvětví plateb a dalších oblastech bankovnictví. Zájem o tuto technologii roste a první experimentální výsledky vypadají slibně. Abychom však skutečně podpořili a urychlili široké zavádění API, musíme odstranit nejistotu ohledně standardů a zlepšit porozumění technologické vyspělosti.

poznamenala Juliet Kennel, vedoucí oddělení cenných papírů a devizových trhů ve společnosti SWIFT


Zpráva poskytuje čtyři důvody, proč by průmysl měl implementovat API:

  • Interakce v rámci společné infrastruktury. Základní prvky řešení API, jako je identita, autentizace, zabezpečení a správa sítě, musí být dohodnuty na úrovni odvětví, nikoli mezi jednotlivými firmami.
  • Koordinujte standardy API pro zachování interoperability. Šíření více standardů může snížit efektivitu používání API. Průmysl potřebuje jednotný standard API, který bude fungovat napříč všemi poskytovateli.
  • Podpora síťových rozhraní API, nikoli řešení p2p. Firmy mohou těžit ze síťových rozhraní API: například jediné volání ke kontrole stavu vypořádání od makléře-dealera může být zasláno více správcům současně. Síťové řešení bude podporovat konvergenci jak pro vysvětlení dat, tak pro další charakteristiky API.
  • Splňuje přísné normy bezpečnosti a udržitelnosti. Pro úspěšný vývoj musí mít jakékoli řešení API vysokou úroveň ochrany dat a udržitelnosti.
API se stalo jednou z klíčových technologií digitální transformace celého bankovního sektoru. API nyní pronikají do odvětví cenných papírů a stávají se přední technologií mezi společnostmi, které chtějí přejít na digitální servis. Navzdory stávajícím potížím s přijetím API, pokud jde o interoperabilitu a bezpečnost, věříme, že budou překonány, a očekáváme další implementaci technologie v blízké budoucnosti.

řekla Sumitra Karthikeyan, vedoucí oddělení cenných papírů v BCG


Zavedení API na trhu cenných papírů založeného na SWIFT může zajistit dosažení takových klíčových cílů, jako je snížení nákladů a vytvoření dalších obchodních příležitostí pro účastníky trhu a zejména pro správcovské společnosti a koncové investory. NSD proto studuje využití otevřených API a aktivně spolupracuje se SWIFT v otázkách standardizace technologie API a praktického využití této technologie v globálním post-tradingu, otevřená bankovní platforma Tink tvrdí, že Viz také

Tento krátký termín zná každý, kdo má s vývojem alespoň nějaké zkušenosti. Ale ne každý rozumí tomu, co přesně to znamená a proč je to potřeba. Vývojář Petr Gazarov mluvil o API jednoduchými slovy na svém blogu.

Zkratka API znamená „Application Programming Interface“ (rozhraní pro programování aplikací, rozhraní pro programování aplikací). Většina velkých společností v určité fázi vyvíjí API pro klienty nebo pro interní použití. Abyste pochopili, jak a jak se API používají ve vývoji a podnikání, musíte nejprve pochopit, jak funguje World Wide Web.

World Wide Web a vzdálené servery

WWW si lze představit jako obrovskou síť vzájemně propojených serverů, na kterých je uložena každá stránka. Z běžného notebooku lze udělat server schopný obsluhovat celý web v síti a vývojáři používají místní servery k vytváření webů, než je otevřou širokému spektru uživatelů.

Po zadání do adresního řádku prohlížeče www.facebook.com Odpovídající požadavek je odeslán na vzdálený server Facebook. Jakmile prohlížeč obdrží odpověď, interpretuje kód a zobrazí stránku.

Pokaždé, když uživatel navštíví stránku na internetu, interaguje s API vzdáleného serveru. API je součást serveru, která přijímá požadavky a odesílá odpovědi.

API jako způsob, jak sloužit klientům

Mnoho společností nabízí API jako hotový produkt. Například Weather Underground prodává přístup ke svému rozhraní API pro data o počasí.

Scénář použití: Na stránkách malé firmy je formulář pro sjednávání schůzek pro klienty. Společnost do něj chce integrovat Google Calendar, aby zákazníci mohli automaticky vytvořit událost a zadat podrobnosti o nadcházející schůzce.

Aplikace API: Cílem je, aby server webu přímo kontaktoval server Google s požadavkem na vytvoření události se zadanými podrobnostmi, obdržel odpověď Google, zpracoval ji a odeslal příslušné informace do prohlížeče, například potvrzovací zprávu uživateli. .

Alternativně může prohlížeč odeslat požadavek na serverové API společnosti Google, aniž by procházel serverem společnosti.

Jak se liší rozhraní API Kalendáře Google od rozhraní API jakéhokoli jiného vzdáleného serveru v síti?

Technicky je rozdíl ve formátu požadavku a odpovědi. Pro vygenerování úplné webové stránky prohlížeč očekává odpověď ve značkovacím jazyce HTML, zatímco rozhraní Google Calendar API jednoduše vrátí data ve formátu, jako je JSON.

Je-li požadavek na API proveden serverem webové stránky společnosti, pak je to klient (stejně jako prohlížeč je klientem, když uživatel otevře web).

Díky API získá uživatel možnost provést akci, aniž by opustil web společnosti.

Většina moderních webových stránek používá alespoň několik rozhraní API třetích stran. Mnoho úloh již má hotová řešení nabízená vývojáři třetích stran, ať už jde o knihovnu nebo službu. Často je jednodušší a spolehlivější uchýlit se k hotovému řešení.

Mnoho vývojářů distribuuje aplikaci na několik serverů, které spolu komunikují pomocí API. Servery, které provádějí podpůrnou funkci k hlavnímu aplikačnímu serveru, se nazývají mikroslužby.

Když tedy společnost nabízí svým uživatelům rozhraní API, znamená to jednoduše, že vytvořila řadu speciálních adres URL, které jako odpověď vracejí pouze data.

Takové požadavky lze často odesílat prostřednictvím prohlížeče. Protože přenos dat HTTP probíhá v textové podobě, bude prohlížeč vždy schopen zobrazit odpověď. Například prostřednictvím prohlížeče můžete přímo přistupovat k GitHub API (https://api.github.com/users/petrgazarov) bez přístupového tokenu a obdržet tuto odpověď ve formátu JSON:

Prohlížeč perfektně zobrazuje odpověď JSON, kterou lze vložit do kódu. Je dostatečně snadné extrahovat data z takového textu a použít je podle svého uvážení.

Několik dalších příkladů API

Slovo „aplikace“ může mít různé významy. V kontextu API to znamená:

  • kus softwaru se specifickou funkcí,
  • celý server, celou aplikaci nebo jen samostatnou část aplikace.

Jakýkoli software, který lze jasně odlišit od prostředí, může nahradit písmeno „A“ v anglické zkratce a může mít také nějaký druh API. Když například vývojář implementuje do kódu knihovnu třetí strany, stane se součástí celé aplikace. Jako samostatný software bude mít knihovna nějaký druh API, který jí umožní interakci se zbytkem aplikačního kódu.

V objektově orientovaném návrhu je kód reprezentován jako kolekce objektů. V aplikaci mohou existovat stovky takových objektů, které spolu interagují. Každý z nich má vlastní sadu API veřejnost vlastnosti a metody pro interakci s jinými objekty v aplikaci. Objekty mohou mít také soukromé, vnitřní logika, která je skrytá před okolím a není API.

Práce s API může být odměnou i frustrující. Na jedné straně můžete interakcí s jinými aplikacemi výrazně zvýšit dosah publika a „wow“ efekt vaší aplikace. Na druhou stranu to zahrnuje čtení tuny dokumentace, studium strategií autentizace a analýzu neinformativních (nebo dokonce chybějících) chybových zpráv.

Za prvé, pokud stále úplně nerozumíte tomu, co je API (Application Programming Interface), přečtěte si vysvětlení Skillcrush a poté první část tohoto článku, abyste to dohnali.

„API“ je neuvěřitelně široký pojem – pokaždé, když vaše aplikace „mluví“ s jinou aplikací, činí tak prostřednictvím nějakého druhu API. Komponenty ve vaší vlastní aplikaci, jako jsou různé části Rails, spolu také komunikují prostřednictvím rozhraní API. Jsou to víceméně nezávislé dílčí aplikace, které poskytují data, která každá z nich potřebuje k provádění svých vlastních specifických úkolů. Ve světě aplikací je všechno API!

Když vytváříte aplikace s dynamičtějšími front-endovými funkcemi (jak jednostránkové Javascriptové aplikace, tak jednoduché aplikace s jednotlivými voláními AJAX), budou komunikovat s backendem Rails prostřednictvím vašeho vlastního API, což je ve skutečnosti jen jeden nebo dva řádky kódu navíc. , který říká vašim kontrolérům, jak mají poskytovat JSON nebo XML místo HTML.

V tomto tutoriálu se naučíte, jak vytvořit vlastní API. V následujících lekcích se budeme zabývat tím, jak interagovat s rozhraními API jiných aplikací. Lekce by měly být dobrým odrazovým můstkem pro učení o tomto tématu, ale je nepravděpodobné, že by plně pokryly všechny případy. Velkou součástí práce s API je vědět, jak číst jejich dokumentaci a zjistit, co od vás chtějí.

Body ke zvážení

Projděte si otázky a zjistěte, zda znáte odpovědi. Po dokončení úkolu se znovu otestujte.

  • Jak Rails rozumí, jaký typ souboru očekáváte jako odpověď, když odešlete požadavek HTTP.
  • Jaký je účel metody #respond_to?
  • Jak vrátíte objekt User a zároveň určíte atributy, které nechcete, aby byly součástí tohoto objektu (to znamená, že nemůžete vrátit User.first)?
  • Pojmenujte 2 kroky ze zákulisí metody #to_json.
  • Jak řeknete akci ovladače, aby vykreslila pouze chybovou zprávu?
  • Jak vytvořit vlastní chybovou zprávu?
  • Proč nemůžete použít metody ověřování řadiče založené na relaci, pokud chcete povolit programová připojení k vašemu API?
  • Co je to „architektura orientovaná na služby“?

Základy API

Vaše aplikace Rails je ve skutečnosti již rozhraním API, i když si to jako rozhraní API nemusíte představit. Webový prohlížeč, který vaši uživatelé spouštějí, je také program, takže když uživatel otevře novou stránku, ve skutečnosti odešle požadavek API na vaši aplikaci Rails. Máme tendenci uvažovat tímto způsobem, protože vykreslování HTML šablon je tak běžný úkol, že tuto funkcionalitu jednoduše zapracujeme do našich serverových programů jako standardní typ odezvy a vše ostatní považujeme za něco neobvyklého.

Často však chcete podat požadavek, který nevyžaduje, abyste museli projít všemi bolestmi hlavy při používání prohlížeče. Možná vám nezáleží na struktuře stránky (HTML), ale na oplátku chcete čistá data. Řekněme, že chcete získat seznam všech uživatelů. Můžete požádat o něco jako http://yourapplication.com/users , což jistě spustí akci #index a vykreslí seznam všech uživatelů aplikace.

Ale proč se obtěžovat všemi těmito informacemi navíc, když jediné, co chcete, je seznam uživatelů? Nejjednodušší možností by bylo odeslat požadavek na stejnou adresu URL a na oplátku očekávat odpověď JSON nebo XML. Pokud správně nakonfigurujete svůj řadič Rails, získáte zpět jednoduchý objekt pole JSON obsahující všechny uživatele. úžasné!

Stejný princip platí, když komunikujete s externím API. Řekněme, že chcete získat nejnovější tweety uživatele z Twitteru. Vše, co musíte udělat, je sdělit své aplikaci Rails, jak interagovat s API Twitteru (tj. ověřit se), odeslat požadavek a zpracovat sadu „tweetů“, které budou vráceny.

Vytvoření API

Možná budete chtít ze své aplikace Rails udělat čisté backendové API pro frontendové webové stránky, nebo se jen chcete naučit, jak odeslat JSON, když si to frontend vyžádá. Tato část se nebude zabývat tím, jak vytvořit plnohodnotná RESTful API s funkcemi ověřování. Toto je hladký úvod do zacházení s vaší aplikací jako s API.

Základy

Pokud chcete, aby vaše aplikace Rails vracela JSON místo HTML, budete muset svému řadiči sdělit, aby to udělal. Skvělé je, že stejná akce ovladače může vracet různé typy v závislosti na tom, zda váš uživatel zadává běžný požadavek z prohlížeče nebo přistupuje k API prostřednictvím příkazového řádku. To určuje, jaký typ požadavku byl proveden na základě přípony požadovaného souboru, jako je example.xml nebo example.json .

Můžete zkontrolovat, co si Rails myslí o typu souboru, který očekáváte, v protokolu serveru:

Zahájeno GET "/posts/new" pro 127.0.0.1 dne 2013-12-02 15:21:08 -0800 Processing by PostsController#new as HTML

První řádek vám řekne, jaké URL bylo požadováno, a druhý vám řekne, kam bylo odesláno a jak to Rails zpracuje. Pokud byste použili rozšíření .json, vypadalo by to takto:

Zahájeno GET "/posts.json" pro 127.0.0.1 dne 2013-12-04 12:02:01 -0800 Zpracování PostsController#index jako JSON

Pokud máte spuštěnou testovací aplikaci, zkuste požádat o jiné adresy URL. Pokud je váš kontrolér nezvládne, můžete dostat chybu, ale přesto byste měli být schopni vidět, co Rails chápe jako vaše požadavky.

Vykreslování JSON nebo XML

Jakmile se rozhodnete, že chcete reagovat na požadavky pomocí JSON nebo XML, budete muset svému řadiči sdělit, aby místo HTML vykresloval JSON nebo XML. Jedním ze způsobů, jak toho dosáhnout, je použít metodu #respond_to:

Třída 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

V tomto případě #respond_to předá bloku formátovací objekt, ke kterému můžete připojit odpovídající vykreslovací volání. Pokud nic neuděláte, html se vykreslí pomocí standardní šablony Rails (v tomto příkladu app/views/index.html.erb).

Funkce #render je dostatečně chytrá, aby pochopila, jak renderovat širokou škálu formátů. Když mu předáte klíč:json , zavolá #to_json na hodnotě, v tomto příkladu @users . Tím se vaše objekty Ruby převedou na řetězce JSON, které budou předány žádající aplikaci.

Tímto způsobem získáte své API. Samozřejmě, že vytvoření API může být trochu složitější, pokud chcete dělat nějaké fantastické věci, ale vše se drží základů.

Určení vrácených atributů

Řekněme, že se chcete ujistit, že nevracíte e-mailovou adresu uživatele spolu s objektem User. V tomto případě budete chtít změnit atributy, které budou vráceny, a upravit to, co dělá metoda #to_json.

Dříve byste svou verzí jednoduše přepsali metodu #to_json, ale nyní to již nebudete muset – ve skutečnosti namísto toho přepíšete metodu #as_json. Metoda #as_json se používá v metodě #to_json, takže její modifikace implicitně mění výsledek #to_json , ale poněkud specifickým způsobem.

#to_json dělá 2 věci: spouští #as_json a získává hash atributů, které budou vykresleny do JSON. Poté se vykreslí do JSON pomocí ActiveSupport::json.encode . Takže úpravou #as_json upřesníte tu část metody #to_json, kterou skutečně chcete změnit.

V našem případě to uděláme úpravou #as_json v našem modelu tak, aby vrátil pouze atributy, které potřebujeme:

# app/models/user.rb class User< ActiveRecord::Base # Вариант 1: Полное переопределение метода #as_json def as_json(options={}) { :name =>self.name ) # NEZAHRNUJTE pole email end # Možnost 2: Použijte standardní metodu #as_json def as_json(options=()) super(pouze: [:name]) end end

Poté bude náš řadič pouze muset vykreslit JSON jako obvykle (příklad níže vždy vrátí JSON, bez ohledu na to, zda byl požadavek HTML odeslán nebo ne):

# app/controllers/users_controller.rb třída UsersController< ApplicationController def index render json: User.all end end

Pamatujte, že při použití #render nemusíte sami volat #to_json – udělá to za vás.

Někdy může Heroku vyžadovat další kroky, aby se správně zobrazily vaše chybové stránky. Podívejte se. Možná budete muset nejprve odstranit statické stránky z adresáře app/public.

Zajištění bezpečnosti zvenčí

Řekněme, že chcete povolit přístup k API pouze v případě, že je uživatel přihlášen. Vaše stávající ověřování v ovladači již tuto práci provádí – jen se ujistěte, že máte nastaveno správné #before_action (např. before_action:require_login). Možná budete potřebovat funkcionalitu, kde budou stránku moci zobrazit přihlášení i nepřihlášení uživatelé, ale každý by měl vidět jiná data. Nechcete, aby neověření uživatelé mohli provádět volání API za účelem získání citlivých dat. Stejně tak nechcete povolit neoprávněným uživatelům návštěvu určitých stránek HTML.

Pokud chcete zpracovávat požadavky z aplikace, která není prohlížečem (například z příkazového řádku), nemůžete se při ověřování spoléhat na soubory cookie prohlížeče. To je důvod, proč většina rozhraní API používá nativní tokeny jako součást procesu ověřování. O žetonech si povíme trochu více v příští lekci.

Další kroky

Nyní máte dovednosti používat svou aplikaci Rails k vykreslování nejen HTML, ale také jakéhokoli jiného formátu. Pokud chcete jít dále a umožnit ostatním vývojářům vytvářet věci pomocí vaší platformy (například aby mohli provádět programové požadavky namísto ověřování jako uživatel), budete muset svůj systém API udělat mnohem robustnější. Nebudeme se zde zabývat vším, ale podívejte se na následující:

  • Článek Building Awesome Rails APIs popisuje mnoho z nejlepších přístupů pro přechod od hračkářské aplikace k průmyslovým standardům API.

Architektura orientovaná na služby

Je čas představit architektonický přístup nazvaný Service-Oriented Architecture (SOA). Základní myšlenkou je, že vaše aplikace se bude skládat z mnoha služeb, jako je platební systém, registrace uživatelů, modul doporučení atd. Místo toho, abyste to všechno stavěli do jedné hlavní aplikace, rozdělujete subsystémy na zcela nezávislé části, které spolu komunikují pomocí interních rozhraní API.

To je dobré z mnoha důvodů. Protože každé části vaší aplikace nezáleží na tom, jak fungují ostatní části, a ví, jak si data vyžádat pouze prostřednictvím svého API, můžete provést významné změny v kódu služby a zbytek aplikace bude fungovat jako dříve. Jednu službu můžete zcela nahradit jinou, a pokud bude komunikovat pomocí stejných metod API, půjde to velmi hladce. Můžete použít externí API jako součást vaší aplikace (např. platební systémy) namísto psaní vlastních. Můžete vytvořit aplikaci PHP, která komunikuje s aplikací Python, která komunikuje s aplikací Rails, a vše bude fungovat, protože spolu komunikují pomocí API.

Obecně je dobré snažit se, aby každá část vaší aplikace byla co nejvíce nezávislá. Koncept SOA vás nutí přemýšlet z hlediska toho, jaké metody chcete vystavit ostatním částem vaší aplikace, což také vylepší váš kód. Kromě toho, za předpokladu, že každá hlavní komponenta vaší aplikace je nezávislá, budete také schopni mnohem snadněji izolovat problémy a řešit chyby smysluplnějším způsobem.

Použití architektury orientované na služby pro celou aplikaci je jako rozdělit obří, komplexní skript Ruby do úhledných tříd a metod, pouze ve větším měřítku.

Jedním z nejznámějších případů přechodu na architekturu orientovanou na služby je Amazon.com. Jednoho dne v roce 2002 Jeff Bezos bez obalu prohlásil, že všechny pracovní skupiny musí přejít na SOA, jinak budou propuštěny. Notoricky známý blogový příspěvek Zaměstnanec Google, určený pro interní účely, ale náhodně zveřejněný, hovořil o síle Amazonu pomocí SOA. Je to skvělé čtení, takže se na to určitě podívejte, ale hlavní body Bezosova dopisu jsou shrnuty v následujících citacích z příspěvku:

1) Všechny týmy nyní poskytují svá data a funkce prostřednictvím rozhraní služeb.

2) Týmy spolu musí komunikovat prostřednictvím těchto rozhraní.

3) Jiné formy meziprocesové komunikace jsou zakázány: žádná přímá spojení, žádné přímé čtení dat jiného příkazu, žádné modely sdílené paměti, žádná zadní vrátka atd. Jediným povoleným způsobem interakce je přístup k rozhraní služby přes síť.

4) Nezáleží na tom, jakou technologii používají. HTTP, Corba, Pubsub, proprietární protokoly – žádný rozdíl. Bezosovi je to jedno.

5) Všechna servisní rozhraní bez výjimky musí být zpočátku navržena s možností externího ovládání. To znamená, že tým musí plánovat a navrhovat, aby byl schopen poskytnout rozhraní vývojářům mimo společnost. Žádné výjimky.

6) Každý, kdo bude ignorovat tyto požadavky, bude vyhozen.

SOA je vážná věc. Jistě, při jeho používání se objevuje spousta problémů – podívejte se na tento příspěvek o „poučeních“ Amazonu – ale má to neuvěřitelné množství výhod.

Pravděpodobně se nebudete příliš starat o SOA, když si sami vytváříte hračkářské aplikace, ale je to určitě problém, který se objeví, když začnete pracovat pro IT společnost, takže je dobré se s ním seznámit.

Váš cíl

  1. Přečtěte si část 7 příručky Rails Controllers Guide, kde se dozvíte o vykreslování JSON a XML.
  2. Není nutné je sledovat (protože jdou o něco dále, než na co jsme aktuálně připraveni), ale pokud vás to zajímá, podívejte se na Railscasts v sekci Další zdroje ve spodní části lekce, kde se dozvíte více o výhody API.

Závěr

Během kurzu Javascript budeme blíže spolupracovat s vaší aplikací jako API. V tomto kurzu vytvoříte několik úplných aplikací, které používají volání AJAX pro lepší uživatelský zážitek, což v podstatě zahrnuje vykreslování dat XML nebo JSON namísto úplné stránky HTML. Poté vytvoříte několik jednostránkových Javascript aplikací, které se spoléhají na API poskytované vaší aplikací Rails k načtení všech potřebných dat z databáze, ale jinak běží na straně klienta (v prohlížeči).

Nejlepší způsob, jak porozumět API, je vytvořit ho a pracovat s ním, na což se zaměříme v našich projektech.