Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[PHP][MySQL] Facebook Graph API field query nabootsen

Pagina: 1
Acties:

  • GWTommy
  • Registratie: Mei 2008
  • Laatst online: 05-08-2023
Ik ben momenteel bezig met het ontwikkelen van een semi-RESTful API om mee te verbinden vanuit onder andere een iOS app, mijn eigen (externe) web applicaties maar eventueel later ook voor derde. Hiervoor wil ik een Facebook Graph API achtige query structuur. Een voorbeeld is misschien het makkelijkste (check hier hoe FB deze 'batch calls' doet):
Stel ik wil vanuit mijn app van de huidige user (/users/me) algemene informatie ophalen en de adressen van deze user ophalen:
GET /users/me?fields=id,name,dob,email,adresses(id,name,company,streetname,zipcode,city,country)
Of de orders incl de orderlines/productinformatie + intersectiegegevens van deze entiteit relatie zoals quantity:
GET /users/me?fields=id,name,orders(id,date,status,shop(id,name,logo),products(id,quantity,title,description,image,limit:500,offset:0),limit:500,offset:0)

Output komt als JSON terug. Ik ben gebonden aan PHP icm een MySQL database (in te richten dus qua structuur op alle punten aan te passen/rekening te houden met hoe mijn code er uit gaat zien)

Afin, leuk dat ik zoiets heb bedacht dat aardig dynamisch werkt. (Jullie hebben door dat het over een webshop achtig iets gaat toch? :P). Helaas loop ik toch wel een beetje vast met de uitwerking. Althans, voor zover ik daar mee bezig ben, ik ben vooral eerst voor mezelf op een rijtje aan het krijgen hoe ik dit wil gaan uitwerken programmeersgewijs/structureel. Een 1:1 relatie is natuurlijk een makkie om uit te laten zoeken, 1:n en n:1 relaties zie ik ook niet als een probleem. Wat voor mij het probleem is, waar ik dus qua gedachtegang vast loop is n:m relaties. Moet ik de koppeltabel als apart model/collection gaan behandelen? Mijn eerste ingeving zou zijn, ja, aangezien het ook voor kan komen dat de koppeltabel ook niet relationele data bevat.

Het probleem is dat ik dit allemaal zo abstract en dynamisch mogelijk wil uitwerken, zodat mijn model en collection klassen straks simpelweg de tabelnaam, velden en relaties (type relatie en foreigns) aangeven.

Een aantal vragen die ik graag aan jullie voorleg:
- Ben ik te moeilijk bezig? (Het antwoord is JA, maar goed, ik ben eigenwijs, dus: zitten er structurele fouten in mijn opzet)
- Bestaat er een framework/library die een soortgelijke query-achtige-structuur slikt en in een model-collection vorm uitwerkt, kinda like FB Graph API?
- Hoe kan ik een relatie van een model met een ander model (1:1) en een model met een collectie (1:n, n:1, n:m) het beste 'inprogrammeren' in mijn model en collectieklassen?
- Is mijn structuur model-collection(of models) wel correct? Moet ik dit misschien uitbreiden?

Alvast bedankt voor jullie waarschijnlijk vele malen objectievere input!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 06-10 13:59
Als je in je database N:M relaties hebt ontkom je niet aan koppeltabellen, ook niks mis mee. Hoe je dat verder in je code weergeeft (een user heeft waarschijnlijk een lijst orders, lijkt me redelijk straightforward) kan ik van buiten wat moeilijk 'ruiken' omdat ik afgezien van dat 't kennelijk een webshop is verder geen informatie hebt.

Verder begrijp ik niet zo goed wat je wil met de "Graph API" van facebook. Het probleem voor facebook is simpelweg dat de relaties niet alleen N:M zijn maar dat het geen boomstructuur is maar een graph. Je hebt oneindige diepte. M.i. heb je dat niet in een webshop.

Ik krijg al met al dus het idee dat je een beetje aan het overengineeren bent. Begin met je classes (een User heeft X orders, een order heeft Y producten, dat zijn volgens mij gewoon 1:N relaties) en werk een DB structuur uit. Hoe je REST-ful API daar dan verder in werkt is m.i. niks meer dan een logisch gevolg.

https://niels.nu