Meg tudná valaki mondani nekem, mit jelent a "Graph" szó a Graph API kifejezésben. Van a Microsoftnak is Grap API-ja, a Facebooknak is, de konkrétan sehol nem találom, mit is jelent ebben a formában a "Graph" szó?
- 366 megtekintés
Hozzászólások
sztem gráf, mivel annak alapján modellezi az egész rendszert.
- A hozzászóláshoz be kell jelentkezni
Ezek szerint ez nem egy valamilyen speciális API típus, aminek szabványos kezelési módja van, hanem csak egy érzékletes kifejezés? Azaz nincs valamilyen Graph API protokoll, amiknek az ilyen API-knak meg kellene felelnie, s amit csak én nem ismerek.
- A hozzászóláshoz be kell jelentkezni
a lekérdezésekhez van egy ilyen: https://graphql.org/ előirányozva.
- A hozzászóláshoz be kell jelentkezni
Nekem a fb-tól rémlik elsőként a kifejezés ilyen irányú használata, ott van egy magyarázat is hozzá:
The Graph API is named after the idea of a "social graph" — a representation of the information on Facebook. It's composed of nodes, edges, and fields. Typically you use nodes to get data about a specific object, use edges to get collections of objects on a single object, and use fields to get data about a single object or each object in a collection. Throughout our documentation, we may refer to both a node and edge as an "endpoint". For example, "send a
GET
request to the User endpoint".
https://developers.facebook.com/docs/graph-api/overview
Persze ettől még simán lehet, hogy oda is máshonnan érkezett..
- A hozzászóláshoz be kell jelentkezni
A mikroszoftnak is van ilyen nevű cucca azure-ban már régóta.
- A hozzászóláshoz be kell jelentkezni
- Microsoft Graph - [..] Initially released in November 2015 as Office 365 Unified API - https://en.wikipedia.org/wiki/Microsoft_Graph
- Fb graph - October 1, 2014 - https://developers.facebook.com/docs/graph-api/changelog/versions/
de lehet, hogy valami harmadik volt a forrás..
- A hozzászóláshoz be kell jelentkezni
GraphQL-t is nezd meg, megerted hogy mi ez. Es egy jo texhnologia is.
- A hozzászóláshoz be kell jelentkezni
Köszönöm, és ezen elindulva meg is találtam, amit kerestem, vagyis hogy az én esetemben a Graph a Graphiti rövidítése: https://www.graphiti.dev.
- A hozzászóláshoz be kell jelentkezni
A GraphAPI nem egy szabvány.
Microsoft Graph API:
A Microsoft a szolgáltatásait lehet elérni REST-hívásokkal; ezt a szolgáltatást, ezeknek a hívásoknak az együttesének a fantázia neve, hogy "Graph API".
pl. az https://outlook.live.com/ -os email fiókodat elérheted az IMAP vagy SMTP protokollok helyett REST hívásokkal is, lekérdezheted, vagy kiküldhetsz vele emailt... Létrehozhatsz fájlokat a One Drive-ba... Excel fájlt készíthetsz az www.office.com/ -ra....
Dokumentáció itt: https://docs.microsoft.com/en-us/graph/use-the-api
Facebook:
Úgy tűnik, hogy a Facebook-nak is van hasonló REST-alapú szolgáltatása, amin elérheted a facebook-profilod adataid, utasíthatod szerkeszteni, postolni, aminek véletlenül szintén ugyan az a fantázianeve "Graph API".
Ennek meg itt találtam dokumentációját: https://developers.facebook.com/docs/graph-api
Airconditioned terminal, do not open Windows.
- A hozzászóláshoz be kell jelentkezni
Nincs új a nap alatt...
- A hozzászóláshoz be kell jelentkezni
Szerintem itt a költő arra gondolt, hogy az adatokat nem a REST-es módon, resource+verb kombóval kérjük le, hanem egyfajta speciális nyelven: GraphQL-ben.
Ugye REST-nél két probléma is van:
* kapsz egy csomó dolgot, amire neked lehet, hogy nincs is szükséged, pl. ha téged csak a felhasználó teljes neve érdekel, a többi része nem, egy rakás adat fölöslegesen utazik,
* nem kapsz meg "beágyazott objektumokat", pl. ha neked az összes felhasználó összes telefonhívása kell, akkor először kikéred az összes felhasználót, majd végégtekersz a listán, és kikéred a hozzájuk tartozó összes telefonbeszélgetést. Persze lehet REST endpointot készíteni erre, de minden kombinációra nehéz felkészülni. Arról nem is beszélve, hogy a kliensnek bizonyos mértékig ismernie kell a biznisz domaint, hogy pl. mi mihez van kapcsolva (joinolva) milyen propertyk által.
* bénaság a REST-ben, hogy még a HTT/2-ben is GET/POST/PUT/PATCH/DELETE-tel operálunk, holott lehetne GET/CREATE/... HTTP verbünk is.
* Nem is biztos, hogy mindent lehet resource-ként modelletni, vagy ha igen, akkor is csak nagyon nyakatekert logikával.
GraphQL-ben a kliens dönti el, hogy milyen adatokat szeretne megkapni, és ha kellenek beágyazott objektumok, akkor azokat is megkaphatja ugyanabban a válaszban, természetesen, ezt kóddal meg kell támogatni.
A GraphQL ezen túl mutation-ökkel operál az adatok módosítása céljából, miből van ugye paraméterezett, batch.
Ami még érdekes lehet, GraphQL-ben van subscription, ami nem túl jelentős dolog a mai websocketes világban, de van :-)
Ami REST-hez a Swagger UI (pl. https://petstore.swagger.io/), a GraphQL-hez a GraphiQL (pl. https://graphql.org/swapi-graphql; jobb oldalon ott egy "Docs", azon belül pedig a "Root"-ra kattintva látszik, hogy milyen adatokat lehet queryzni).
query {
allFilms {
films {
id
title
planetConnection {
planets {
name
}
}
}
}
}
Itt a planetConection már beágyazott objektum.
- A hozzászóláshoz be kell jelentkezni
Köszönöm a részletes infókat.
Az közben kiderült, hogy a Graph API a Graphiti API-ra utal, ami - ha jól vettem ki - a GraphQL továbbgondolása, és valóban nagyon dinamikus lekérdezéseket támogat.
A problémám az, hogy kaptam egy Graph API hozzáférést, amiben azonban nem találok sehol sem authentikációs műveletet. Authentikáció nélkül pedig a kérelmek hitelesítési hibával megszakadnak.
Az általam elérhető schémában van ugyan olyan művelet, amivel a belépett felhasználó adatait tudom lekérdezni, de beléptető/hitelesítő műveletet nem találok. Ezért reméltem, hogy ez talán valamilyen olyan szabvány, amiben ez külön definiált, és ezért nem szerepel a schémában.
Felhasználónevem és jelszavam ugyan van, de sehogyan sem tudok token-t készíteni a lekérdezésekhez, amit amúgy a Graphiti API-nak már át tudnék adni hitelesítésként a kérelem headerjében.
- A hozzászóláshoz be kell jelentkezni
Szívesen. Elképzelhető, hogy végig kell vinned egy OAuth flowt, hogy a végén kapj tokent. Amit aztán headerben elküldhetsz :)
- A hozzászóláshoz be kell jelentkezni