Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • U kontaktu s
  • Što je api. Ovdje je mali popis standardnih Windows DLL-ova

Što je api. Ovdje je mali popis standardnih Windows DLL-ova

Peščanik

robustan čovjek 26. studenog 2012. u 13.59 sati

Što je API

  • Drvna soba *

Pozdrav!
U ovom članku ćemo pogledati što je API, gdje, kako i za što se koristi. Također ćemo pogledati kako se API može primijeniti u vašem web razvoju i kako može pojednostaviti život web programera.

Pa krenimo s definicijom. API (Application Programming Interface) je programsko sučelje, sučelje za kreiranje aplikacija. Razumljivijim jezikom, API je gotov kod koji pojednostavljuje život programera. API je stvoren tako da programer može stvarno olakšati zadatak pisanja aplikacije korištenjem gotovog koda (na primjer, funkcija). Dobro poznati jQuery napisan u JavaScriptu također je vrsta API-ja. Ako uzmemo u obzir ovaj konkretni primjer, onda jQuery znatno olakšava pisanje koda. Ono što bi se moglo učiniti u 30 redaka s običnim JavaScript sredstvima napisano je kroz jQuery u 5-6. Ako promatramo API općenito, onda možete pronaći puno servisa koji predstavljaju rješenja za razvoj. Danas je najpoznatiji servis code.google.com koji nudi pedesetak različitih API-ja! Ovo je sučelje za kreiranje Android aplikacija, te razni API-ji za rad s AJAX-om, te razni aplikacijski API-ji koje možete jednostavno prilagoditi svojim željama.

Uostalom, ima li smisla pisati kod vlastitim rukama? Zašto raditi na onome što je već stvoreno? Ima li smisla odustati od besplatnih rješenja (a zapravo i besplatne pomoći) u web razvoju? Ako ste na sva ova pitanja odgovorili "NE", pretpostavite da razumijete bit API-ja.

Ali također želim napraviti rezervaciju. Programeri početnici NE bi trebali koristiti polugotova rješenja, jer se u budućnosti neće nositi sa stvarnim zadatkom. Stoga, ako ste početnik web programer, nemojte koristiti poluproizvode! Naučite razmišljati svojom glavom, izgradite različite algoritme kako biste razumjeli bit programiranja. Također kažem, već se obraćajući svima, da API nisu gotova rješenja, to je okruženje, sučelje za kreiranje vaših projekata. Ne jedete smrznute hamburgere iz dućana, zar ne? Prvo ih ispečeš, zar ne? Ova analogija je vrlo jasna o suštini API-ja.

Općenito, rekao sam vam što je API, gdje i kako se koristi, najvažnije za što. Želim vam ugodno učenje web programiranja i razumijevanje njegovih sve većih dubina!

Oznake: api

Ovaj članak nije podložan komentiranju jer njegov autor još nije punopravni član zajednice. Autora ćete moći kontaktirati tek nakon što primi

Prema definiciji iz Wikipedije, API je skup gotovih klasa, procedura, funkcija, struktura i konstanti koje daje aplikacija (knjižnica, usluga) za korištenje u vanjskim softverskim proizvodima. Koriste ga programeri za pisanje svih vrsta aplikacija.

No budući da mnogo toga u Wikipediji nije dostupno za razumijevanje mnogima, pokušat ću na prste objasniti što su API-ji i za što se obično koriste, te kako se koriste.

API-ji su potpuno različiti, ali kao primjer sam odabrao situaciju u kojoj imamo lanac trgovina i samo jednu zajedničku bazu podataka. Zamislite da posjedujete partnerski program. Affiliate program funkcionira prema sljedećem principu: osoba se registrira u affiliate program i dobiva motor trgovine. Tada može staviti ovu trgovinu na svoj hosting i početi raditi. Ali svi podaci o ovoj trgovini preuzeti su iz naše baze podataka, odnosno svakom partneru trebamo dati pristup našoj dragocjenoj bazi podataka. Možete li zamisliti koliko je to opasno? Uostalom, trebamo otvoriti pristup bazi podataka izvana, kako bi sve partnerske trgovine mogle raditi s njom. Što se događa ako pristupni podaci padnu u ruke napadača?

