API dodatak. API dodatak API dodatak

Dodatak je dinamički učitavana biblioteka (DLL). Nakon instaliranja programa, svi dodaci uključeni u distribuciju smješteni su u direktorij c:\Program Files (x86)\Common Files\Soft Gold\Inventory 14\Plugins\... Ekstenzija *.abl je neophodna za automatsko učitavanje dodatka iz navedenog direktorija kada se aplikacija pokrene. Dodatak se također može učitati s bilo kojeg drugog mjesta na disku određivanjem putanje pretraživanja u postavkama.

Inicijalizacija API-ja dodatka

(Delphi VCL proširenja)

(Plugin sučelje za ABViewer/Inventory)

(Copyright (c) 2002-2010 SoftGold softverska tvrtka)

{************************************************************}

jedinica sgPluginItem;

sučelje

implementacija

XMLDocRef: IXMLDocument = nula;

ClientRef: IXMLNode = nula;

P: Pokazivač = nula;

PluginsHostWnd: HWND = 0;

PluginsHostWndName: string = "";

XMLAtomString: niz = "";

procedura InitializeDoc;

početi

// dobivanje jedinstvenog imena klase prozora s parametrima

PluginsHostWndName:= Format("TsgPluginsHost:%.8X:%.8X", );

// pronalazak samog prozora

PluginsHostWnd:= FindWindow(PChar(PluginsHostWndName), nula);

Ako PluginsHostWnd<>0 onda

Početi

// dobivanje niza atoma za dobivanje parametra xml dokumenta

