api - moja prvá

Programovacie jazyky, rady, poradňa...
dark96
Amateur
Amateur
Príspevky: 25
Registrovaný: 23 aug 2020, 18:57

api - moja prvá

Príspevok od používateľa dark96 »

čaute chalani,

robím môj prvý web vo Vue.js a mám spravenú api v PHP....uplne simple ktorá mi vytiahne z db potrebné veci - výstup je JSON a potom ich zobrazujem na stránke...

a takisto cez ňu ešte insertujem do db...ale na insert používam iba klasicky :

INSERT INTO tableName (something, something2)
VALUES ('".$something."', '".$something2.")";

nikde nemám insert so slovom WHERE

je to takto bezpečné? nemôže mi niekto dropnúť table?
a ďalšia otázka oplatí sa to prepisovať cele do nejakeho mvc frameworku? je to cca 10 suborov kazdy ma 15-20 riadkov ...inserty viac
tam kde fetchujem dáta z DB tak to má do 10 riadkov vzdy ten script...

uz momentálne rozumiem mvc-čku, keď som s tým začínal nemal som ani poňatie o čo ide....viem že teraz by na to všetko stačil jeden controller a jeden model...

Autoeditácia príspevku po 43 min 20 sek:
ok tak to asi upravim...nejako takto... či?

$SQLquery = "INSERT INTO tableName VALUES something = ?, something2 = ?";
$query = $conn->query($SQLquery, array($something, $something2));
94jakub
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2037
Registrovaný: 15 dec 2006, 13:18
Bydlisko: Martin/BA
Kontaktovať používateľa:

Re: api - moja prvá

Príspevok od používateľa 94jakub »

WHERE sa pri inserte nepoužíva. Ani neviem, čo by si chcel pomocou neho docieliť?

Nemá to nič s bezpečnosťou. To aby ti cez to nikto nedropol tabuľku, ošetríš tak, že nebudeš manuálne skladať query string ale spravíš to pomocou nejakej funkcie, ktorú ti ponúka konkrétny jazyk/knižnica. Napr. tak ako si napísal v edite, skús si v dokumentácii pozrieť či ťa query() funkcia zároveň robí aj character escaping. Inak sa to volá SQL injection a na nete toho nájdeš mrte.

Asi tomu mvc až tak úplne nerozumieš, keď si vieš predstaviť to do toho prerobiť.
Lebo pri (REST) API to nedáva zmysel a vo svojej podstate ani nijako nesúvisí s DB, s ktorou to tak trochu spájaš. Samozrejme tie frameworky väčšinou majú aj hromadu ďalších funkcií, ktoré ti umožňujú jednoduchšie celú tú aplikaciu napísať, ľahšie definovať endpointy, pripravené spracovanie vstupov či už z query alebo body pri requestoch, autentifikáciu ale trebárs možno aj ORM, ktoré vieš využiť pri tej DB vrstve a mnohé ďalšie.
Čiže tak ako využívaš napr. ten vuejs a nepíšeš to v čistom js všetko, vieš vyriešiť aj to api pomocou nejakého frameworku.
To či to použiješ je na tebe, záleží čo sa chceš naučiť. Či ti ide len o to sa naučiť niečo spraviť vo frameworku, alebo len tak nejako ručne zbúchať čosi čo funguje, alebo sa to naučiť robiť dobre, alebo pochopiť tie základy ako to funguje a vedieť potom aj ako ten framework funguje na pozadí.
dark96
Amateur
Amateur
Príspevky: 25
Registrovaný: 23 aug 2020, 18:57

Re: api - moja prvá

Príspevok od používateľa dark96 »

jaj vlastne ja debil, áno je to pravda WHERE sa pri inserte nepoužíva to nechapem čo som sem dal :D

ano chapem ze mvc nedáva zmysel ale potrebujem v nom robirt aby som sa ho naucil...tak pri api nebudem používať view...
len colntroller a model...no šak vlastne už to mám prerobené...
*****HERO*****
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2446
Registrovaný: 08 máj 2006, 1:34

Re: api - moja prvá

Príspevok od používateľa *****HERO***** »

tak view pri API moze byt response ... tzn ci to bude nejaky json, xml alebo ktovie co .. controller len nahadze potrebne data do view, nastavi typ vystupu a view uz len vyrendruje string, co sa vrati volajucemu

ale zase nie je dobre to MVC na silu tlacit vsade ... najma pri weboch sa to velmi malo v praxi oplati ... na tvojom mieste by som si pozrel hlavne to ORM, to k APInam celkom dava zmysel a zbavis sa tym aj manualnym skladanim SQL dopytov, cim znizis riziko zanesenia injekcie
dark96
Amateur
Amateur
Príspevky: 25
Registrovaný: 23 aug 2020, 18:57

Re: api - moja prvá

Príspevok od používateľa dark96 »

mam to tak spravené že len controller zavola model ...ten vykoná dopyt v DB a returne result a potom ho v kontroleri v metode len vypíšem cez echo json_encode(); vôbec tu view nepoužívam...

neviem no príde mi to prehladnejšie takto keď to mám... asi aj do buducna keď sa do toho pozrie niekto iný ako ja...
Napísať odpoveď