Ovdje će nam pomoći API. Umjesto davanja pristupa bazi podataka, jednostavno ćemo kreirati API putem kojeg će partnerske trgovine primati informacije. Dakle, samo će naša API skripta raditi s bazom podataka, a trgovine će raditi s ovom skriptom.

Kako radi?
Na primjer, trgovina šalje zahtjev našem API-ju
http://ourapi.com/get_books?limit=20
i naš API razumije da treba vratiti popis knjiga, koji se sastoji od 20 primjeraka, jer smo proslijedili limit parametar jednak 20. Naša skripta (API) postavlja zahtjev bazi podataka, prima popis knjiga i vraća ih na trgovina (zapravo, samo prikazuje ) u određenom formatu. Format u kojem API vraća informacije može biti apsolutno bilo koji, glavna stvar je da ga naše trgovine razumiju. To može biti JSON, serijalizirani niz ili XML. Više nije važno, glavno je da razumijete princip.

Vi definirate skup naredbi koje API razumije. Na primjer, u našem slučaju to mogu biti naredbe kao što su dobivanje popisa knjiga, dobivanje popisa kategorija, dobivanje popularnih knjiga, dobivanje novih knjiga itd. Stoga, čak i ako napadač dobije priliku pristupiti našem API-ju, sve što može učiniti je dobiti popis knjiga, a to ne predstavlja nikakvu prijetnju našoj bazi podataka.

Nadam se da sam na jednostavnom primjeru uspio objasniti što je API. Ako imate bilo kakvih pitanja, postavite ih u komentarima ili na forumu i rado ćemo vam pomoći u njihovom rješavanju.

Počnimo s osnovama: što je API? Akronim je skraćenica od Application Programming Interface ili Application Programming Interface. Čini se da naziv govori sam za sebe, ali bolje je razmotriti detaljnije objašnjenje.

Kao što je već spomenuto, API je prije svega sučelje. Sučelje koje programerima omogućuje korištenje gotovih blokova za izgradnju aplikacije. U slučaju razvoja mobilnih aplikacija, knjižnica za rad s "pametnim domom" može djelovati kao API - sve nijanse su implementirane u biblioteci i u svom kodu se pozivate samo na taj API.

U slučaju web aplikacija, API može slati podatke u formatu koji nije standardni HTML, što ga čini prikladnim za korištenje prilikom pisanja vlastitih aplikacija. Javni API-ji trećih strana najčešće poslužuju podatke u jednom od dva formata: XML ili JSON. U slučaju da odlučite napraviti API za svoju aplikaciju, zapamtite da je JSON mnogo sažetiji i lakši za čitanje od XML-a, a usluge koje pružaju pristup podacima u XML formatu postupno ga ukidaju.

API u web aplikacijama na primjerima

Aplikacija - na primjer, Github - ima vlastiti API koji drugi programeri mogu koristiti. Kako će ga koristiti ovisi o mogućnostima koje API pruža i o tome koliko dobro funkcionira mašta programera. GitHub API omogućuje, na primjer, dobivanje informacija o korisniku, njegovom avataru, čitateljima, spremištima i mnogim drugim korisnim i zanimljivim informacijama.

Slično, zahtjev možete poslati na bilo kojem jeziku, uključujući Ruby. Odgovor na zahtjev bit će otprilike sljedeći podaci:

("prijava": "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", "events_url": "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 ":" "," najamni ": true," bio ": null," public_repos ": 39," public_gists ": 13," sljedbenici ": 15," sljedeći ": 21," created_at ": "2013-03-01T13: 48: 52Z", "updated_at": "2014-12-15T13: 55: 03Z")

