Aurweb RPC interface (Magyar)
Az Aurweb RPC interface egy könnyűsúlyú távoli eljáráshívás (angolul: remote procedure call, röviden: RPC) interfész az AUR szoftvercsomag-tároló számára. A lekérdezések HTTP GET kérések formájában vannak elküldve, a szerver pedig JSON formájában válaszol vissza.
API használata
Lekérdezési típusok
Kettő lekérdezési típus létezik:
- search
- info
search
A szoftvercsomag-keresések a következő formában kiadott kérésekkel végezhetők el:
/rpc/v5/search/kulcsszó?by=mező
Ahol a kulcsszó a keresési argumentum, és a mező a következő értékek egyike:
-
name(Keresés csak szoftvercsomagnév alapján.) -
name-desc(Keresés szoftvercsomagnév és leírás alapján.) -
maintainer(Keresés szoftvercsomag-karbantartó alapján.) -
comaintainers(Keresés szoftvercsomag társkarbantartói alapján.) -
depends(Azokra a szoftvercsomagokra keres, amelyek a kulcsszavaktól függenek.) -
makedepends(Azokra a szoftvercsomagokra keres, amelyek kódfordítási függőségként használják a kulcsszavakat.) -
optdepends(Azokra a szoftvercsomagokra keres, amelyek opcionális függőségként használják a kulcsszavakat.) -
checkdepends(Azokra a szoftvercsomagokra keres, amelyek ellenőrzési függőségként használják a kulcsszavakat.) -
provides(Keresés a kulcsszót biztosító szoftvercsomag alapján.) -
conflicts(Keresés a kulcsszóval ütköző szoftvercsomag alapján.) -
replaces(Keresés a kulcsszót helyettesítő szoftvercsomag alapján.) -
groups(Keresés szoftvercsomagcsoportok alapján.) -
submitter(Keresés szoftvercsomag-beküldő alapján.)
A by paraméter elhagyható, alapértelmezetten a name-desc értéket használja.
A search és error a lehetséges visszatérési típusok.
Ha szoftvercsomag-karbantartó szerinti keresés történik, és a keresési argumentum üresen marad, akkor az elárvult szoftvercsomagok listája kerül visszaadásra.
Példák:
A szoftvercsomag keresése:
https://aur.archlinux.org/rpc/v5/search/szoftvercsomag
A felhasználó által karbantartott szoftvercsomagok keresése:
https://aur.archlinux.org/rpc/v5/search/felhasználó?by=maintainer
Azon szoftvercsomagok keresése, amelyeknél a szoftvercsomag szerepel `makedepends` értékként:
https://aur.archlinux.org/rpc/v5/search/szoftvercsomag?by=makedepends
Keresés callback segítségével:
https://aur.archlinux.org/rpc/v5/search/szoftvercsomag?callback=jsonp1192244621103
info
A szoftvercsomag-információ lekérdezhető a következő formában benyújtott lekérdezések segítségével:
/rpc/v5/info?arg%5B%5D=pkg1&arg%5B%5D=pkg2&…
Ahol pkg1, pkg2, … a szoftvercsomagnevek pontos egyezései, amelyekhez a szoftvercsomagrészleteket le kell kérdezni.
A multiinfo és error a lehetséges visszatérési típusok.
Példák:
Egyetlen szoftvercsomag információja:
https://aur.archlinux.org/rpc/v5/info?arg[]=package
Több szoftvercsomag információja:
https://aur.archlinux.org/rpc/v5/info?arg[]=pkg1&arg[]=pkg2
Visszatérési típusok
A visszatérési hasznos adat egyetlen formátumú, és jelenleg három fő típust tartalmaz. A válasz mindig tartalmaz egy típust, amely alapján a felhasználó eldöntheti, hogy egy művelet eredménye hiba volt-e vagy sem.
A visszatérési hasznos adat formátuma a következő:
{"version":5,"type":ReturnType,"resultcount":0,"results":ReturnData}
A ReturnType egy string, és az értéke az alábbiak egyike:
searchmultiinfoerror
return data
A ReturnData típusa szótár (dictionary) objektumok tömbje a search és multiinfo ReturnType esetén, valamint üres tömb az error ReturnType esetén.
A ReturnType search esetén a ReturnData a következő mezőket tartalmazhatja:
IDNamePackageBaseIDPackageBaseVersionDescriptionURLNumVotesPopularityOutOfDateMaintainerFirstSubmittedLastModifiedURLPath
A ReturnType info és multiinfo esetén a ReturnData ezen felül a következő mezőket is tartalmazhatja:
DependsMakeDependsOptDependsCheckDependsConflictsProvidesReplacesGroupsLicenseKeywords
A szoftvercsomag által nem tartalmazott mezők kimaradnak a kimenetből.
error
Az error típusú válasz visszatérési értéke egy hibaválasz-string. Hibaválasz adható vissza akár search, akár info lekérdezéstípus esetén.
Példa a ReturnType error típusra:
{"version":5,"type":"error","resultcount":0,"results":[],"error":"Incorrect by field specified."}
search
A search típus a keresési lekérdezési művelet által visszaadott eredmény.
Példa a ReturnType search típusra:
{"version":5,"type":"search","resultcount":2,"results":[{"ID":206807,"Name":"cower-git", ...}]}
info
Az info típus az info lekérési művelet által visszaadott eredmény.
Példa a ReturnType multiinfo típusra:
{
"version":5,
"type":"multiinfo",
"resultcount":1,
"results":[{
"ID":229417,
"Name":"cower",
"PackageBaseID":44921,
"PackageBase":"cower",
"Version":"14-2",
"Description":"A simple AUR agent with a pretentious name",
"URL":"http:\/\/github.com\/falconindy\/cower",
"NumVotes":590,
"Popularity":24.595536,
"OutOfDate":null,
"Maintainer":"falconindy",
"FirstSubmitted":1293676237,
"LastModified":1441804093,
"URLPath":"\/cgit\/aur.git\/snapshot\/cower.tar.gz",
"Depends":[
"curl",
"openssl",
"pacman",
"yajl"
],
"MakeDepends":[
"perl"
],
"License":[
"MIT"
],
"Keywords":[]
}]
}
jsonp
Ha Ön egy JavaScript alapú oldalon dolgozik, és JSON visszahívási (callback) mechanizmusra van szüksége, akkor ezt megteheti. Önnek csupán egy további callback változót kell megadnia. Ezt a callback változót általában a JavaScript függvénykönyvtár kezeli, de itt látható egy példa is.
Példa a lekérdezésre:
https://aur.archlinux.org/rpc/v5/search/foobar?callback=jsonp1192244621103
Példa a visszatérésre:
/**/jsonp1192244621103({"version":5,"type":"search","resultcount":1,"results":[{"ID":250608,"Name":"foobar2000","PackageBaseID":37068,"PackageBase":"foobar2000","Version":"1.3.9-1","Description":"An advanced freeware audio player (uses Wine).","URL":"http:\/\/www.foobar2000.org\/","NumVotes":39,"Popularity":0.425966,"OutOfDate":null,"Maintainer":"supermario","FirstSubmitted":1273255356,"LastModified":1448326415,"URLPath":"\/cgit\/aur.git\/snapshot\/foobar2000.tar.gz"}]})
Ez automatikusan meghívja a jsonp1192244621103 JavaScript függvényt, amelynek paramétere az RPC hívás eredményére lesz beállítva.
Korlátozások
- A HTTP GET kérések legfeljebb 8190 bájt hosszúságú URI azonosítóra korlátozódnak. Azonban a hivatalos AUR példány, amely nginx szerveren HTTP/2 protokollt használ, az alapértelmezett URI-hossz korlátját alkalmazza, amely 4443 bájt. A 200-nál több szoftvercsomagot tartalmazó info kéréseket fel kell osztani.
- A keresési lekérdezéseknek legalább kettő karakter hosszúnak kell lenniük.
- A keresések meghiúsulnak, amikor 5000 vagy annál több találatot tartalmaznak.
- Az API-kérés limit napi legfeljebb 4000 kérés IP-címenként.
Referenciakliensek
Néha könnyebben érthetők a dolgok példákon keresztül. Néhány referenciaimplementáció (jQuery, python2, ruby) a régi specifikációhoz, valamint a "v" paraméter megadása nélkül elérhető itt.
A /rpc v5 API implementáció új, útvonalalapú verziója a Python 3.12 verziójához elérhető itt.
AUR metadata archívumok
A már meglévő archívumok mellett kettő új archívum került bevezetésre, amelyek a tömeges RPC-lekérdezések helyett használhatók. Az összes archívum letölthető a https://aur.archlinux.org/archive-name.gz helyről
Ezen archívumok használata jelentősen csökkenti az AUR terhelését az API-kliensprogramok által generált forgalom mennyiségében. Különösen azoknál a kliensprogramoknál hasznos, amelyek képesek tömegesen, saját maguk lekérdezni az adatokat.
Minden archívum támogatja a Last-Modified és ETag mezőket. Az egyes archívumok hozzávetőlegesen 5 perces időközönként frissülnek. Minden RPC-tömeghasználótól kérjük, hogy fontolja meg ezen archívumok használatát az ismétlődő keresések vagy tömeges "multiinfo" kérések esetén.
Meglévő archívumok
- Az összes szoftvercsomag listázása, sortöréssel elválasztva: https://aur.archlinux.org/packages.gz
- Az összes szoftvercsomagbázis listázása, sortöréssel elválasztva: https://aur.archlinux.org/pkgbase.gz
- Az összes felhasználó figyelése, sortöréssel elválasztva: https://aur.archlinux.org/users.gz
Metaadat-archívumok
- Teljes,
type=searchformátumú JSON szoftvercsomag-archívum: https://aur.archlinux.org/packages-meta-v1.json.gz - Teljes,
type=multiinfoformátumú JSON szoftvercsomag-archívum: https://aur.archlinux.org/packages-meta-ext-v1.json.gz
További olvasnivaló a témában
Az API dokumentációja: https://aur.archlinux.org/rpc/swagger