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

PHP PHP PHP MySQL API - GET / POST (Insert, Delete, Update) - Jak na to American English version English version

Avatar
Petr Nymsa
Redaktor
Avatar
Petr Nymsa:

Ahoj, už kdysi dávno jsem tu (nebo Jiří Gracík) 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 Čápka
Tým ITnetwork
Avatar
Odpovídá na Petr Nymsa
David Čápka:

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na Petr Nymsa
Jiří Gracík:

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
Creating websites is awesome till you see the result in another browser ...
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na David Čápka
Petr Nymsa:

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
Jiří Gracík
Redaktor
Avatar
Odpovídá na Petr Nymsa
Jiří Gracík:

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
Creating websites is awesome till you see the result in another browser ...
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Petr Nymsa
David Čápka:

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  +2 18.2.2014 20:00
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na Petr Nymsa
Luboš Běhounek (Satik):

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  ±0 18.2.2014 20:02
:)
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na David Čápka
Petr Nymsa:
Nahoru Odpovědět 18.2.2014 20:48
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
petr
Redaktor
Avatar
petr:

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
Redaktor
Avatar
Odpovídá na petr
Petr Nymsa:

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.