Kao što možete vidjeti iz gornjeg bloka, odgovor sadrži prijavu, avatar, poveznicu na profil na stranici i u API-ju, status korisnika, broj javnih spremišta i druge korisne i zanimljive informacije.

Sam API nije dovoljan

Izgradnja cjelovitog API-ja za vašu aplikaciju samo je pola bitke. Kako namjeravate pristupiti API-ju? Kako će se vaši korisnici odnositi na to?

Prvo što vam pada na pamet je uobičajena serija HTTP zahtjeva za dobivanje informacija koje želite, a ovo je pogrešan odgovor. Najočitiji način u ovom slučaju nije najprikladniji i najjednostavniji. Bilo bi puno razumnije stvoriti posebnu biblioteku za rad sa sučeljem, koja će opisivati ​​sve potrebne načine za primanje i slanje informacija pomoću API-ja.

Upotrijebimo Github opet za primjer: za rad s API-jem ove izvrsne usluge (a njeno sučelje pruža najopsežnije mogućnosti), stvoreno je nekoliko knjižnica na raznim jezicima, na primjer, Octokit dragulj. U dokumentaciji za takve biblioteke (i dragulj prikazan kao primjer) svaki zainteresirani programer može pronaći sve potrebne načine da dobije informacije s GitHuba i pošalje ih natrag putem API-ja usluge.

Stoga, ako stvarate svoj vlastiti API, razmislite, možda je vrijedno posvetiti se stvaranju istih knjižnica za rad s njim na najčešćim jezicima. I budite spremni da na određenoj razini potražnje za vašom aplikacijom netko drugi može stvoriti vlastitu biblioteku za rad s vašim API-jem. Ovo je u redu.

korisni linkovi

U sljedećim člancima govorit ćemo o tome kako pravilno izraditi API, osigurati njegovu sigurnost i ograničiti pristup nekim informacijama.

Vrijeme je da govorimo o takvom konceptu kao API funkcije u Visual Basicu... Zašto su ove funkcije važne u Visual Basicu? Hajde da to shvatimo, prvo, kada počnete programirati u Visual Basicu, odmah ćete shvatiti da pomoću ovih funkcija možete pisati vrlo ozbiljne programe, a drugo, puno se ne može učiniti bez upotrebe API funkcija, na primjer, gotovo sve što je povezano korištenjem operacijskog sustava Windows ( na primjer: saznati korisničko ime, prostor na tvrdom disku i tako dalje).

Ali da biste počeli provoditi ove funkcije u praksi, morate znati što su, razgovarajmo prvo o tome.

Visual Basic API teorija funkcija

API Kratica je za aplikacijsko programsko sučelje ( sučelje za programiranje aplikacije). Drugim riječima, API je skup funkcija koje sam operativni sustav daje programeru za korištenje u svojim programima. Koristeći API, programeri mogu lako provesti svoje ideje u praksi.

API funkcije se mogu pozvati iz Visual Basica za obavljanje zadataka za koje standardni programski kod Visual Basica nije dovoljan. Na primjer, standardni alati Visual Basica ne dopuštaju vam da isključite ili ponovno pokrenete računalo. Međutim, sve se to lako može učiniti pozivanjem odgovarajuće API funkcije.

Gotovo sve funkcije koje se nalaze u sustavu Windows nalaze se unutar DLL-a ( Biblioteka dinamičkih veza). Sve dll datoteke nalaze se u mapi sustava Windows. Postoji preko 1000 API funkcija, grubo podijeljenih u četiri glavne kategorije.

  • Rad s aplikacijama - pokretanje i zatvaranje aplikacija, obrada naredbi izbornika, pomicanje i promjena veličine prozora;
  • Grafika - stvaranje slika;
  • Informacije o sustavu - definicija trenutnog diska, veličina memorije, ime trenutnog korisnika itd .;
  • Rad s registrom - manipuliranje Windows registrom.

Korištenje API funkcija u praksi