XMLAtomString:= Format("XMLOfs%.8X%.8X",

XMLDocRef:= IXMLDocument(GetProp(PluginsHostWnd, PChar(XMLAtomString)));

If Assigned(XMLDocRef) then

Početi

// dodavanje elementa na popis

ClientRef:= XMLDocRef.DocumentElement.ChildNodes.ChildNodes.AddChild(sClient);

// inicijaliziranje adrese funkcije Invoke

ClientRef.ChildValues["Invoke"] := IntToId(Integer(@Invoke)); // heksadecimalni $XXXXXXXX

Kraj;

Kraj;

kraj;

inicijalizacija

KoInicijaliziraj(P);

InitializeDoc;

Postavljanje i pokretanje demo verzije dodatka

Demo verzija dodatka konfigurira se automatski prilikom instalacije programa i povezuje se odmah nakon pokretanja Inventora. Paket uključuje izvorni kod komponente (naziv projekta sgPlugin.dpk) i demo verziju dodatka (naziv projekta plug1.dpr).

Postupak pokretanja dodatka iz moda za otklanjanje pogrešaka:

▪ Otvoreno C:\Users\USER_NAME\Documents\Inventory 14\Plugins\Source\Delphi\Demos\Plug1\plug1.dpr

▪ Postavite opcije projekta:

Putanja pretraživanja : "..\..\Components\PlugItem";

Izlazni direktorij, na primjer: “c:\Program Files\Common Files\Soft Gold\Inventory 14\Plugins”;

Host aplikacija , na novoinstaliranu aplikaciju, na primjer: “c:\Program Files\Soft Gold\Inventory 14\Inventory 14.exe”.

▪ Pokretanje za izvršenje.

Da biste koristili komponentu u vrijeme dizajna, morate je otvoriti, ponovno izgraditi i instalirati C:\Users\USER_NAME\Documents\Inventory 14\Plugins\Source\Delphi\Components\PlugItem\sgPlugin.dpk. Nakon instaliranja komponente, komponenta TsgPluginItem pojavit će se u Delphi paleti komponenti, na kartici Soft Gold, koja se može koristiti u vrijeme dizajna, tj. mjesto na obrascu.

Dodaci su ključni dio ekosustava webpacka i pružaju zajednici moćan način uključivanja u proces kompilacije webpacka. Dodatak se može povezati s ključnim događajima koji se aktiviraju na svakom koraku potpuni pristup kompajleru i, kada je primjenjivo, trenutnoj kompilaciji.

Za uvod na visokoj razini u pisanje dodataka, počnite s pisanjem dodatka.

Započnimo pregledom uslužnog programa koji se može dodirivati, koji predstavlja okosnicu sučelja dodataka za webpack.

Kucnuti

Ova mala biblioteka je temeljni uslužni program u webpacku, ali se može koristiti i drugdje za pružanje sličnog sučelja dodatka. Mnogi objekti u webpacku proširuju klasu Tapable. Klasa izlaže metode tap, tapAsync i tapPromise koje dodaci mogu koristiti za ubacivanje prilagođenih koraka izgradnje koji će se pokretati tijekom kompilacije.

Moguće je prilagoditi ispisani izlaz prosljeđivanjem različitih argumenata funkciji reportProgress dodatka ProgressPlugin.

Za izvješćivanje o napretku, dodatak mora dodirnuti kuku pomoću opcije context: true:

Sastavljač. udice emitirati. tapAsync (( naziv: "MyPlugin" , context: true ) , (kontekst, kompajler, povratni poziv) => ( const reportProgress = context && context. reportProgress; if (reportProgress) reportProgress (0.95, "Početak rada" ) ; setTimeout (( ) => ( if (izvješćeNapredak) izvješćeNapredak (0.95, "Završen posao" ) ; povratni poziv () ; ) , 1000 ) ) ;

Funkcija reportProgress može se pozvati sa ovim argumentima:

izvješćeNapredak(postotak, ... argumenti);
  • postotak: Ovaj argument nije korišten; umjesto toga, ProgressPlugin će izračunati postotak na temelju trenutne kuke.
  • ...args: Bilo koji broj znakovnih nizova koji će biti proslijeđeni rukovatelju ProgressPlugin da bi se prijavili korisniku.

Imajte na umu da samo podskup kompajlera i spojnica kompilacije podržavaju funkciju reportProgress. Pogledajte ProgressPlugin za potpuni popis.

Sječa drva

Logging API dostupan je od izdanja webpacka 4.37. Kada je bilježenje omogućeno u konfiguraciji statistike i/ili kada je omogućeno bilježenje infrastrukture, dodaci mogu bilježiti poruke koje će se ispisati u odgovarajućem formatu zapisivača (statistika, infrastruktura).

  • Dodaci bi radije trebali koristiti compilation.getLogger("PluginName") za zapisivanje. Ova vrsta bilježenja pohranjuje se u Statistici i formatira u skladu s tim. Korisnik ga može filtrirati i izvesti.
  • Dodaci mogu koristiti compiler.getInfrastructureLogger("PluginName") za zapisivanje. Korištenje evidencije infrastrukture nije pohranjeno u Statistici i stoga nije formatirano. Obično se izravno prijavljuje na konzolu/nadzornu ploču/GUI. Korisnik ga može filtrirati.
  • Dodaci mogu koristiti posebnu zamjensku logiku za otkrivanje podrške za bilježenje compilation.getLogger ? compilation.getLogger("PluginName") : konzola za pružanje zamjene za slučajeve kada se koristi starija verzija webpacka koja ne podržava metodu getLogger na objektu kompilacije.

Sljedeći koraci

Pogledajte odjeljak s poveznicama prevoditelja za detaljan popis svih dostupnih spojnica prevoditelja i parametara koje one čine dostupnima.

Izvrsno za ERP integraciju

Ovaj dodatak je ODLIČAN, vrlo koristan za sinkronizaciju nopCommercea s ERP sustavima. Međutim, nije potpun i pomalo je zastario. Preuzmite izvorni kod i primjer aplikacije s GitHuba da biste dodali kôd koji nedostaje.

MOJE OSOBNO ISKUSTVO

Upotrijebio sam ga za kupca koji godinama vodi fizičku trgovinu i tek me je nedavno zamolio da izradim web mjesto za e-trgovinu.
On već ima visoko prilagođeni ERP sustav za održavanje podataka o trgovini, s više od 300 tablica, uključujući proizvode i kupce.
Pa iako nopCommerce ima prekrasnu Admin ploču, smatrao je da je održavanje dvaju sustava preveliki trošak i pitao me koliko bi vremena trebalo da se izgradi automatski jednosmjerni mehanizam sinkronizacije iz njegovog ERP-a u NopCommerce, za sada stalno ažurirajući cijene i količine proizvoda.
Rekao sam da iskreno ne znam, uzeo bih jedan dan da napravim analizu, vidim koji su dodaci dostupni i dao bih mu precizniju procjenu do kraja dana.
Srećom, pronašao sam ovaj nevjerojatan dodatak, preuzeo izvorni kod i popratni uzorak. API je lako promijeniti jer jednostavno oponašate strukturu baze podataka kako biste pružili funkcionalnost koja nedostaje. Uzorak je teži jer je vrlo jednostavan, ali pokazuje kako pozvati API funkcije i kako funkcionira mehanizam provjere autentičnosti tokena.
Ovo sam osobno napravio:
1) Kopirao oglednu MVC web aplikaciju na poslužitelju na intranetu s IIS-om i stvorio CNAME zapis tako da mu se može pristupiti kao http://nopSync
2) Dao mu je isti "izgled i dojam" kao nopCommerce Admin panelu tako što je napravio "view source" i referencirao većinu istih css datoteka
3) Uklonjen obrazac za prijavu i varijable sesije, tvrdo kodirane vjerodajnice u web.config i automatska autentifikacija pri učitavanju
4) Upotrijebljena je SQL skripta za umetanje SKU-a i proizvođača za sve nopCommerce proizvode. Ova dva kombinirana polja bila su moj ključ za jedinstveno spajanje proizvoda između dva sustava
5) API pruža funkciju "popis" za odabir svih proizvoda, ali ažuriranja se izvode jedno po jedno.
Mogao sam pročitati sve proizvode i zatim petljom pristupiti ERP sustavu svaki put, provjeriti cijenu i količinu i ažurirati nopCommerce ako je bilo razlika.
Međutim, smatrao sam učinkovitijim čitanje svih nopCommerce podataka u tablicu PRODUCTS lokalne baze podataka s oznakom DoesItRequireUpdating prema zadanim postavkama jednakim false.
Prednost ovoga bila je ta što bi se ERP sustavu moglo pristupiti samo jednom. S jednim upitom na tablici PRODUCTS pomoću JOIN-a na tablicama ERP baze podataka uspio sam ažurirati cijene, količine i oznake PROIZVODA i naknadno pozvati API ažuriranja jednom za svaki proizvod s oznakom postavljenom na true.
6) Omogućio sam ručnu i automatsku sinkronizaciju. Ručno umetanjem veze na http://nopSync u izborniku administratorske ploče i automatski korištenjem planiranog zadatka za višekratno pozivanje uzorka weba.

