Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • U kontaktu sa
  • Šta radi sa api-jem. Evo male liste standardnih Windows DLL-ova

Šta radi sa api-jem. Evo male liste standardnih Windows DLL-ova

Sandbox

krupan čovek 26. novembar 2012. u 13:59

Šta je API

  • Drvna soba *

Pozdrav!
U ovom članku ćemo pogledati šta je API, gdje, kako i za šta se koristi. Također ćemo pogledati kako se API može koristiti u vašem web razvoju i kako može olakšati život web programeru.

Pa počnimo s definicijom. API (Application Programming Interface) je programski interfejs, interfejs za kreiranje aplikacija. U razumljivijem jeziku, API je gotov kod koji pojednostavljuje život programera. API je kreiran kako bi programer zaista mogao olakšati zadatak pisanja ove ili one aplikacije korištenjem gotovog koda (na primjer, funkcija). Dobro poznati jQuery napisan u JavaScript-u je takođe vrsta API-ja. Ako uzmemo u obzir ovaj konkretni primjer, onda jQuery znatno olakšava pisanje koda. Ono što se može uraditi u 30 redova sa uobičajenim JavaScript alatima, napisano je kroz jQuery u 5-6. Ako posmatramo API općenito, onda možete pronaći mnogo servisa koji predstavljaju razvojna rješenja. Danas je najpoznatiji servis code.google.com koji nudi pedesetak različitih API-ja! Ovo je interfejs za kreiranje Android aplikacija, i razni API-ji za rad sa AJAX-om, i razni API-ji za aplikacije koje možete lako prilagoditi na svoj način.

Uostalom, ima li smisla pisati kod vlastitim rukama? Zašto raditi na onome što je već stvoreno? Ima li smisla odbiti besplatna rješenja (i zapravo besplatnu pomoć) u web razvoju? Ako ste na sva ova pitanja odgovorili „NE“, smatrajte da razumijete suštinu API-ja.

Ali takođe želim da razjasnim. 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 da biste razumjeli suštinu programiranja. Takođe kažem, već se obraćajući svima, da API nije gotovo rešenje, to je okruženje, interfejs za kreiranje sopstvenih projekata. Ne jedete smrznute ćufte iz prodavnice, zar ne? Prvo ih ispržiš, zar ne? Ova analogija vrlo jasno hvata suštinu API-ja.

Generalno, rekao sam šta je API, gde i kako se koristi, najvažnije, za šta. Želim vam ugodno učenje web programiranja i razumijevanje njegovih širih dubina!

Nema oznaka

Ovaj članak ne podliježe komentarima, jer njegov autor još nije punopravni član zajednice. Autora ćete moći kontaktirati tek nakon što primi

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

Ali pošto veći deo Wikipedije nije razumljiv mnogim ljudima, pokušaću na prste da objasnim šta je API i za šta su obično napravljeni i kako se koriste.

API-ji su potpuno različiti, ali na primjer, ja sam odabrao situaciju u kojoj imamo mrežu trgovina i samo jednu zajedničku bazu podataka. Zamislite da posjedujete partnerski program. Affiliate program radi po sljedećem principu: osoba se registruje u affiliate programu i dobija motor trgovine. Tada može staviti ovu prodavnicu na svoj hosting i početi raditi. Ali svi podaci o ovoj prodavnici preuzeti su iz naše baze podataka, odnosno svakom partneru trebamo omogućiti pristup našoj dragocjenoj bazi podataka. Možete li zamisliti koliko je to opasno? Na kraju krajeva, moramo otvoriti pristup bazi podataka izvana, kako bi sve partnerske trgovine mogle raditi s njom. Ali šta se dešava ako pristupni podaci padnu u ruke uljeza?