Prijeđimo sada izravno na korištenje ovih funkcija u praksi. API funkcije pozvane u Visual Basicu prvo se moraju deklarirati. Deklaracija navodi naziv DLL-a i funkcije, kao i informacije o broju i vrsti argumenata.

DLL procedure deklariraju se naredbom Declare u odjeljku General Declarations modula obrasca ili standardnog modula:

Deklarirajte naziv funkcije Lib "biblioteka" [([_ varijabla [, ByVal,] varijabla] ...])] Kao tip

DLL procedure koje se nalaze u standardnim modulima otvorene su prema zadanim postavkama i mogu se pozvati s bilo kojeg mjesta u aplikaciji. Postupci deklarirani u modulu obrasca su privatni i mora im prethoditi ključna riječ Private.

Odjeljak Lib vam govori gdje tražiti DLL datoteku koja sadrži funkciju. Kada se pozivate na glavne Windows knjižnice (user32.dll, kernel32.dll, gdi.dll), proširenje ne mora biti uključeno.

Ako put do datoteke nije naveden, pregledavanje direktorija počinje sljedećim redoslijedom

  1. Direktorij koji sadrži EXE datoteku programa;
  2. Trenutni imenik;
  3. imenik sustava Windows;
  4. Windows imenik;
  5. Varijabla okruženja Put.

Evo malog popisa standardnih Windows DLL-ova:

  • advapi.dll - NT zaštita, registar i druge napredne usluge;
  • comdlg.dll - standardni dijaloški okviri;
  • gdi.dll - sučelje grafičkog uređaja;
  • kernel32.dll - memorija, diskovi, procesi, resursi;
  • mpr.dll - mreže;
  • netapi32.dll - biblioteka mrežnog API-ja;
  • shell32.dll - Windows ljuska, povuci i ispusti, izbor ikona;
  • user32.dll - korisničko sučelje-prozori, izbornici, nizovi, poruke;
  • version.dll - kontrola verzije;
  • winmm.dll - multimedija, zvuk, joysticks, mjerači vremena;
  • winspoll.dll - Upravitelj ispisa.

Većina DLL procedura dokumentirana je notacijom programskog jezika C i C ++. Da biste uspješno pretvorili API funkciju u naredbu Declare, morate razumjeti mehanizam prosljeđivanja argumenata. Obično se argumenti prosljeđuju po vrijednosti. U ovom slučaju, ključna riječ ByVal stavlja se ispred naziva argumenta. Ako se argument prosljeđuje referencom, tada se postavlja ByRef.

