{"id":2139,"date":"2025-09-11T07:34:57","date_gmt":"2025-09-11T07:34:57","guid":{"rendered":"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/?page_id=2139"},"modified":"2025-09-11T07:39:27","modified_gmt":"2025-09-11T07:39:27","slug":"veebiteenused","status":"publish","type":"page","link":"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/veebiteenused\/","title":{"rendered":"Veebiteenused"},"content":{"rendered":"\n<div class=\"box py-3 generalbox book_content\"><h3>1. Veebiteenus vs API<\/h3><div class=\"no-overflow\"><p dir=\"ltr\" style=\"text-align: left;\"><span id=\"docs-internal-guid-95ce5554-7fff-5d64-d89f-7743e80dda63\"><\/span><\/p><p style=\"\"><span style=\"font-size: 0.9375rem;\">Programmeerimisliides ehk <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133127&amp;displayformat=dictionary\" title=\"S\u00f5nastik: API\" class=\"glossary autolink concept glossaryid5780\">API<\/a> on moodus, mis v\u00f5imaldab kahel rakendusel omavahel andmeid vahetada, kusjuures need rakendused v\u00f5ivad olla kirjutatud t\u00e4iesti erinevates keeltes.<\/span><\/p><div dir=\"ltr\" align=\"center\" style=\"\"><br><img decoding=\"async\" src=\"https:\/\/moodle.edu.ee\/pluginfile.php\/5874779\/mod_book\/chapter\/161379\/image.png\" alt=\"\" role=\"presentation\"><\/div><div dir=\"ltr\" align=\"center\" style=\"\"><em>Joonis 1: <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133127&amp;displayformat=dictionary\" title=\"S\u00f5nastik: API\" class=\"glossary autolink concept glossaryid5780\">API<\/a> kasutamine on nagu kaks rakendust vestleksid omavahel s\u00f5numirakenduses<\/em><br><br><br><\/div><p dir=\"ltr\" style=\"\"><strong>Veebiteenus<\/strong> on selline <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133127&amp;displayformat=dictionary\" title=\"S\u00f5nastik: API\" class=\"glossary autolink concept glossaryid5780\">API<\/a>, mis kasutab <strong>HTTP protokolli<\/strong> nagu veebiserveridki (Apache, Nginx) brauseritega suheldes (Firefox, Google Chrome), mist\u00f5ttu saab neid ka brauseriga m\u00f5ningasel m\u00e4\u00e4ral (ainult GET p\u00e4ringute osas) kasutada.<\/p><p dir=\"ltr\" style=\"\">K\u00f5ik veebiteenused on <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133127&amp;displayformat=dictionary\" title=\"S\u00f5nastik: API\" class=\"glossary autolink concept glossaryid5780\">API<\/a>-d, aga k\u00f5ik <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133127&amp;displayformat=dictionary\" title=\"S\u00f5nastik: API\" class=\"glossary autolink concept glossaryid5780\">API<\/a>-d ei ole veebiteenused. N\u00e4iteks on olemas Windows <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133127&amp;displayformat=dictionary\" title=\"S\u00f5nastik: API\" class=\"glossary autolink concept glossaryid5780\">API<\/a>, mida k\u00f5ik Windowsi t\u00f6\u00f6lauarakendused kasutavad ja mis v\u00f5imaldab neil kasutada operatsioonis\u00fcsteemi sisse ehitatud funktsionaalsust, n\u00e4iteks paluda operatsioonis\u00fcsteemil kuvada kasutajale mingi teade. Ja riistvaraga suhtlemiseks on eraldi <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133127&amp;displayformat=dictionary\" title=\"S\u00f5nastik: API\" class=\"glossary autolink concept glossaryid5780\">API<\/a>-d (<a href=\"https:\/\/www.khronos.org\/opengl\/\" target=\"_blank\">OpenGL<\/a>, <a href=\"https:\/\/developer.apple.com\/metal\/\" target=\"_blank\">Metal<\/a>, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Direct3D\" target=\"_blank\">Direct3D<\/a>).<\/p><p dir=\"ltr\" style=\"\"><strong>Kaks k\u00f5ige levinumat viisi veebiteenuse tegemiseks on <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133133&amp;displayformat=dictionary\" title=\"S\u00f5nastik: SOAP\" class=\"glossary autolink concept glossaryid5780\">SOAP<\/a> ja <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a>.<\/strong><\/p><p dir=\"ltr\" style=\"\">Mis on nende erinevus? <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133133&amp;displayformat=dictionary\" title=\"S\u00f5nastik: SOAP\" class=\"glossary autolink concept glossaryid5780\">SOAP<\/a> on standard<\/strong>, mis kirjeldab s\u00f5numite vormingut, mida veebiteenus ja selle klient \u00fcksteisega vahetavad. <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a> on aga kogumik<\/strong><strong> mittekohustuslikke soovitusi<\/strong> (<em>best practices<\/em>), kuidas h\u00e4stik\u00e4ituvad rakendused <em>v\u00f5iksid<\/em> andmeid \u00fcle veebi (see t\u00e4hendab kasutades HTTP protokolli) vahetada ja igal veebiteenuse ehitajal on RESTist oma spetsiifiline n\u00e4gemus, kuigi suures osas nad kattuvad.<\/p><p dir=\"ltr\" style=\"\">J\u00e4rgnevalt vaatleme kumbagi l\u00e4hemalt.<\/p><br><br><p><\/p><\/div><\/div>\n\n\n\n<div class=\"box py-3 generalbox book_content\"><h3>2. SOAP<\/h3><div class=\"no-overflow\"><p dir=\"ltr\" style=\"text-align: left;\"><span id=\"docs-internal-guid-39afd1c0-7fff-772f-03e3-029764b043bb\"><span style=\"\"><\/span><\/span><\/p><p dir=\"ltr\" style=\"\"><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133133&amp;displayformat=dictionary\" title=\"S\u00f5nastik: SOAP\" class=\"glossary autolink concept glossaryid5780\">SOAP<\/a> (l\u00fchend on tuletatud fraasist <em>Simple Object Access Protocol<\/em>, kuid versioonist 1.2 on \u00f6eldud, et <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133133&amp;displayformat=dictionary\" title=\"S\u00f5nastik: SOAP\" class=\"glossary autolink concept glossaryid5780\">SOAP<\/a> ole enam akron\u00fc\u00fcm, vaid lihtsalt nimi) on natuke vanem veebiteenuste loomise viis, mis leidis varem laialdast kasutust. <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133133&amp;displayformat=dictionary\" title=\"S\u00f5nastik: SOAP\" class=\"glossary autolink concept glossaryid5780\">SOAP<\/a> on v\u00e4ga ulatuslik, kuid keeruline standardite kogum. Nimelt Microsofti meeskond, kes kavandas SOAPi, tegi selle \u00e4\u00e4rmiselt paindlikuks, et see v\u00f5imaldaks suhtlemist nii privaatv\u00f5rkudes, internetis kui ka isegi elektronposti vahendusel.&nbsp;<\/p><h4 style=\"\">UDDI ja WSDL<\/h4><p dir=\"ltr\" style=\"\"><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133133&amp;displayformat=dictionary\" title=\"S\u00f5nastik: SOAP\" class=\"glossary autolink concept glossaryid5780\">SOAP<\/a>-i esialgne versioon oli osa spetsifikatsioonist, mis sisaldas ka Universal Description, Discovery and Integration (UDDI) nimelist standardit, mis oli m\u00f5eldud <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133133&amp;displayformat=dictionary\" title=\"S\u00f5nastik: SOAP\" class=\"glossary autolink concept glossaryid5780\">SOAP<\/a> teenuste leidmiseks ja Web Services Description Language (WSDL), mis oli m\u00f5eldud <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133133&amp;displayformat=dictionary\" title=\"S\u00f5nastik: SOAP\" class=\"glossary autolink concept glossaryid5780\">SOAP<\/a> teenuste dokumentatsiooniks. UDDI ei levinud nii laialdaselt kui selle loojad lootsid ja 2006. aasta jaanuaris teatasid IBM, Microsoft ja SAP, et nad sulgevad oma avalikud UDDI serverid. 2007. aasta l\u00f5pus sulges ka UDDI-d m\u00e4\u00e4ratlev r\u00fchm oma uksed ehk UDDI-t enam edasi ei arendatud ja 2010. aasta septembris teatas Microsoft, et nad eemaldavad UDDI teenused Windows Serveri operatsioonis\u00fcsteemi tulevastest versioonidest.<\/p><p dir=\"ltr\" style=\"\"><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133133&amp;displayformat=dictionary\" title=\"S\u00f5nastik: SOAP\" class=\"glossary autolink concept glossaryid5780\">SOAP<\/a> s\u00e4testab sisuliselt \u00fcmbriku ehk <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133120&amp;displayformat=dictionary\" title=\"S\u00f5nastik: XML\" class=\"glossary autolink concept glossaryid5780\">XML<\/a> struktuuri veebiteenustega andmede vahetamiseks. Arhitektuur ise on loodud selleks, et aidata kaasa erinevate operatsioonide sooritamisele tarkvaraprogrammide vahel. Programmide vaheline suhtlus toimub tavaliselt <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133120&amp;displayformat=dictionary\" title=\"S\u00f5nastik: XML\" class=\"glossary autolink concept glossaryid5780\">XML<\/a>-p\u00f5histe p\u00e4ringute ja HTTP-p\u00f5histe vastuste kaudu. Enamasti kasutatakse HTTP suhtlusprotokolli, kuid v\u00f5ib kasutada ka muid protokolle.<\/p><p dir=\"ltr\" style=\"\"><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133133&amp;displayformat=dictionary\" title=\"S\u00f5nastik: SOAP\" class=\"glossary autolink concept glossaryid5780\">SOAP<\/a>-s\u00f5num sisaldab m\u00f5ningaid kohustuslikke osi, nagu ENVELOPE, HEADER, BODY ja FAULT. ENVELOPE objekt m\u00e4\u00e4ratleb <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133120&amp;displayformat=dictionary\" title=\"S\u00f5nastik: XML\" class=\"glossary autolink concept glossaryid5780\">XML<\/a>-s\u00f5numi taotluse alguse ja l\u00f5pu, HEADER&nbsp;<span style=\"font-size: 0.9375rem;\">sisaldab k\u00f5iki serveri poolt t\u00f6\u00f6deldavaid p\u00e4iseelemente ja BODY sisaldab \u00fclej\u00e4\u00e4nud <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133120&amp;displayformat=dictionary\" title=\"S\u00f5nastik: XML\" class=\"glossary autolink concept glossaryid5780\">XML<\/a>-objekti, mis moodustab taotluse. FAULT-objekti kasutatakse vigade k\u00e4sitlemiseks.<\/span><\/p><br><p><\/p><\/div><\/div>\n\n\n\n<div class=\"box py-3 generalbox book_content\"><h3>3. REST<\/h3><div class=\"no-overflow\"><p dir=\"ltr\" style=\"text-align: left;\"><span id=\"docs-internal-guid-af9f8932-7fff-de64-8092-2c96b4bf99e4\"><\/span><\/p><p dir=\"ltr\" style=\"\"><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a>-i (<em>Representational State Transfer<\/em>) on tavaliselt nimetatud pigem veebiteenuste arhitektuuristiiliks kui protokolliks v\u00f5i standardiks. See tuleneb sellest, et <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a> ei m\u00e4\u00e4ratle s\u00f5numi sisu, vaid ainult teatud tingimusi, millele eeskujulik veebiteenus, mida on lihtne ja mugav kasutada, peaks vastama. Ka <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a> v\u00f5imaldab suhtlust kahe tarkvaraprogrammi vahel: \u00fcks programm saab teiselt programmilt ressursse taotleda ja nendega manipuleerida. <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a> on \u00fcles ehitatud HTTP-protokollile, kasutades URL-ile sarnaseid viiteid ressurssidele, mida nimetatakse URI-deks (<em>Uniform Resource Identifier<\/em>) ja HTTP verbe nagu GET, POST, <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133144&amp;displayformat=dictionary\" title=\"S\u00f5nastik: PUT\" class=\"glossary autolink concept glossaryid5780\">PUT<\/a> ja DELETE, mis n\u00e4itavad, millist tegevust klient ressursiga soovib teha. <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a> kasutab andmete edastamiseks kodeerimisformaate nagu <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133120&amp;displayformat=dictionary\" title=\"S\u00f5nastik: XML\" class=\"glossary autolink concept glossaryid5780\">XML<\/a>, HTML v\u00f5i <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133135&amp;displayformat=dictionary\" title=\"S\u00f5nastik: JSON\" class=\"glossary autolink concept glossaryid5780\">JSON<\/a>. K\u00f5ige eelistatum on <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133135&amp;displayformat=dictionary\" title=\"S\u00f5nastik: JSON\" class=\"glossary autolink concept glossaryid5780\">JSON<\/a>, kuna see on k\u00f5ige \u00fchilduvam ja lihtsamini kasutatav.&nbsp;<\/p><p dir=\"ltr\" style=\"\"><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a> on v\u00e4ga arendajas\u00f5bralik, sest selle kasutamine on palju lihtsam kui <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133133&amp;displayformat=dictionary\" title=\"S\u00f5nastik: SOAP\" class=\"glossary autolink concept glossaryid5780\">SOAP<\/a>. Lisaks on <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a> v\u00e4hem s\u00f5narikkam ja kahe l\u00f5pp-punkti vahelisel suhtlemisel saadetakse v\u00e4hem andmemahtu. <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a> lahendas SOAPi keerukuse probleemid ja n\u00fc\u00fcd on praktiliselt k\u00f5ik avalikud <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133127&amp;displayformat=dictionary\" title=\"S\u00f5nastik: API\" class=\"glossary autolink concept glossaryid5780\">API<\/a>-d <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a> <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133127&amp;displayformat=dictionary\" title=\"S\u00f5nastik: API\" class=\"glossary autolink concept glossaryid5780\">API<\/a>-d.<\/p><p style=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/moodle.edu.ee\/pluginfile.php\/5874779\/mod_book\/chapter\/161381\/rest1.png\" alt=\"\" width=\"827\" height=\"572\" role=\"presentation\" class=\"img-responsive atto_image_button_text-bottom\"><br><\/p><p dir=\"ltr\" style=\"\"><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a> veebiteenusega saab suhelda kasutades HTTP protokolli. Antud joonisel esitab <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a> veebiteenus k\u00fcsitud andmete hetkeoleku <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133135&amp;displayformat=dictionary\" title=\"S\u00f5nastik: JSON\" class=\"glossary autolink concept glossaryid5780\">JSON<\/a> formaadis.<\/p><br><br><p><\/p><\/div><\/div>\n\n\n\n<div class=\"box py-3 generalbox book_content\"><h3>4. Mida t\u00e4hendab RESTful?<\/h3><div class=\"no-overflow\"><p style=\"text-align: left;\"><span id=\"docs-internal-guid-fcd54355-7fff-940a-6ea1-b4b4d0473f7f\">Enamik <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133127&amp;displayformat=dictionary\" title=\"S\u00f5nastik: API\" class=\"glossary autolink concept glossaryid5780\">API<\/a><\/strong>-sid maailmas on <strong>RESTful<\/strong>, mis t\u00e4hendab, et nad j\u00e4rgivad suures osas teatud reeglite v\u00f5i \u00f5ieti piirangute kogumit, mida tuntakse kui <em>Representational State Transfer<\/em> ehk <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a><\/strong>, mis on alates 2000. aastate algusest olnud <em>de facto<\/em> standard <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133127&amp;displayformat=dictionary\" title=\"S\u00f5nastik: API\" class=\"glossary autolink concept glossaryid5780\">API<\/a><\/strong>-de arendamisel. <em>De facto<\/em> sellep\u00e4rast, et ametlikult ei ole <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a><\/strong> standard, vaid Roy Fieldingu poolt doktorikraadi v\u00e4itekirjas kirja pandud parimate praktikate kirjeldus, millele on aegade jooksul lisandunud ka teisi h\u00e4id tavasid.<\/span><\/p><\/div><\/div>\n\n\n\n<div class=\"box py-3 generalbox book_content\"><h3>5. Kuidas valida SOAPi ja REST-i vahel?<\/h3><div class=\"no-overflow\"><p dir=\"ltr\" style=\"text-align: left;\"><span id=\"docs-internal-guid-1f9df3a7-7fff-c34e-afa4-a783e0e8ca38\"><\/span><\/p><p dir=\"ltr\" style=\"\"><strong><\/strong><\/p><p><\/p><span id=\"docs-internal-guid-1f9df3a7-7fff-c34e-afa4-a783e0e8ca38\"><p style=\"\"><strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133133&amp;displayformat=dictionary\" title=\"S\u00f5nastik: SOAP\" class=\"glossary autolink concept glossaryid5780\">SOAP<\/a><\/strong>i ja <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a><\/strong>i vahel tuleb valida vastavalt projekti n\u00f5uetele. M\u00f5nedel programmeerimiskeeltel (nt Java) on v\u00e4ga hea <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133133&amp;displayformat=dictionary\" title=\"S\u00f5nastik: SOAP\" class=\"glossary autolink concept glossaryid5780\">SOAP<\/a><\/strong> tugi ja selle kasutuselev\u00f5tt on lihtne. Muus keeles pole see nii lihtne (nt Javascriptis pole keelde sisse ehitatud tuge ja tuleb kasutada v\u00e4liseid teeke, mis on kohmakas). Samuti on <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a><\/strong> v\u00e4ga palju rohkem levinud ja suvalisel arendajal on suure t\u00f5en\u00e4osusega <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a><\/strong>ist mingisugune arusaam juba olemas, mist\u00f5ttu on \u00fcldjuhul <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a><\/strong> parem valik.<br>V\u00f5rreldes <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a><\/strong>iga on <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133133&amp;displayformat=dictionary\" title=\"S\u00f5nastik: SOAP\" class=\"glossary autolink concept glossaryid5780\">SOAP<\/a><\/strong> kindlasti keerulisem ja kasutab rohkem andmemahtu, aga <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133133&amp;displayformat=dictionary\" title=\"S\u00f5nastik: SOAP\" class=\"glossary autolink concept glossaryid5780\">SOAP<\/a><\/strong> pakub ka eeliseid:&nbsp;<br><\/p><ul><li>transpordist s\u00f5ltumatu (<strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a><\/strong> vajab <strong>HTTP<\/strong>-d, sest kasutab <strong>HTTP<\/strong> verbe k\u00e4skudena ja <strong>URL<\/strong>-e andmekollektsioonidele viitamiseks, aga <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133133&amp;displayformat=dictionary\" title=\"S\u00f5nastik: SOAP\" class=\"glossary autolink concept glossaryid5780\">SOAP<\/a><\/strong>i puhul on kogu info <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133120&amp;displayformat=dictionary\" title=\"S\u00f5nastik: XML\" class=\"glossary autolink concept glossaryid5780\">XML<\/a><\/strong>i sees, mis on <strong>POST<\/strong> p\u00e4ringu keha sees, aga tegelikult pole vahet, mis meediumi vahendusel <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133120&amp;displayformat=dictionary\" title=\"S\u00f5nastik: XML\" class=\"glossary autolink concept glossaryid5780\">XML<\/a><\/strong>-ide vahetamine toimub, kasv\u00f5i tuvipostiga),&nbsp;<\/li><\/ul><ul><li>t\u00f6\u00f6tab h\u00e4sti hajutatud ettev\u00f5tluskeskkondades (<strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a> <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133127&amp;displayformat=dictionary\" title=\"S\u00f5nastik: API\" class=\"glossary autolink concept glossaryid5780\">API<\/a><\/strong> server vajab otse\u00fchendust kliendiga, aga <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133133&amp;displayformat=dictionary\" title=\"S\u00f5nastik: SOAP\" class=\"glossary autolink concept glossaryid5780\">SOAP<\/a><\/strong>iga pole vahet, mitmest kohast <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133120&amp;displayformat=dictionary\" title=\"S\u00f5nastik: XML\" class=\"glossary autolink concept glossaryid5780\">XML<\/a> <\/strong>dokument enne serverini j\u00f5udmist l\u00e4bi k\u00e4ib (kasv\u00f5i l\u00e4bi pastebin.com-i),&nbsp;<\/li><\/ul><ul><li>on standardiseeritud (k\u00f5ik on standardiga paigas, kuidas implementeerida, aga <span><strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a><\/strong><\/span>i puhul peab disainiotsuseid ise tegema ja guugeldama neid, s\u00fcvenedes arendajate pikkadesse filosoofilistesse v\u00e4itlustesse, kas nii v\u00f5i naa oleks parem),<\/li><\/ul><ul><li>ws-standardid (valmisarendatud s\u00f5numikomplektid t\u00fc\u00fcpilisteks stsenaariumiteks nagu nt sisselogimine, et neid ise leiutama ei peaks).<\/li><\/ul><ul><li>sisseehitatud veahaldus ja automaatika (teatud tasuliste toodete kasutamisel)<\/li><\/ul><strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a><\/strong>il ei ole nii palju valmisfunktsionaalsust, ent v\u00f5rreldes <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133133&amp;displayformat=dictionary\" title=\"S\u00f5nastik: SOAP\" class=\"glossary autolink concept glossaryid5780\">SOAP<\/a><\/strong>iga on tal j\u00e4rgmised eelised:<br><ul><li>paindlik ja lihtne kasutada (kui m\u00f5ni <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a><\/strong>i tingimustest ei meeldi, ei pea seda kasutama, kuigi siis \u00f6eldakse, et sinu <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a><\/strong> teenus ei ole <strong>RESTful<\/strong>)<\/li><\/ul><ul><li>veebiteenusega suhtlemiseks ei ole vaja lisatarkvara, sest <strong>HTTP<\/strong> p\u00e4ringute tegemise v\u00f5imalus ja <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133135&amp;displayformat=dictionary\" title=\"S\u00f5nastik: JSON\" class=\"glossary autolink concept glossaryid5780\">JSON<\/a><\/strong> tugi on pea k\u00f5igis keeltes sees olemas.<\/li><\/ul><ul><li>v\u00e4iksem \u00f5ppimisk\u00f5ver (p\u00f5him\u00f5tteliselt t\u00f6\u00f6tab <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a> <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133127&amp;displayformat=dictionary\" title=\"S\u00f5nastik: API\" class=\"glossary autolink concept glossaryid5780\">API<\/a><\/strong> server nagu tavaline veebiserver, v\u00e4ljastades HTML asemel <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133135&amp;displayformat=dictionary\" title=\"S\u00f5nastik: JSON\" class=\"glossary autolink concept glossaryid5780\">JSON<\/a><\/strong>it)<\/li><\/ul><ul><li>parem j\u00f5udlus \/ optimaalne v\u00f5rguliikluse kasutus (<strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133133&amp;displayformat=dictionary\" title=\"S\u00f5nastik: SOAP\" class=\"glossary autolink concept glossaryid5780\">SOAP<\/a><\/strong> kasutab k\u00f5ikide s\u00f5numite jaoks rangelt <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133120&amp;displayformat=dictionary\" title=\"S\u00f5nastik: XML\" class=\"glossary autolink concept glossaryid5780\">XML<\/a><\/strong>-i, mis on \u00e4\u00e4rmiselt jutukas formaat ja kulutab info edastamiseks v\u00e4ga palju baite, <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a><\/strong>iga kasutatakse peamiselt <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133135&amp;displayformat=dictionary\" title=\"S\u00f5nastik: JSON\" class=\"glossary autolink concept glossaryid5780\">JSON<\/a><\/strong> formaati, mis on palju kompaktsem ja lihtsam lugeda ka. Lisaks on RESTi puhul k\u00e4sk <strong>HTTP <\/strong>meetod ja parameetrid <strong>URL<\/strong>-is, <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133133&amp;displayformat=dictionary\" title=\"S\u00f5nastik: SOAP\" class=\"glossary autolink concept glossaryid5780\">SOAP<\/a><\/strong>il on aga alati <strong>POST<\/strong> meetod ja sama <strong>URL<\/strong> ning k\u00e4sk ja parameetrid on p\u00e4ringu kehas <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133120&amp;displayformat=dictionary\" title=\"S\u00f5nastik: XML\" class=\"glossary autolink concept glossaryid5780\">XML<\/a><\/strong> elementide sees),&nbsp;<\/li><\/ul><ul><li><strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a><\/strong> on disainifilosoofiliselt l\u00e4hemal teistele veebitehnoloogiatele (kasutab <strong>HTTP<\/strong> enda meetodeid k\u00e4skudena ja <strong>HTTP URL<\/strong>-i <strong>URI<\/strong>-na)<\/li><\/ul><ul><li>Siiski p\u00f5hiline, mis eristab <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133133&amp;displayformat=dictionary\" title=\"S\u00f5nastik: SOAP\" class=\"glossary autolink concept glossaryid5780\">SOAP<\/a><\/strong>i <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a><\/strong>ist on keerukus: <strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a><\/strong> on kergesti m\u00f5istetav ja rakendatav.<\/li><\/ul><br><p><\/p><\/span><p dir=\"ltr\"><strong><\/strong><\/p><p><br><\/p><\/div><\/div>\n\n\n\n<div class=\"box py-3 generalbox book_content\"><h3>6. Kuidas erineb URI RESTis ja SOAPis?<\/h3><div class=\"no-overflow\"><p style=\"text-align: left;\"><span id=\"docs-internal-guid-cfaf3963-7fff-822e-5601-8cc19eda0664\"><\/span><\/p><p dir=\"ltr\" style=\"\">RESTful <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133127&amp;displayformat=dictionary\" title=\"S\u00f5nastik: API\" class=\"glossary autolink concept glossaryid5780\">API<\/a> puhul on serveri andmebaasis paiknevaid andmed tehtud <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133127&amp;displayformat=dictionary\" title=\"S\u00f5nastik: API\" class=\"glossary autolink concept glossaryid5780\">API<\/a> kaudu k\u00e4ttesaadavaks nn <strong><em>ressursside<\/em><\/strong> v\u00f5i <strong><em>kollektsioonidena<\/em><\/strong>. Igale kollektsioonile ehk ressursile on eraldatud omaette URL. Tehniliselt nad pole k\u00fcll mitte URL-id, vaid URI-d (<em>unified resource identifier<\/em>). M\u00f5te on selles, et nad eristavad eri t\u00fc\u00fcpi andmeressursse serveris. N\u00e4iteks raamatupidamistarkvara <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a> <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133127&amp;displayformat=dictionary\" title=\"S\u00f5nastik: API\" class=\"glossary autolink concept glossaryid5780\">API<\/a>-l v\u00f5ib olla olemas URI-d <code>\/invoices, \/accounts, \/payments, \/orders<\/code>. Need peavad olema <strong>nimis\u00f5nad<\/strong> ja <strong>mitmuses<\/strong>. N\u00e4iteks ei sobi \/car ega \/getCar, vaid \/cars. Sisselogimiseks on kollektsioon \/sessions, kuhu elemendi (sessiooni) lisamisel on kasutaja sisse logitud. SOAPis s\u00f5ltub URI aga sellest, millist bindingut kasutatakse. Binding seob millegi millegagi. Antud kontekstis on m\u00f5eldud seda, et SOAPi meetodid saab siduda HTTP meetoditega, kui kasutada selleks spetsiaalselt v\u00e4ljat\u00f6\u00f6tatud <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133133&amp;displayformat=dictionary\" title=\"S\u00f5nastik: SOAP\" class=\"glossary autolink concept glossaryid5780\">SOAP<\/a>-i laiendust nimega <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133133&amp;displayformat=dictionary\" title=\"S\u00f5nastik: SOAP\" class=\"glossary autolink concept glossaryid5780\">SOAP<\/a> HTTP Binding. N\u00e4iteks \/accounting-web service<\/p><br><br><p><\/p><\/div><\/div>\n\n\n\n<div class=\"box py-3 generalbox book_content\"><h3>7. Kuidas erineb k\u00e4su (ehk tegevuse, mida soovitakse teha) edastamine?<\/h3><div class=\"no-overflow\"><p style=\"text-align: center;\">\n<\/p>\n<p style=\"text-align: left;\"><span id=\"docs-internal-guid-3f6aa6bc-7fff-d0ed-1132-918d956b925c\"><\/span><\/p>\n<p dir=\"ltr\" style=\"\">Kui SOAPis kasutada andmeedastusviisiks HTTP protokolli, on valida kahe mustri vahel: <a href=\"http:\/\/www.w3.org\/TR\/2007\/REC-soap12-part2-20070427\/#singlereqrespmep\" target=\"_blank\">SOAP Request-Response message exchange pattern<\/a> ja <a href=\"http:\/\/www.w3.org\/TR\/2007\/REC-soap12-part2-20070427\/#soapresmep\" target=\"_blank\">SOAP Response message exchange pattern<\/a>. Esimese puhul saadab klient mistahes p\u00e4ringu alati POST p\u00e4ringuna ja andmed nagu mis funktsioon serveris k\u00e4ivitada ning milliste argumentidega, on kodeeritud POST p\u00e4ringu kehana saadetavas\n    <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133120&amp;displayformat=dictionary\" title=\"S\u00f5nastik: XML\" class=\"glossary autolink concept glossaryid5780\">XML<\/a> dokumendis; teine t\u00f6\u00f6tab rohkem nagu <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a>: need p\u00e4ringud, mis andmeid k\u00fcsivad ja neid ei muuda, saadetakse GET p\u00e4ringuna ja vajalikud andmed edastatakse p\u00e4ringu rajana (<code>\/func1?arg1=foo&amp;arg2=bar<\/code>), kuid seda re\u017eiimi rakendatakse\n    praktikas v\u00e4ga harva.&nbsp;<\/p>\n<p dir=\"ltr\" style=\"\"><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a>-i puhul edastatakse aga k\u00e4sk kasutades HTTP meetodit, mis vastab k\u00f5ige rohkem p\u00e4ringu olemusele:<\/p>\n<div dir=\"ltr\" style=\"text-align: left;\">\n    <table>\n        <colgroup>\n            <col>\n        <\/colgroup>\n        <tbody>\n            <tr>\n                <td>\n                    <ul>\n                        <li dir=\"ltr\" aria-level=\"1\">\n                            <p dir=\"ltr\" role=\"presentation\"><strong>GET<\/strong>: Kollektsiooni elementide loendi v\u00f5i \u00fche elemendi andmete hankimine.<\/p>\n                        <\/li>\n                        <li dir=\"ltr\" aria-level=\"1\">\n                            <p dir=\"ltr\" role=\"presentation\"><strong><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133144&amp;displayformat=dictionary\" title=\"S\u00f5nastik: PUT\" class=\"glossary autolink concept glossaryid5780\">PUT<\/a><\/strong>: Elemendi andmete uuendamine (v\u00e4lja vahetamine uue komplekti andmetega).<\/p>\n                        <\/li>\n                        <li dir=\"ltr\" aria-level=\"1\">\n                            <p dir=\"ltr\" role=\"presentation\"><strong>POST<\/strong>: Andmete saatmine t\u00f6\u00f6tluseks. Nt kollektsiooni uue elemendi loomiseks v\u00f5i olemasoleva muutmiseks.&nbsp;<\/p>\n                        <\/li>\n                        <li dir=\"ltr\" aria-level=\"1\">\n                            <p dir=\"ltr\" role=\"presentation\"><strong>PATCH<\/strong>: Olemasoleva elemendi \u00fcksikute andmete muutmiseks.<\/p>\n                        <\/li>\n                        <li dir=\"ltr\" aria-level=\"1\">\n                            <p dir=\"ltr\" role=\"presentation\"><strong>DELETE<\/strong>: Andmete eemaldamine kollektsioonist.<\/p>\n                        <\/li>\n                    <\/ul>\n                <\/td>\n            <\/tr>\n        <\/tbody>\n    <\/table>\n<\/div><br>\n<p dir=\"ltr\" style=\"\">N\u00e4iteks arve kustutamine tuleb kindlasti teha DELETE p\u00e4ringuga (nt <code>DELETE \/invoices\/42<\/code>), mitte POST p\u00e4ringuga (nt <code>POST \/invoices?id=42&amp;action=delete<\/code> v\u00f5i midagi sellist), sest DELETE on otseselt kustutamiseks, POST aga \u00fcldiselt andmete serverisse saatmine\n    t\u00f6\u00f6tluseks ja alati tuleks eelistada seda meetodit. Kui on kahtlus, millist HTTP meetodit peaks mingil momendil kasutama, tuleks p\u00f6\u00f6rduda HTTP spetsifikatsiooni poole ja lugeda meetodite selgitusi. HTTP spetsifikatsioon kannab t\u00e4histust RFC 7231 ning\n    meetodite kirjeldus on toodud selle spetsifikatsiooni sektsioonis 4.3. (otselink: <a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/rfc7231#section-4.3\" target=\"_blank\">https:\/\/datatracker.ietf.org\/doc\/html\/rfc7231#section-4.3<\/a>)<\/p>\n<p dir=\"ltr\" style=\"\"><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a>-is teeb klient HTTP p\u00e4ringuid vastava kollektsiooni URI pihta. URI nimetatakse vahel ka l\u00f5pp-punktiks (endpoint). P\u00e4ring on tavaline HTTP p\u00e4ring: algab nn p\u00e4ringu-reaga (Request-Line), mis sisaldab HTTP meetodit (kirjeldab ressursiga tehtavat toimingut)\n    ja URI.&nbsp;<\/p>\n<p dir=\"ltr\" style=\"\">N\u00e4iteks GET meetod t\u00e4hendab, et soovid lihtsalt andmeid lugeda, POST t\u00e4hendab, et soovid luua uue ressursi, PATCH on uuenduste jaoks ja DELETE on andmete eemaldamiseks. Peale nende on veel m\u00f5ned muud meetodid lisaks eelnevatele.&nbsp;<\/p><p dir=\"ltr\" style=\"\">P\u00e4rast esimest rida on p\u00e4ised, mis sisaldavad metaandmeid taotluse kohta. N\u00e4iteks p\u00e4isega <strong><em>Accept<\/em><\/strong> saab \u00f6elda serverile, et tahad andmeid mingis konkreetses formaadis saada ja p\u00e4is <strong><em>Authorization <\/em><\/strong>sisaldab andmeid, mis t\u00f5endavad serverile, et sul on \u00f5igus\n    seda p\u00e4ringut teha. P\u00e4istele j\u00e4rgneb keha ehk p\u00e4ringu sisu.&nbsp;<\/p>\n<p dir=\"ltr\" style=\"\"><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a> server v\u00f5tab p\u00e4ringus\u00f5numi vastu ja k\u00e4ivitab seej\u00e4rel koodi, mis kontrollib vajadusel p\u00e4isest juurdep\u00e4\u00e4su\u00f5igust, loeb siis andmebaasist soovitud andmed (v\u00f5i hoopis paneb nad sinna kui oli POST p\u00e4ring) ja seej\u00e4rel vormindab andmetest vastuss\u00f5numi:<\/p>\n<p dir=\"ltr\" style=\"text-align: center; \">\n    <p dir=\"ltr\" style=\"\">S\u00f5numi \u00fclemine osa, staatus-rida, sisaldab staatuskoodi, mis \u00fctleb kliendile, mis tema p\u00e4ringuga juhtus. Koodid 200-299 t\u00e4hendavad, et k\u00f5ik l\u00e4ks h\u00e4sti. 400-499 koodid t\u00e4hendavad, et sinu p\u00e4ringuga oli midagi valesti ja 500-599 t\u00e4hendavad, et serveris\n        oli mingi viga. \u00dcks v\u00e4ga kasulik veebisait, kus on k\u00f5ik staatuskoodid koos selgitustega \u00e4ra toodud, on <a href=\"https:\/\/httpstatuses.com\" target=\"_blank\">https:\/\/httpstatuses.com<\/a>.&nbsp;<\/p>\n    <p dir=\"ltr\" style=\"\">P\u00e4rast staatuskoodi on vastuse p\u00e4ised (response headers), mis sisaldavad teavet serveri kohta. Sellele j\u00e4rgneb vastuse keha (<em>response body<\/em>), mis sisaldab soovitud andmeid (<em>payload<\/em>) ja on <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133127&amp;displayformat=dictionary\" title=\"S\u00f5nastik: API\" class=\"glossary autolink concept glossaryid5780\">API<\/a>-de puhul tavaliselt vormindatud JSONis v\u00f5i <a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133120&amp;displayformat=dictionary\" title=\"S\u00f5nastik: XML\" class=\"glossary autolink concept glossaryid5780\">XML<\/a> formaadis.&nbsp;<\/p><a href=\"https:\/\/moodle.edu.ee\/mod\/glossary\/showentry.php?eid=133143&amp;displayformat=dictionary\" title=\"S\u00f5nastik: REST\" class=\"glossary autolink concept glossaryid5780\">REST<\/a>\n    arhitektuuri oluline osa on see, et see on olekuta (<em>stateless<\/em>), mis t\u00e4hendab, et kaks osapoolt ei pea salvestama \u00fcksteise kohta mingit teavet ja iga p\u00e4ringu-vastuse ts\u00fckkel on s\u00f5ltumatu kogu muust suhtlusest. Pole nii, et k\u00f5igepealt saadad \u00fche p\u00e4ringu,\n    mis loob serveris mingi oleku ja alles siis saad edukalt teise saata (niiviisi k\u00e4itub n\u00e4iteks SMTP protokoll, millega e-maile saadetakse). See tagab, et veebirakendused oleksid korrektsed ja t\u00f6\u00f6kindlad.<br>\n    <p><\/p>\n    <p><\/p>\n    <h5>\n        <p><\/p>\n    <\/h5><em style=\"font-size: 0.9375rem;\">\n    \n    <\/em>\n    <p><\/p>\n    <p><\/p><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>1. Veebiteenus vs API Programmeerimisliides ehk API on moodus, mis v\u00f5imaldab kahel rakendusel omavahel andmeid vahetada, kusjuures need rakendused v\u00f5ivad olla kirjutatud t\u00e4iesti erinevates keeltes. Joonis 1: API kasutamine on nagu kaks rakendust vestleksid omavahel s\u00f5numirakenduses Veebiteenus on selline API, mis kasutab HTTP protokolli nagu veebiserveridki (Apache, Nginx) brauseritega suheldes (Firefox, Google Chrome), mist\u00f5ttu saab [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2139","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-json\/wp\/v2\/pages\/2139","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-json\/wp\/v2\/comments?post=2139"}],"version-history":[{"count":10,"href":"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-json\/wp\/v2\/pages\/2139\/revisions"}],"predecessor-version":[{"id":2149,"href":"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-json\/wp\/v2\/pages\/2139\/revisions\/2149"}],"wp:attachment":[{"href":"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-json\/wp\/v2\/media?parent=2139"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}