GraphQL Boonuspunktid Rest API vs GraphQL - peamised erinevused * graphiga saab valida välju * kiirem? mitte alati * üks vs mitu päringut. * graph on päringukeel, aga rest on rakendus * http meetodid. GraphQL-l ainult POST (get ka:) [Hot Chocolate] Peamised eelised 1. klient valib, mida soovib (väljad) küsida/lisada/muuta- alamresursse filtreerida ravimid -> id nimekiri id nimekirja alusel -> detail info id nimekirja alusel -> soodustused id nimekirja alusel -> toimeained 2. mitu ressurssi korraga //3. Tugevad tüübid Puudused 1. realiseerimise keerukus 2. cache 3. status code-e ei saa sarnaselt iga vea puhul kasutada nagu REST-s 4. serveri koormust raskem ennustada ja rumalad päringud + häkkerid lahendatud salvestatud päringutega 5. select * -i pole. Alati peab ise väljad kirjutama lahendatud salvestatud päringutega MEILE ANTAKSE VOLI JUURDE, aga sellega peab kasvama ka vastutus. Privaatne API (ettevõtte sisene) Partneritega jagatud API Avalik API one-size-fits-all API https://xuorig.medium.com/why-we-dont-see-many-public-graphql-apis-ad972bcb201e Areng SQL -> Soap -> REST -> GraphQLAPI SQL->Soap (API) Miks me otse SQL-i ei taha kasutada? saame küsida, mida tahame raske õiguseid kontrollida. Võib teha vigu, lubamatuid tegevusi. me ei taha siduda end konkreetse andmebaasiga. raske andmebaasi struktuuri muuta, kui peame arvestama, kes seda kasutab. Liidese näide. Lihtsustamine - realisatsiooni peitmine, et seda saaks asendada. Soap->REST (xml vs json) urlid ei maksa midagi rest lihtsam õppida, sest schema-t/WSDL pole :) ei küsitud alamressurside andmeid vaid ainult viidet soap-s polnud alati tavaks ühe ressurssi andmeid tagasi anda getStudents getStudent updateStudent addStudent getStudentsAndCourses vs /api/students.. GET/POST/PUT... /api/courses.. GET/POST/PUT... Kui mitme resurssi asju korraga küsida, siis langeb taaskasutus. tohtis kasutada ainult ressursi nime ilma operatsioonita Rest->GraphQL mitme url/kontroller asemel üks mitme http meetodi asemel üks* ühe resursi asemel saab mitut korraga alamresursse küsitakse korraga Võeti kasutusele schema - kindlad tüübid tulid tagasi operatsioonide nimed add, update, jne. Demo ---- väljade valimine alamressursid mitu ressurssi korraga limiteerimine, filtreerimine, sorteerimine HARJUTUS Täna mõlemad ülesanded annavad 0,5p. 14. nädala harjutustunni git-i projekt (https://gitlab.cs.ttu.ee/tarvo.treier/2023-itb2203-practice14) on 7. nädala projekti edasiarendus. Samamoodi, nagu 7. nädalal, on ka nüüd vaja andmebaasi jaoks docker käima panna. Selleks minge käsureal POSTGRES kausta ja käivitage käsk: docker compose up -d 1. Ülesanne Tehke päring tudengite nimekirja küsimiseks koos nime filtriga. Tagastatavad väljad võite vabalt valida. Nime filtriga saab piirata tulemuste arvu nime osa järgi. Kui projekt töötab, siis peaks saama päringuid teha aadressil: https://localhost:5001/graphql 2. Ülesanne Käivitage sama päring POSTMAN'ga. Valige HTTP meetodiks POST. Kui REST-ga oleme valinud body tüübiks raw, siis nüüd tuleb valida GraphQL