Ovdje je najmanji popis funkcija koje se koriste u Visual Basicu:

  • BitBlt - kopira sliku s jednog hDC-a na drugi;
  • FindWindow - pronalazi Handle prozora s navedenim natpisom;
  • GetCursorPos - vraća trenutnu poziciju kursora miša (globalno);
  • GetDriveType - vraća tip pogona;
  • GetForegroundWindow - Vraća Handle aktivnog prozora;
  • SetCursorPos - postavlja novi položaj kursora miša;
  • SetVolumeLabel - mijenja oznaku diska;
  • SetWindowPos - postavlja položaj prozora s određenim Handle-om (možete koristiti i ovu funkciju da prozor bude PREKO svih;
  • ShellExecute - pokreće aplikaciju povezanu s ekstenzijom koja ima navedenu datoteku (može i jednostavno pokrenuti navedenu aplikaciju);
  • ShowCursor - skriva ili prikazuje pokazivač miša na ekranu.

Primjeri rada s registrom

Također, kod programiranja u Visual Basicu, i na drugim jezicima, postoji problem kada trebate koristiti Windows registar, ali pomoću api funkcija to je jednostavno učiniti, na primjer:

Za čitanje parametra stringa koristite funkciju GetRegString

Primjer:

Dim test As String test = GetRegString (HKEY_LOCAL_MACHINE, _ "Softver \ Microsoft \ DirectX", "Verzija") Form1.Caption = test

Za čitanje DWORD parametra GetRegDWord

Primjer:

Dim test As Long test = GetRegDWord (HKEY_LOCAL_MACHINE, _ "Softver \ Microsoft \ Internet Explorer \ AboutURLs", "Home") Form1.Caption = test

SetRegString se koristi za pisanje parametra stringa

Primjer:

SetRegString HKEY_LOCAL_MACHINE, _ "Softver \ test", "Moj program", "Opcije"

Ako ključ ili parametar nije kreiran, tada će se kreirati, ako ključ ili parametar već postoji, tada će se nove vrijednosti pisati preko starih.

Za pisanje parametra tipa DWORD, koristite SetRegDWord

Primjer:

SetRegDWord HKEY_LOCAL_MACHINE, _ "Softver \ test", "Moj program", "555"

Za brisanje ključa iz registra koristite funkciju DeleteRegKey

Primjer:

DeleteRegKey HKEY_LOCAL_MACHINE, "Softver", "test", Istina

Drugi parametar - Roditeljski ključ
Treći parametar je True ako je potrebna potvrda za brisanje ili False ako potvrda nije potrebna.

Za brisanje parametra iz registra koristite funkciju DeleteRegValue

Primjer:

DeleteRegValue HKEY_LOCAL_MACHINE, _ "Softver \ Microsoft \ Internet Explorer \ AboutURLs", "mozilla", False

Zapravo, mogućnosti API funkcija u operacijskom sustavu Windows gotovo su beskrajne. Završimo ovaj pregled ove značajke Visual Basica i, konačno, napišemo mali program koristeći API funkcije.

Ovaj program samo prikazuje poruku na ekranu, zalijepite sljedeći kod:

Privatna deklaracija funkcije BeginPath Lib "gdi32" (ByVal hdc As Long) Dokle god Privatna deklarirana funkcija EndPath Lib "gdi32" (ByVal hdc As Long) Dokle god Privatna deklarirana funkcija PathToRegion Lib "gdi32" (ByVal hdc kao dugo Privatna Decla) Funkcija SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long Private Sub Form_Load () Const TEXT = "Koristili ste API" Dim hRgn As Long Font.Name = "Times New Roman". " Font.Bold = True Font.Size = 60 Width = TextWidth (TEXT) Height = TextHeight (TEXT) BeginPath hdc Ispis TEXT EndPath hdc hRgn = PathToRegion (hdc) SetWindowRgn hWnd, hRgn, Fcrew (Walse Moveidth, Fcrew) 2 , (Screen.Height - Height) / 2 End Sub

Ovdje smo koristili 4 funkcije (BeginPath, EndPath, PathToRegion, SetWindowRgn), koje se nalaze u dvije dll biblioteke (gdi32, user32).

To je sve za sada!

Prva verzija Androida pojavila se u listopadu 2008. - prije samo 4 godine, što nije toliko za operativni sustav. Tijekom tog vremena objavljeno je više od dvadesetak ažuriranja. Većina ažuriranja uključivala je nove elemente softver sučelje ( API) koje bi aplikacije mogle koristiti za svoje potrebe. Kako bi ova ili ona verzija Androida znala hoće li moći zadovoljiti programske zahtjeve ove ili one aplikacije, uvedeno je numeriranje programskih sučelja. Broj koji karakterizira verziju sučelja bio je ugrađen u samu aplikaciju, a sustav ga je koristio za utvrđivanje kompatibilnosti ove aplikacije sa samom sobom. Taj se broj zvao "razina API-ja". Ukupno je već bilo 17 razina, od kojih je svaka sljedeća uključivala sve funkcije prethodne i dodavala nove.

Za pisanje aplikacije, SDK ( komplet za razvoj softvera) - skup razvojnih alata, čiji je glavni dio biblioteka klasa odgovarajuće razine API-ja. Svaka API razina ima svoju biblioteku, čije funkcije koristi aplikacija. Ako uzmemo biblioteku prve API razine za razvoj naše aplikacije, tada nećemo dobiti funkcije koje su se pojavile kasnije. Ako uzmemo biblioteku posljednje razine, riskiramo da naša aplikacija postane nekompatibilna sa starim verzijama Androida, ako odjednom koristimo funkciju koja ranije nije bila podržana. Dakle, kako ćete odabrati razinu API-ja?

U našoj aplikaciji moramo instalirati dvije API razine (postoji i treća, ali je zapravo izumrla kao nepotrebna). Prva je minimalna razina API-ja na kojoj se aplikacija može izvoditi, a druga je ciljna razina API-ja, odnosno razina API-ja na kojoj se aplikacija kompilira. Prilikom objavljivanja aplikacije, ta razina treba biti što pristupačnija u tom trenutku, tako da u novim verzijama Androida ne radi u načinu kompatibilnosti, već koristi sve značajke nove verzije operativnog sustava (neovisno o autoru). samog programa). U vrijeme pisanja programa, treba ga kompajlirati na najnižu moguću razinu API-ja kako se ne bi koristile nove funkcije.