Kad me kupac upitao, na kraju dana, koliko će dana biti potrebno za izgradnju ERP sinkronizacije, rekao sam da je zahvaljujući SevenSpikes API dodatku na mreži i da se sinkronizira. Hvala SevenSpikes!!

Objavljeno krajem 2015. Međutim, uglavnom, samo su napredni programeri odvojili vrijeme da saznaju koliko je moćna ova ponuda.

WordPress REST API paket objedinjuje sva moderna ažuriranja, pružajući ugrađeni API koji se može integrirati u teme, mobilne aplikacije i više. Drugim riječima, programerima omogućuje odvajanje front-end sučelja od upravljanja podacima, dopuštajući bilo kojoj aplikaciji interakciju s WordPressom. Učenje o tome kako ovaj alat radi može otvoriti vrata gotovo beskrajnim mogućnostima za proširenje vaše WordPress stranice.

U ovom članku ćemo vam predstaviti WordPress REST API projekt, objasniti zašto je tako dobar, a zatim ponuditi nekoliko ideja za njegovu upotrebu. Stoga ne gubimo vrijeme i počnimo!

Predstavljamo WordPress REST API

Projekt WordPress REST API (REST od Representational State Transfer) potvrđuje da WordPress poduzima korake prema tome da postane punopravna platforma za aplikacije. Njegova je prisutnost uvjerljiva jer dodaje standardni REST API jezgri WordPressa.