Ovdje će nam API pomoći. Umjesto da damo pristup bazi podataka, jednostavno ćemo napraviti API preko kojeg će partnerske trgovine primati informacije. Dakle, samo naša API skripta će raditi sa bazom podataka, a prodavnice će raditi sa 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 da vrati listu knjiga koja se sastoji od 20 kopija, jer smo prenijeli limit parametar jednak 20. Naša skripta (API) postavlja zahtjev bazi podataka, prima listu knjiga i vraća ih na pohraniti (u stvari, jednostavno 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. To više nije važno, najvažnije je da razumete princip.

Skup komandi koje API razumije ovisi o vama. Na primjer, u našem slučaju to mogu biti naredbe kao što su dobivanje liste knjiga, dobivanje liste kategorija, preuzimanje popularnih knjiga, dobivanje novih knjiga itd. Stoga, čak i ako bi napadač mogao pristupiti našem API-ju, sve što je mogao učiniti je dobiti listu knjiga, a to ne predstavlja nikakvu prijetnju našoj bazi podataka.

Nadam se da sam na jednostavnom primjeru uspio objasniti šta je API. Ako imate pitanja, postavite ih u komentarima ili na forumu i rado ćemo vam pomoći da ih riješite.

Počnimo s osnovama: šta je API? Skraćenica je skraćenica za Application Programming Interface, ili interfejs za programiranje aplikacija. Čini se da ime govori samo za sebe, ali bolje je razmotriti detaljnije objašnjenje.

Kao što je već spomenuto, API je prije svega interfejs. Interfejs koji omogućava programerima da koriste gotove blokove za izgradnju aplikacije. U slučaju razvoja mobilnih aplikacija, biblioteka za rad sa "pametnom kućom" može djelovati kao API - sve nijanse su implementirane u biblioteci i u svom kodu se pozivate samo na ovaj API.

U slučaju web aplikacija, API može vratiti podatke u formatu koji nije standardni HTML, što ga čini zgodnim za korištenje prilikom pisanja vlastitih aplikacija. Javni API-ji trećih strana najčešće vraćaju podatke u jednom od dva formata: XML ili JSON. U slučaju da odlučite da napravite 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 ukidaju ovaj drugi.

API u web aplikacijama na primjerima

Aplikacija - na primjer, Github - ima svoj API koji drugi programeri mogu koristiti. Kako će ga koristiti zavisi od mogućnosti koje API pruža i koliko dobro funkcioniše mašta programera. Github API omogućava, na primjer, da dobijete informacije o korisniku, njegovom avataru, čitaocima, spremištima i mnogim drugim korisnim i zanimljivim informacijama.

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

( "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", "events_url" : "https://api.github.com/users/Freika/events(/privacy)", "received_events_url" : "https://api.github.com/users/Freika/received_events", "type" : "Korisnik" , "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, "following" : 21, "created_at" : "2013-03-01T13:48:52Z" , "updated_at" : "2014-12-15T13:55:03Z" )

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

Jedan API nije dovoljan

Kreiranje punopravnog API-ja za vašu aplikaciju samo je pola bitke. Kako ćete pristupiti API-ju? Kako će mu vaši korisnici pristupiti?

Prvo što mi pada na pamet je uobičajena serija HTTP zahtjeva kako bi se dobila željena informacija, a ovo je pogrešan odgovor. Najočigledniji način u ovom slučaju nije najprikladniji i najjednostavniji. Bilo bi mnogo razumnije napraviti posebnu biblioteku za rad sa interfejsom, koja će opisivati ​​sve potrebne načine za primanje i slanje informacija pomoću API-ja.

Još jednom ćemo koristiti Github da damo primjer: za rad s API-jem ove izvrsne usluge (a njeno sučelje pruža široke mogućnosti), stvoreno je nekoliko biblioteka na različitim jezicima, na primjer, Octokit dragulj. U dokumentaciji za takve biblioteke (i dragulj naveden kao primjer), svaki zainteresovani programer će moći pronaći sve potrebne načine za primanje informacija sa Github-a i njihovo slanje nazad preko API-ja usluge.

Stoga, ako kreirate svoj vlastiti API, razmislite o kreiranju biblioteka za rad s njim i na najčešćim jezicima. I budite spremni da na određenom nivou potražnje za vašom aplikacijom, neko drugi može kreirati sopstvenu biblioteku za rad sa vašim API-jem. Ovo je u redu.

korisni linkovi

U narednim člancima ćemo govoriti o tome kako ispravno kreirati API, osigurati njegovu sigurnost i ograničiti pristup nekim informacijama.

Vrijeme je da razgovaramo o konceptu kao što je API-ji funkcija u Visual Basicu. Zašto su ove funkcije važne u Visual Basicu? Da vidimo, prvo, kada počnete programirati u Visual Basicu, odmah ćete shvatiti da pomoću ovih funkcija možete pisati vrlo ozbiljne programe, a drugo, jednostavno ne možete učiniti mnogo bez korištenja API funkcija, na primjer, gotovo sve što se odnosi na korištenje operativni sistem Windows ( na primjer: saznati korisničko ime, prostor na tvrdom disku i tako dalje).

Ali da biste počeli da primenjujete ove karakteristike u praksi, morate da znate šta su, hajde da prvo razgovaramo o tome.

Teorija o Visual Basic API funkcijama

API je skraćenica za Application Programming Interface ( interfejs za programiranje aplikacije). Drugim riječima, API je skup funkcija koje sam operativni sistem daje programeru da ih koristi 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 Visual Basic kod nije dovoljan. Na primjer, standardni alati Visual Basica ne dozvoljavaju vam da isključite računar ili ga ponovo pokrenete. Međutim, sve se to može lako uraditi pozivanjem odgovarajuće API funkcije.

Gotovo sve funkcije koje se nalaze u Windows-u nalaze se unutar DLL-a ( Dynamic Link Library). Sve dll datoteke se nalaze u Windows sistemskoj fascikli. Postoji preko 1.000 API funkcija koje se otprilike svrstavaju u četiri glavne kategorije.

  • Rad sa aplikacijama - pokretanje i zatvaranje aplikacija, obrada komandi menija, pomeranje i promena veličine prozora;
  • Grafika - kreiranje slika;
  • Informacije o sistemu - određivanje trenutnog diska, veličine memorije, trenutnog korisničkog imena, itd.;
  • Rad sa registrom - manipulacije sa Windows registrom.

Primjena API funkcija u praksi

Sada pređimo na korištenje ovih funkcija u praksi. API funkcije koje se pozivaju u Visual Basicu prvo moraju biti deklarirane. Deklaracija navodi ime DLL-a i funkcije, kao i informacije o broju i vrsti argumenata.

DLL procedure se deklarišu komandom Declare u odeljku Opšte deklaracije modula obrasca ili standardnog modula:

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

DLL procedure koje se nalaze u standardnim modulima su po defaultu javne i mogu se pozvati s bilo kojeg mjesta u aplikaciji. Procedure deklarirane u modulu obrasca su privatne i mora im prethoditi ključna riječ Private.

Odjeljak Lib vam govori gdje da tražite DLL datoteku koja sadrži funkciju. Kada upućujete na osnovne Windows biblioteke (user32.dll, kernel32.dll, gdi.dll), ekstenzija je opciona.

Ako put do datoteke nije specificiran, tada pretraživanje direktorija počinje sljedećim redoslijedom

  1. Direktorij koji sadrži EXE datoteku programa;
  2. trenutni imenik;
  3. Windows sistemski direktorij;
  4. Windows direktorij;
  5. Varijabla okruženja putanje.

Evo male liste 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 - mrežna API biblioteka;
  • shell32.dll - Windows shell, drag-and-drop, odabir ikona;
  • user32.dll - korisničko sučelje - prozori, meniji, linije, poruke;
  • version.dll - kontrola verzije;
  • winmm.dll - multimedija, zvuk, džojstici, tajmeri;
  • winspoll.dll - menadžer ispisa.

Većina DLL procedura je dokumentovana korišćenjem notacije programskog jezika C i C++. Da biste uspješno pretvorili API funkciju u naredbu Declare, morate razumjeti mehanizam prosljeđivanja argumenata. Argumenti se obično prenose po vrijednosti. U ovom slučaju, ključna riječ ByVal se stavlja ispred imena argumenta. Ako se argument prosljeđuje referencom, ByRef se postavlja.

Evo najmanje liste funkcija koje se koriste u Visual Basicu:

  • BitBlt - kopira sliku sa jednog hDC-a na drugi;
  • FindWindow - pronalazi ručku prozora sa navedenim natpisom;
  • GetCursorPos - vraća trenutnu poziciju kursora miša (globalno);
  • GetDriveType - vraća tip pogona;
  • GetForegroundWindow - vraća Handle aktivnog prozora;
  • SetCursorPos - postavlja novu poziciju kursora miša;
  • SetVolumeLabel - mijenja oznaku diska;
  • SetWindowPos - postavlja poziciju prozora sa određenom ručkom (možete koristiti i ovu funkciju da bi prozor bio na VRHU od svih;
  • ShellExecute - pokreće aplikaciju povezanu sa ekstenzijom koja ima navedenu datoteku (može i samo pokrenuti navedenu aplikaciju);
  • ShowCursor - sakriva ili prikazuje kursor miša na ekranu.

Primjeri registra

Takođe, kod programiranja u Visual Basic-u, i na drugim jezicima, postoji problem kada treba da koristite Windows registrator, ali korišćenjem api funkcija to je lako uraditi, na primer:

Da biste pročitali parametar stringa, koristite funkciju GetRegString

primjer:

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

Za čitanje GetRegDWord DWORD parametra

primjer:

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

SetRegString se koristi za pisanje string parametra

primjer:

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

Ako ključ ili parametar nije kreiran, tada će biti kreirani, ako ključ ili parametar već postoji, tada će nove vrijednosti prepisati stare.

Da biste napisali DWORD parametar, 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", Tačno

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,_ "Software\Microsoft\Internet Explorer\AboutURLs", "mozilla", False

Zapravo, mogućnosti API funkcija u Windows operativnom sistemu su gotovo neograničene. Hajde da završimo ovaj pregled ove funkcije Visual Basica i konačno napišemo mali program koristeći API funkcije.

Ovaj program jednostavno prikaže 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 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, FcreenWidth (FcreenWidth) 2 , (Visina ekrana - Visina) / 2 Kraj pod

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 oktobru 2008. godine - prije samo 4 godine, što nije mnogo za operativni sistem. Za to vrijeme već je objavljeno više od dvadesetak ažuriranja. Glavni dio ažuriranja uključivao je nove elemente softvera interfejs ( API) koje aplikacije mogu koristiti za svoje potrebe. Kako bi ova ili ona verzija Androida znala može li zadovoljiti programske zahtjeve određene aplikacije, uvedeno je numeriranje programskih interfejsa. Broj koji karakteriše verziju interfejsa ugrađen je u samu aplikaciju, a sistem ga je koristio da utvrdi kompatibilnost ove aplikacije sa samom sobom. Ovaj broj je nazvan "API nivo" (API Level). Ukupno je već akumulirano 17 nivoa, od kojih je svaki sljedeći uključivao sve funkcije prethodnog i dodao nove.

Za pisanje aplikacije, zajedno sa programskim sistemom, na računar se instalira SDK ( komplet za razvoj softvera) je skup razvojnih alata, čiji je glavni dio biblioteka klasa odgovarajućeg API nivoa. Svaki API nivo ima svoju biblioteku, čije funkcije koristi aplikacija. Ako uzmemo biblioteku prvog API nivoa za razvoj naše aplikacije, tada nam neće biti na raspolaganju funkcije koje su se pojavile kasnije. Ako uzmemo biblioteku posljednjeg nivoa, rizikujemo da našu aplikaciju učinimo nekompatibilnom sa starijim verzijama Androida ako iznenada koristimo funkciju koja ranije nije bila podržana. Dakle, kako odabrati API sloj?

U našoj aplikaciji moramo instalirati dva API nivoa (postoji i treći, ali je zapravo izumro kao nepotreban). Prvi je minimalni nivo API-ja na kojem će se aplikacija moći pokrenuti, a drugi je ciljni nivo API-ja, odnosno nivo API-ja na kojem se aplikacija kompajlira. Prilikom objavljivanja aplikacije ovaj nivo treba da bude što pristupačniji u tom trenutku, tako da u novim verzijama Androida ne radi u režimu kompatibilnosti, već koristi sve sitnice nove verzije operativnog sistema (ne zavisi od autor samog programa). U vrijeme pisanja programa, treba ga kompajlirati na najniži mogući nivo API-ja kako se ne bi koristile nove funkcije.

Kao rezultat, dobijamo sljedeću metodologiju razvoja aplikacija:

  1. Proučavamo ciljnu publiku - koja je verzija Androida instalirana na njihovim pametnim telefonima. Ako pišemo za sve, onda će biti korisno upoznati se sa stalno ažuriranim rasporedima za korištenje jedne ili druge verzije sistema na mobilnim uređajima: http://developer.android.com/intl/ru/about/dashboards/ index.html . Danas vidimo da se većina već nalazi na nivou API 10, ali postoje i prilično veliki komadi koji se nalaze na nivoima 7 i 8. Razlike u nivoima možete vidjeti ovdje (http://developer.android.com/intl/ru /guide /topics/manifest/uses-sdk-element.html) klikom na odgovarajući API broj u tabeli.
  2. Ako ne želimo da izgubimo oko 10% publike, biramo minimalni API nivo 7. Inače možemo izabrati API nivo 10, koji danas koristi skoro polovina korisnika. Instalirajte SDK koji odgovara odabranom minimalnom nivou.
  3. Postavljamo ciljni nivo na minimum, napišemo i kompajliramo program za njega. Pokrećemo ga i testiramo na emulatoru pametnog telefona sa instaliranim minimalnim nivoom API-ja.
  4. Nakon pisanja i otklanjanja grešaka u programu, povećavamo ciljni nivo za jedan, kompajliramo program pod SDK novog ciljnog nivoa i testiramo ga u novom emulatoru pametnog telefona sa odgovarajućim nivoom. Zatim nastavljamo da povećavamo ciljni API nivo, kompajliramo i testiramo program dok ne dostignemo najviši nivo API-ja.
  5. Sve, sada možete objaviti program. Kada bude objavljena nova verzija Androida sa novim nivoom API-ja, naš program će biti uključen u režim kompatibilnosti u njemu i radiće kao i do sada. Da bi program radio direktno, a ne u režimu kompatibilnosti, uzimamo naš projekat, preuzimamo novi SDK najnovijeg API nivoa i kompajliramo aplikaciju pod njim. Sada će aplikacija početi na novom sistemu kao i obično, i može izgledati malo drugačije, u tradiciji nove verzije operativnog sistema. Istovremeno, na starijim verzijama sistema aplikacija ostaje ista kakva je bila.
Na kraju sam se, razmislivši, za sebe odlučio na API nivo 7. Osim toga, kada koristim neke od novih funkcija koje su se pojavile u mnogo kasnijim API-jima (na primjer, fragmenti), samo razvojno okruženje sugeriralo je da koristim posebnu kompatibilnost paket i dodao ga u projekat. Kao rezultat toga, mogao sam koristiti neke od novih funkcija iz novih API-ja u starom. Međutim, ovo je druga tema.

Top Related Articles