Kao rezultat, dobivamo sljedeću metodologiju razvoja aplikacije:

  1. Proučavamo ciljanu publiku - koja je verzija Androida instalirana na njihovim pametnim telefonima. Ako pišemo za sve, bit će korisno upoznati se s stalno ažuriranim rasporedima za korištenje određene verzije sustava na mobilnim uređajima: http://developer.android.com/intl/ru/about/dashboards/ index.html. Danas vidimo da se većina već nalazi na API razini 10, ali postoje i prilično veliki dijelovi koji se nalaze na razini 7 i 8. Razlike u razinama možete pronaći ovdje (http://developer.android.com/intl/ru/ vodič /topics/manifest/uses-sdk-element.html) klikom na odgovarajući API broj u tablici.
  2. Ako ne želimo izgubiti oko 10% publike, biramo minimalnu API razinu 7. Inače možemo odabrati API razinu 10, na kojoj danas sjedi gotovo polovica naših korisnika. Instalirajte SDK koji odgovara odabranoj minimalnoj razini.
  3. Postavljamo ciljnu razinu jednaku minimalnoj, napišemo i kompajliramo program za nju. Pokrećemo ga i testiramo na emulatoru pametnog telefona s minimalnim instaliranim API-jem.
  4. Nakon pisanja i otklanjanja pogrešaka programa, povećavamo ciljnu razinu za jedan, kompajliramo program za SDK nove ciljne razine i testiramo ga u novom emulatoru pametnog telefona s odgovarajućom razinom. Zatim nastavljamo povećavati ciljnu razinu API-ja, kompajlirati i testirati program dok ne dosegnemo najvišu razinu API-ja.
  5. To je to, sada možete objaviti program. Kada se objavi nova verzija Androida s novom razinom API-ja, naš će program biti uključen u nju u načinu kompatibilnosti i radit će kao i prije. Kako bi program radio izravno, a ne u načinu kompatibilnosti, uzimamo naš projekt, preuzimamo novi SDK najnovije API razine i kompajliramo aplikaciju pod njim. Sada će se aplikacija pokrenuti na novom sustavu kao i obično, i može izgledati malo drugačije, u tradiciji nove verzije operativnog sustava. Istodobno, na starijim verzijama sustava aplikacija ostaje ista.
Kao rezultat toga, razmišljajući, za sebe sam se odlučio na API razinu 7. Osim toga, kada sam koristio neke nove funkcije koje su se pojavile u mnogo kasnijim API-jima (na primjer, fragmenti), sama razvojna okolina mi je ponudila korištenje posebnog paketa kompatibilnosti, i dodao je u projekt... Kao rezultat toga, mogao sam koristiti neke nove funkcionalnosti iz novog API-ja u starom. Međutim, ovo je druga tema.

Vrhunski povezani članci