Projekt su programeri Ryan McCue i Rachel Baker prvi put postavili na GitHub za programere 2013. godine. Nezavisni dodatak REST API ugrađen je u jezgru WordPressa u prosincu 2015. nakon što je dobio ogromnu podršku i privukao gotovo 100 suradnika voljnih raditi na poboljšanju njegovih mogućnosti.

Budući da je WordPress REST API postao dio jezgre, dokazao je svoju učinkovitost. Evo samo nekoliko stvarnih primjera za jasnoću primjene i inspiraciju u vašim projektima:

  1. Event Espresso koristi REST API kako bi programerima omogućio pristup njihovoj globalnoj infrastrukturi, omogućujući im razvoj aplikacija koristeći njihove usluge.
  2. Simmer programerima omogućuje pristup API-ju kako bi proširili svoju funkcionalnost u punu mobilnu aplikaciju ili prilagodili teme.
  3. JoinIn pruža vlastiti "ugradivi" widget koristeći REST API, popunjavajući ga relevantnim podacima gdje god se prikazuju.

Ovo je samo vrh ledenog brijega kada su u pitanju inovativne svrhe REST API-ja. Međutim, raspravimo kako radi sam REST API.

Kako radi WordPress REST API

Ukratko, REST API radi manipulirajući tekstualnim podacima s jedne lokacije na drugu bez izravnog pristupa bazi podataka ili korisničkom sučelju. Postoje mnoge vrste API-ja (Application Programming Interfaces), unatoč tome, REST ostaje moderan i relevantan standard.

REST API prenosi se putem pristupnih točaka protokola za prijenos hiperteksta (HTTP) pomoću formata JavaScript Object Notation (JSON). Jednostavno rečeno, ove tehnologije omogućuju pristup API-jima pomoću jedinstvenih web adresa za isporuku podataka koji se ponašaju kao JavaScript objekti.

Ako nikada niste radili s JavaScriptom ili njegovim definicijama objekata, naučite osnove JSON-a. Sada kada smo malo razjasnili koncept REST API-ja, razgovarajmo o tome kako on može imati veliki utjecaj na proces razvoja pomoću WordPressa.

Što WordPress REST API znači za programere?

WordPress REST API univerzalni je integrator između bilo koje WordPress instalacije i bilo koje aplikacije na web poslužitelju ili vašem operativnom sustavu. U konačnici, to znači da je jedina granica onoga što se može izgraditi s WordPressom naša mašta. Možete izraditi bilo koju aplikaciju napisanu na bilo kojoj platformi ili jeziku i koristiti WordPress za obradu podataka putem REST API-ja. Otvorena i prijateljska WordPress zajednica nudi ogromne mogućnosti.

REST API temelji se na JavaScriptu, koji dobiva sve veću pozornost, što nagovještava koje je programske jezike važno znati. Uskoro ćete otkriti da je JavaScript na strani poslužitelja novi PHP. To se već može vidjeti u novom softveru WordPress.com, Calypso, koji u potpunosti radi na JavaScriptu i REST API-ju.

Standardizacijom načina na koji aplikacije (uključujući jezgru WordPressa) komuniciraju s podacima WordPressa, razvoj WordPressa postat će lakši i intuitivniji. Štoviše, olakšat će integraciju s platformama trećih strana.

Nadam se da sada imate više razloga zašto je važno početi učiti kako koristiti ovu tehnologiju sada. Vrijeme je da napravite svoje prve korake prema korištenju REST API-ja u vlastitom radu!

5 koraka za početak rada s WordPress REST API-jem

Kao što smo ranije opisali, REST API može se koristiti s bilo kojom aplikacijom ili bilo kojim programskim jezikom koji može pozivati ​​HTTP resurse. Usredotočit ćemo se na korištenje naredbenog retka za izradu REST API zahtjeva jer je to najjednostavnija metoda s najmanjom vjerojatnošću uvođenja pogrešaka koje mogu umanjiti proces učenja.

