Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: PHP MySQL API - GET / POST (Insert, Delete, Update) - Jak na to

Aktivity
Avatar
Petr Nymsa
Tvůrce
Avatar
Petr Nymsa:18.2.2014 19:08

Ahoj, už kdysi dávno jsem tu (nebo Neaktivní uživatel) dávali. Potřebujeme si vytvořit API pro přístup k MySQL pro naše klienty. Naše představa je zhruba následující (vycházíme z OOP a "MVC").

Máme tedy například tyto tabulky
User - id,name,email
Item - id, id_user, name, price

Když budu chtít po API získat všechny uživatele (USER) zavolám..api/user
Když všechny itemy - api/item
Když například usera s ID = 1 tak ..api/user?id=1

Vnitřně to bude fungovat následovně:

  1. třída router převezme požadavek
  2. vytvoří třídu User, která bude dědit od abstraktní třídy DBInfo (get data, insert data)
  3. User zpracuje a vrátí XML / JSON

Tj, s GET problém nevidím. Problém je s POST resp. akcemi typu DELETE,INSERT, UPDATE.

Jak nejlíp na to ? A vůbec je naše myšlenka dobrá nebo celá špatně ? Díky

Odpovědět
18.2.2014 19:08
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Petr Nymsa
David Hartinger:18.2.2014 19:16

Dobrá myšlenka to určitě je. Pokud to chcete opravdu robustní, tak se používá REST. Většinou si však vystačíte s metodami GET a POST. Co se týká toho PHP, tak tam hodnoty normálně vytaháte z postu, jako by vám přišly formulářem. Jak odeslat něco postem je už na klientovi (předpokládám, že to bude C#).

Nahoru Odpovědět
18.2.2014 19:16
New kid back on the block with a R.I.P
Avatar
Odpovídá na Petr Nymsa
Neaktivní uživatel:18.2.2014 19:30

Osobně se přikláním místo k

..api/user?id=1

spíš k

..api/user/1/

Už jen kvůli vytáhání jen některých hodnot, které pak bude daleko jednodušší:

1) Chci celého usera

..api/user/1/

2) Chci jen jeho jméno a email

..api/user/1/?name&email

Nehledě na to, že to je i hezčí a přehlednější :D

Editováno 18.2.2014 19:32
Nahoru Odpovědět
18.2.2014 19:30
Neaktivní uživatelský účet
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na David Hartinger
Petr Nymsa:18.2.2014 19:33

Bude to C# / Java. Každopádně jde mi o to jak rozeznat Delete / Insert / Update ? Posílat ještě v POST informaci o co se jedná ?

Nahoru Odpovědět
18.2.2014 19:33
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Odpovídá na Petr Nymsa
Neaktivní uživatel:18.2.2014 19:40

S insertem by to šlo udělat třeba tak, že by se poslal post na

...api/user/

Update by mohl být post na

...api/user/1/

Jen ten delete nevím ...

Nahoru Odpovědět
18.2.2014 19:40
Neaktivní uživatelský účet
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Petr Nymsa
David Hartinger:18.2.2014 20:00

Metody rozeznáš podle URL. Budeš mít třeba /user, to je GET, potom /user/delete, /user/update, /user/insert. Hlavně si tam udělej nějakou autentifikaci, kdyby to API někdo zjistil.

Nahoru Odpovědět
18.2.2014 20:00
New kid back on the block with a R.I.P
Avatar
Odpovídá na Petr Nymsa
Luboš Běhounek Satik:18.2.2014 20:02

co tam jeste do ty cesty tu akci pridat?

..api/insert/user/    // vlozi uzivatele
..api/user/           // vrati vsechny
..api/delete/user/1/  // smaze uzivatele 1, pripadne pres ?id=1
apod.
Nahoru Odpovědět
18.2.2014 20:02
https://www.facebook.com/peasantsandcastles/
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na David Hartinger
Petr Nymsa:18.2.2014 20:48
Nahoru Odpovědět
18.2.2014 20:48
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
petr
Tvůrce
Avatar
petr:28.2.2014 9:49

Jestli to celé píšeš od začátku, nebylo by lepší už rovnou to postavit na FullREST API? Jinak, metodu je IMHO lepší uvádět v header requestu.

 
Nahoru Odpovědět
28.2.2014 9:49
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na petr
Petr Nymsa:28.2.2014 9:50

Už máme něco napsaného. Věřím že jestli se projekt rozroste, budeme to asi muset předělat. Zatím to zcela vyhovuje našim záměrům - uvidíme

Nahoru Odpovědět
28.2.2014 9:50
Pokrok nezastavíš, neusni a jdi s ním vpřed
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.