Da biste to učinili, morate na svom računalu otvoriti program sa sučeljem naredbenog retka (Command Line Interface CLI) - terminal na macOS-u ili Linuxu i naredbeni redak na Windowsima. CLI vam omogućuje izravnu interakciju s REST API-jem, bez potrebe za pisanjem dodatnih skripti za traženje i obradu informacija. Svaki zahtjev koji napišete u CLI-ju može biti skripta u PHP-u, JavaScriptu ili nekom drugom jeziku, ali metoda će za svaki biti drugačija. Izravno izvršavanje naredbi u CLI. Samo upišite naredbu koju želite i pritisnite Enter.

Također preporučujemo postavljanje demo stranice ili testiranje na lokalnoj razini umjesto isprobavanja ovih koraka na web stranici uživo. I na kraju, još jedan uvjet je da WordPress verzija vaše stranice bude 4.4 ili novija. Ako ste spremni, počnimo!

Korak 1: Upoznajte osnovne koncepte REST API-ja

Prije nego što počnemo, upoznajmo se s ključnim konceptima REST API-ja. Postoji samo pet osnovnih pojmova i pojmova s ​​kojima biste se trebali upoznati. Pogledajmo ih:

  1. Rute ('Rute') i Resursi ili pristupne točke ('Krajnje točke'). Ovo je najvažniji aspekt u razumijevanju REST API-ja. Rute vam pomažu u navigaciji između vaših resursa kada je određena HTTP metoda (kao što je statički skup podataka ili radnja) povezana s određenom rutom. Na primjer, /wp-json/ je ruta konfigurirana kao resurs stvoren da nam pokaže dostupne rute.
  2. Zahtjevi. Oni se stvaraju pokretanjem pravih resursa i prolaskom kroz podatke.
  3. odgovor ( odgovori). Ukratko, pružanje podataka koje ste tražili ili vraćanje pogreške kako bismo vas obavijestili da je nešto pošlo po zlu.
  4. Sheme. Ispod su predlošci odgovora kako biste uvijek točno znali gdje tražiti podatke koji su vam potrebni.
  5. Klase kontrolera. Omogućuju vam stvaranje vlastitih ruta i resursa. Sve dok ne morate brinuti o tome, oni će kasnije postati korisniji.

Nakon što shvatite ovih pet koncepata, možete početi dublje zaranjati u sam REST API, počevši od njegovih pristupnih točaka.

Korak 2: Saznajte najkorisnije REST API pristupne točke

WordPress REST API nudi referentni priručnik sa svim pristupnim točkama (resursima) gdje možete pronaći one koje su vam najkorisnije. Prije svega, trebate znati kako konstruirati HTTP REST API poziv. Osnovni dio svakog WordPress API poziva izgleda ovako, zamijeni vašadomena.com tvojima:

http://vašadomena.com/wp-json/

Vezu možete testirati pokretanjem naredbe curl u svom CLI-ju koristeći vlastiti URL:

Curl -X OPCIJE -i http://yourdomain.com/wp-json/

Trebala bi vas pozdraviti poruka od HTTP. Ovu naredbu možete dodatno modificirati koristeći neke od glavnih resursa. Sada samo koristimo GET verziju curla.

Da biste dobili JSON popis svojih postova u WordPressu, možete upotrijebiti sljedeće:

Nakon ovoga pokušajte sljedeće kako biste provjerili sve postojeće WordPress stranice:

Curl -X GET -i http://yourdomain.com/wp-json/wp/v2/pages

Možete eksperimentirati sa svakom od ovih pristupnih točaka (i više!) u CLI-u da vidite kakav odgovor svaka proizvodi.

Korak 3: Naučite osnove REST API provjere autentičnosti

Sada je vrijeme da naučite o autentifikaciji. Neke radnje i podaci u REST API-ju su javni, dok drugi zahtijevaju da budete prijavljeni kao administrator. Međutim, ovo je REST API i nema mjesta za prijavu za autorizaciju. Umjesto toga, možete se autentificirati tijekom zahtjeva koji zahtijevaju administratorski pristup, kao što je pregledavanje neobjavljenih postova ili mijenjanje postova.

Započnimo s instaliranjem WordPress REST API Basic Auth dodatka. Ovo je jednostavan dodatak za programere za brzo učenje REST API-ja i nije namijenjen pravim web stranicama. Međutim, postupak instalacije je isti kao i za bilo koji drugi dodatak.

Nakon što je Basic Auth instaliran, moći ćete se autentificirati putem CLI-ja s oznakom korisnik. Ovdje je primjer kako primijeniti metodu provjere autentičnosti korisnika pomoću kovrča za pregled neobjavljenih postova:

Curl -X GET --user korisničko ime:lozinka -i http://yourdomain.com/wp-json/wp/v2/posts?status=draft

Autentifikacija će biti potrebna za sve radnje osim pregleda javnih informacija. Nakon što ste naučili osnovnu provjeru autentičnosti, možete istražiti druge opcije koje preporučuje dokumentacija REST API-ja za vaš razvoj.

Korak 4: Odaberite svoj prvi WordPress post koristeći REST API

Nakon što shvatite kako napraviti osnovne REST API pozive s curlom, pokušajte odabrati određeni unos. Prvo, prikažimo sve publikacije, kao što smo učinili ranije:

Curl -X GET -i http://yourdomain.com/wp-json/wp/v2/posts

Ovaj trik s dodatkom ID-a možete koristiti za bilo koji REST API resurs, bilo da želite prikazati post, stranicu ili taksonomiju.

Korak 5: Izmjene u vašoj WordPress objavi putem REST API-ja

Na kraju, pokušajmo unijeti izmjene u publikaciju koju ste odabrali. Umjesto naredbi OPCIJA ili DOBITI, ovaj put ćemo koristiti POST napraviti promjene. DOBITI koristi se za čitanje podataka dok POST- poslati ih.

Preimenujmo vaš post podnošenjem zahtjeva POST zajedno s podacima za provjeru autentičnosti. Nove promjene bit će napravljene pomoću zastavice d na kraju naredbe. Proslijedit ćemo prilagođeni JavaScript objekt postavljanjem varijable naslova na njegovu vrijednost, kao što je Moj novi naslov kao što je prikazano u donjem kodu:

Curl -X POST --korisničko korisničko ime:lozinka http://vašadomena.com/wp-json/wp/v2/posts/ -d "("title":"Moj novi naslov")"

Obavezno zamijenite korisničko ime, lozinku, ID objave i naslov svojima. Možete ponovno odabrati danu publikaciju kako biste provjerili promjene:

Curl -X GET -i http://yourdomain.com/wp-json/wp/v2/posts/

Čestitamo! Upravo ste izvršili svoja prva administratorska uređivanja pomoću WordPress REST API-ja. Naravno, ovaj osnovni vodič samo zagrebe površinu mogućnosti koje nudi REST API, ali je prilično solidan početak!

Zaključak

WordPress REST API moćna je nova verzija jezgre WordPressa i mnogi programeri već su počeli koristiti njegove mogućnosti. U skladu s tim, do sada naučivši kako raditi s novom značajkom, poboljšat ćete svoje vještine programiranja i moći ćete izraditi aplikaciju koristeći WordPress kao okvir.

Da rezimiramo, prošli smo kroz pet koraka na putu da naučimo kako komunicirati s WordPress REST API-jem:

  1. Uvod u osnovne REST API koncepte.
  2. Najkorisniji resursi/REST API pristupne točke.
  3. Naučite osnove REST API provjere autentičnosti.
  4. Dohvaćanje posta na WordPressu pomoću REST API-ja.
  5. Izmijenite WordPress post pomoću REST API-ja.

Koja pitanja imate o WordPress REST API-ju? Pišite nam u komentarima!