{"id":226502,"date":"2022-08-22T10:17:00","date_gmt":"2022-08-22T07:17:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=226502"},"modified":"2022-11-08T04:32:10","modified_gmt":"2022-11-08T01:32:10","slug":"crud-jaerjestelmaen-luominen-wordpressissae-wpdatatables-tables-plugin","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/crud-jaerjestelmaen-luominen-wordpressissae-wpdatatables-tables-plugin\/","title":{"rendered":"CRUD-j\u00e4rjestelm\u00e4n luominen WordPressiss\u00e4 &#8211; wpDataTables Tables Plugin"},"content":{"rendered":"\n<p>T\u00e4m\u00e4 artikkeli CRUD-j\u00e4rjestelm\u00e4n luomisesta WordPressiss\u00e4 julkaistiin jo vuonna 2014. Huomasimme kuitenkin, ett\u00e4 aihe tuli entist\u00e4 ajankohtaisemmaksi, joten p\u00e4\u00e4timme antaa sille uuden ilmeen.<\/p>\n<p>Mik\u00e4 on CRUD-j\u00e4rjestelm\u00e4, kuinka integroida CRUD-j\u00e4rjestelm\u00e4 MySQL:lle WordPress-sivustollesi, mitk\u00e4 ovat erilaisten l\u00e4hestymistapojen k\u00e4yt\u00f6n edut ja haitat?<\/p>\n<h2>Mik\u00e4 on CRUD-j\u00e4rjestelm\u00e4?<\/h2>\n<p>Lyhenne <strong>CRUD<\/strong> tulee sanoista <strong>C<\/strong> reate, <strong>R<\/strong> ead, <strong>U<\/strong> pdate, <strong>D<\/strong> elete. Mik\u00e4 toisin sanoen tarkoittaa tiedonhallintaj\u00e4rjestelm\u00e4\u00e4. Webiss\u00e4 se tarkoittaisi todenn\u00e4k\u00f6isesti ohjelmistoa, joka hallitsee tietokantaasi. Yleens\u00e4 se viittaa MySQL-, PostgreSQL-, MS SQL- tai muihin tietokantakoneisiin.<\/p>\n<p>Upea ja ehk\u00e4 suosituin esimerkki CRUD-j\u00e4rjestelm\u00e4st\u00e4 on <a href=\"https:\/\/www.phpmyadmin.net\/home_page\/index.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">phpMyAdmin<\/a>. PHPMyAdmin on ty\u00f6kalu, jota l\u00e4hes jokainen verkkokehitt\u00e4j\u00e4 k\u00e4ytt\u00e4\u00e4 MySQL-tietojen hallintaan verkossa. Se levisi niin laajalle, ett\u00e4 t\u00e4ll\u00e4 hetkell\u00e4 sit\u00e4 voidaan kutsua vakioty\u00f6kaluksi MySQL-tietokantojen hallintaan. Nyky\u00e4\u00e4n se on esiasennettu melkein kaikkiin hosting-palvelujen tarjoajien CPanel-ty\u00f6kaluihin.<\/p>\n<p>CRUD-j\u00e4rjestelmille on tuhansia vakiok\u00e4ytt\u00f6tapauksia. Esimerkiksi &#8211; melkein mik\u00e4 tahansa luettelo, kirjausloki, tilastotiedot. Periaatteessa kaikki tiedon tallentamiseen liittyv\u00e4 vaatisi informaatiobittien lis\u00e4\u00e4mist\u00e4, muokkaamista ja poistamista. Silloin CRUD-j\u00e4rjestelm\u00e4t tulevat peliin.<\/p>\n<h2>Miksi tarvitset CRUD-j\u00e4rjestelm\u00e4n WordPressiin?<\/h2>\n<p>WordPress itsess\u00e4\u00e4n on tehokas CMS (Content Management System), joka on my\u00f6s CRUD-j\u00e4rjestelm\u00e4n erikoistapaus. Kuten tied\u00e4t, WordPress-sivuston k\u00e4ytt\u00e4j\u00e4t voivat lis\u00e4t\u00e4 viestej\u00e4 ja sivuja, muokata tai poistaa niit\u00e4. Mutta joskus kohtaat tilanteen, jossa joudut hallitsemaan joitain tietokantatietoja suoraan WordPress-k\u00e4ytt\u00f6liittym\u00e4st\u00e4, joka ei yleens\u00e4 ole postattua tai sivuun liittyv\u00e4\u00e4 ja joka ei sovi kauniisti WordPressin taksonomioihin. Se voi olla muun muassa yksi n\u00e4ist\u00e4 tilanteista, jolloin tarvitset itsen\u00e4isen CRUD-j\u00e4rjestelm\u00e4n WordPressiss\u00e4:<\/p>\n<ul>\n<li>Haluaisitko WordPress-sivustollesi virheseurannan, merkint\u00e4lokin tai jonkin muun tiedonsy\u00f6tt\u00f6ty\u00f6kalun;<\/li>\n<li>Tai esimerkiksi haluat sallia joidenkin k\u00e4ytt\u00e4jien muokata joitain liiketoimintaan liittyvi\u00e4 tietoja sivustosi k\u00e4ytt\u00f6liittym\u00e4st\u00e4 antamatta heille p\u00e4\u00e4sy\u00e4 WordPress-sivuston hallintapaneeliin tai ehk\u00e4 jopa paljastamatta, ett\u00e4 sivusto toimii WordPressill\u00e4.<\/li>\n<li>Toinen esimerkki on vaatimus sallia joidenkin k\u00e4ytt\u00e4jien muokata tietokantataulukkoa. Esimerkiksi muokata tehty\u00e4 tilausta, muokata joitain henkil\u00f6tietoja jne.<\/li>\n<\/ul>\n<p>Ja vastaavia pyynt\u00f6j\u00e4.<\/p>\n<h2>Kuinka integroida CRUD-j\u00e4rjestelm\u00e4 WordPress-sivustoon?<\/h2>\n<h3>Helpoin ratkaisu \u2013 yrit\u00e4 l\u00f6yt\u00e4\u00e4 sopiva laajennus<\/h3>\n<p><strong>Ensinn\u00e4kin varmista, ett\u00e4 tarvitset sellaisen.<\/strong> Monet teht\u00e4v\u00e4t eiv\u00e4t ole ainutlaatuisia, ja voit todenn\u00e4k\u00f6isesti l\u00f6yt\u00e4\u00e4 tarpeisiisi sopivan laajennuksen. Jos esimerkiksi tarvitset virheenseurantaohjelman, kuten edell\u00e4 mainittiin, voit tarkistaa ja ladata <a href=\"https:\/\/wordpress.org\/plugins\/really-simple-issue-tracker\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">t\u00e4m\u00e4n<\/a> tai <a href=\"https:\/\/wordpress.org\/plugins\/bugerator\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">t\u00e4m\u00e4n<\/a>.<\/p>\n<p>Ja jos tarvitset jotain yleisemp\u00e4\u00e4, kuten erilaisten MySQL-taulukoiden muokkaamista WordPressin k\u00e4ytt\u00f6liittym\u00e4st\u00e4, kokeile <a href=\"https:\/\/wpdatatables.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wpDataTables<\/a> &#8211; laajennusta, joka on pohjimmiltaan WordPressin CRUD-j\u00e4rjestelm\u00e4. Voit n\u00e4hd\u00e4 luettelon ominaisuuksista ja esimerkkej\u00e4 sen toiminnasta <a href=\"https:\/\/wpdatatables.com\/documentation\/general\/features-overview\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">t\u00e4\u00e4lt\u00e4<\/a>. Tai jopa kokeile ilmaista Lite-versiota <a href=\"https:\/\/wordpress.org\/plugins\/wpdatatables\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPress-laajennusten arkistosta<\/a>.<\/p>\n<p>On syyt\u00e4 huomata, ett\u00e4 wpDataTables ei aseta mit\u00e4\u00e4n rajoituksia tietorakenteelle, sarakkeiden tai rivien m\u00e4\u00e4r\u00e4lle, se tukee monia <a href=\"https:\/\/wpdatatables.com\/documentation\/column-features\/currency-percentage-and-other-columns\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">tietotyyppej\u00e4<\/a> ja <a href=\"https:\/\/wpdatatables.com\/documentation\/front-end-editing\/editor-input-types\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">erilaisia \u200b\u200b\u200b\u200beditorin sy\u00f6tt\u00f6tyyppej\u00e4<\/a>. Esimerkiksi tietyt tyypit, kuten liitteet tai <a href=\"https:\/\/wpdatatables.com\/documentation\/column-features\/datetime-columns\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">DateTime<\/a>. Lis\u00e4ksi se mahdollistaa tietojen muokkaamisen <a href=\"https:\/\/wpdatatables.com\/documentation\/front-end-editing\/creating-editable-tables\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ponnahdusikkunaeditorin<\/a>, <a href=\"https:\/\/wpdatatables.com\/documentation\/front-end-editing\/inline-editing\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">upotetun editorin<\/a> tai jopa <a href=\"https:\/\/wpdatatables.com\/documentation\/front-end-editing\/excel-like-editor\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">taulukkolaskentamallin kaltaisen editorin<\/a> avulla .<\/p>\n<p>Jos sinusta tuntuu edelleen, ett\u00e4 sinun on rakennettava mukautettu CRUD-j\u00e4rjestelm\u00e4 WordPressiin, sinun tulee valmistautua vakavaan koodaukseen saadaksesi sen valmiiksi.<\/p>\n<h3>Aloita uusi WordPress-laajennus<\/h3>\n<p>Jos luulet, ett\u00e4 mik\u00e4\u00e4n laajennus ei vastaa tarpeitasi, luo oma! Se ei ehk\u00e4 ole niin pelottavaa kuin milt\u00e4 n\u00e4ytt\u00e4\u00e4 ensi silm\u00e4yksell\u00e4. Aloita lukemalla <a href=\"http:\/\/code.tutsplus.com\/tutorials\/create-a-custom-wordpress-plugin-from-scratch--net-2668\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">t\u00e4m\u00e4 mukava opetusohjelma<\/a> WordPress-laajennuksen luomisesta tyhj\u00e4st\u00e4. Ja tietysti my\u00f6s <a href=\"https:\/\/codex.wordpress.org\/Writing_a_Plugin\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">t\u00e4m\u00e4<\/a> WordPress Codexissa.<\/p>\n<p>Ensimm\u00e4inen aloitusvaihe, kun luot mink\u00e4 tahansa laajennuksen \u2013 mukaan lukien CRUD-j\u00e4rjestelm\u00e4n WordPress-laajennuksessa \u2013 on tiedostojen j\u00e4sent\u00e4minen oikein.<br \/>\nTavallinen tapa on sijoittaa p\u00e4\u00e4merkinn\u00e4n CRUD-pistetiedosto laajennuksen juurihakemistoon ja valmistella useita alikansioita:<\/p>\n<ul>\n<li><strong>Assets<\/strong> \u2013 kaikki javascriptit, tyylitaulukot, fontit, kuvat ja muut staattiset resurssit, joita tarvitaan CRUD-j\u00e4rjestelm\u00e4ss\u00e4si;<\/li>\n<li><strong>L\u00e4hde<\/strong> \u2013 kansio &quot;ydin&quot; PHP-luokille, jotka suorittavat kaikki CRUD-toiminnot taustalla;<\/li>\n<li><strong>Lib<\/strong> \u2013 kansio kolmansien osapuolien komponenteille, joita saatat haluta k\u00e4ytt\u00e4\u00e4 CRUD-j\u00e4rjestelm\u00e4ss\u00e4si;<\/li>\n<li><strong>Mallit<\/strong> \u2013 kansio HTML-malleille, jotka tulevat olemaan CRUD-j\u00e4rjestelm\u00e4n k\u00e4ytt\u00f6liittym\u00e4.<\/li>\n<\/ul>\n<p>Niit\u00e4 voi olla enemm\u00e4n (ohjaimia, lyhytkoodik\u00e4sittelij\u00f6it\u00e4 ja muita) \u2013 mutta se on alkuun minimi.<\/p>\n<h3>Luo editorin tausta (PHP-luokat)<\/h3>\n<p>Ensinn\u00e4kin tarvitset taustaosan: PHP-skriptin, joka todella tekisi CRUD-ty\u00f6t. T\u00e4t\u00e4 varten sinun on yhdistett\u00e4v\u00e4 se WordPress DB:hen (globaali $wpdb-objekti). Voit lukea <a href=\"http:\/\/wp.smashingmagazine.com\/2011\/09\/21\/interacting-with-the-wordpress-database\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">t\u00e4\u00e4lt\u00e4<\/a> mukavan opetusohjelman WordPress-tietokannan ja $wpdb-objektin k\u00e4ytt\u00e4misest\u00e4 liit\u00e4nn\u00e4isiss\u00e4si.<\/p>\n<p>Jos k\u00e4yt\u00e4t ulkoista tietokantaa, sinun on k\u00e4ytett\u00e4v\u00e4 esim. erillist\u00e4 <a href=\"https:\/\/php.net\/pdo\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PDO-yhteytt\u00e4<\/a> tai vain sis\u00e4\u00e4nrakennettuja PHP <a href=\"http:\/\/www.php.net\/manual\/en\/book.mysqli.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">MySQLi<\/a> -toimintoja (jos tietokantamoottorisi on MySQL).<\/p>\n<p>Sinun teht\u00e4v\u00e4si t\u00e4ss\u00e4 vaiheessa on valmistella joukko luokkia ja menetelm\u00e4\u00e4, joka hyv\u00e4ksyy tiedot k\u00e4ytt\u00f6liittym\u00e4st\u00e4 jossain odotetussa muodossa, validoi ja <a href=\"https:\/\/codex.wordpress.org\/Validating_Sanitizing_and_Escaping_User_Data\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">puhdistaa sen<\/a> (kaiken sy\u00f6tteen puhdistaminen on eritt\u00e4in t\u00e4rke\u00e4 turvatoimi kaikille CRUD-j\u00e4rjestelmille) ja suorittaa <strong>INSERT<\/strong>, <strong>UPDATE<\/strong> ja <strong>DELETE<\/strong> -toiminnot tietokannassasi.<\/p>\n<p>Kuten edellisess\u00e4 vaiheessa kuvattiin, n\u00e4m\u00e4 &quot;ydin&quot;-tiedostot kuuluisivat uuden CRUD WordPress -laajennuksen &quot;l\u00e4hde&quot;-kansioon.<\/p>\n<h3>Luo k\u00e4ytt\u00f6liittym\u00e4 (HTML, JS, PHP)<\/h3>\n<p>Kun tietokannan hallintaluokat ja -menetelm\u00e4t on valmisteltu, laajennuksesi tarvitsee k\u00e4ytt\u00f6liittym\u00e4n, jolla k\u00e4ytt\u00e4j\u00e4 voi k\u00e4ytt\u00e4\u00e4 uutta CRUD-j\u00e4rjestelm\u00e4\u00e4si WordPressiss\u00e4. Paras ratkaisu olisi valmistella joukko malleja uusissa laajennustiedostoissasi ja tulostaa se miss\u00e4 tahansa lyhytkoodilla.<\/p>\n<p>On j\u00e4rkev\u00e4\u00e4 pit\u00e4\u00e4 HTML-mallit aina erill\u00e4\u00e4n koodista (MVC-l\u00e4hestymistapa) ja valmistella loogisesti erotetut mallitiedostot, esim.: &quot;edit.tpl.php&quot;, &quot;delete.tpl.php&quot;, &quot;list.tpl.php&quot;. &quot;, jne. \u2013 malli jokaiselle CRUD-sivulle tai toiminnolle.<\/p>\n<p><a href=\"https:\/\/codex.wordpress.org\/Shortcode_API\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">T\u00e4\u00e4lt\u00e4<\/a> voit lukea upean Codex-artikkelin WordPress Shortcode API:sta.<\/p>\n<h3>Yhdist\u00e4 k\u00e4ytt\u00f6liittym\u00e4 takap\u00e4\u00e4h\u00e4n AJAX-puheluilla (JS)<\/h3>\n<p>Tietysti voit tehd\u00e4 sen &quot;vanhan koulun tyyliin&quot;, yksinkertaisilla lomakkeiden l\u00e4hett\u00e4misell\u00e4 ja sivujen uudelleenlatauksella. Nyky\u00e4\u00e4n se ei kuitenkaan ole en\u00e4\u00e4 yleinen l\u00e4hestymistapa. AJAXin k\u00e4ytt\u00e4minen on sen sijaan tavallinen l\u00e4hestymistapa joko jQueryn tai muiden kirjastojen, kuten Angularin, kautta. Suosittelemme siis k\u00e4ytt\u00e4m\u00e4\u00e4n aikaa ja tutkimaan AJAXin k\u00e4ytt\u00f6\u00e4 WordPress-laajennuksissa. <a href=\"https:\/\/codex.wordpress.org\/AJAX_in_Plugins\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">T\u00e4ss\u00e4<\/a> on loistava Codex-artikkeli AJAX:n k\u00e4ytt\u00e4misest\u00e4 laajennuksissasi \u2013 sek\u00e4 j\u00e4rjestelm\u00e4nvalvojan ett\u00e4 k\u00e4ytt\u00f6liittym\u00e4n puolella.<\/p>\n<p>Voit laittaa JS-koodin &quot;resurssit&quot;-kansioon, jonka valmistit ensimm\u00e4isess\u00e4 vaiheessa.<\/p>\n<h3>Testaa, tarkenna ja virheenkorjaus<\/h3>\n<p>Kun toteutusosa on valmis \u2013 vie aikaa ja testaa uutta CRUD-j\u00e4rjestelm\u00e4\u00e4si WordPressiss\u00e4. Et voi havaita kaikkia vikoja alusta alkaen, mutta CRUD-rutiinitoimintojen toistaminen useita kertoja eri esimerkein (suositeltavat &quot;edge&quot;-tapaukset &#8211; esim. eritt\u00e4in suuret tietom\u00e4\u00e4r\u00e4t, saman painikkeen useita kertoja napsauttaminen jne.) auttaa sinua aina. havaita useimmat viat \u2013 ja niit\u00e4 tapahtuu aina, kun otat k\u00e4ytt\u00f6\u00f6n jotain uutta.<\/p>\n<h2>CRUD vs REST: Mit\u00e4 eroa on<\/h2>\n<p>REST on arkkitehtoninen tyyli rakentaa verkkosovelluksia, jotka perustuvat asiakas-palvelin, tilattomaan, v\u00e4limuistiin tallennettavaan tiedonsiirtoprotokollaan eli HTTP-protokollaan. CRUD on lyhenne sanoista CREATE, READ, UPDATE ja DELETE, jotka ovat ohjelmoinnin jatkuvan tallennuksen perustoiminnot.<\/p>\n<p>CRUD-toiminnot, eli CREATE, READ, UPDATE, DELETE, ovat samanlaisia \u200b\u200bkuin REST-peruskomennot, eli GET, PUT, POST, DELETE, mik\u00e4 johtaa sekaannukseen n\u00e4iden kahden v\u00e4lill\u00e4. Mik\u00e4 on CRUD? Mik\u00e4 on REST? Mik\u00e4 on CRUD-m\u00e4\u00e4ritelm\u00e4 kohdassa CRUD vs REST? Onko REST pelkk\u00e4 kopio CRUDista?<\/p>\n<p>N\u00e4m\u00e4 ovat kaikki eritt\u00e4in t\u00e4rkeit\u00e4 kysymyksi\u00e4, joihin t\u00e4ss\u00e4 artikkelissa on tarkoitus vastata yksityiskohtaisesti!<\/p>\n<h3><strong>Miten REST toimii?<\/strong><\/h3>\n<p>Et voi ymm\u00e4rt\u00e4\u00e4 sellaisia \u200b\u200btermej\u00e4 kuin REST API, REST-palvelut, CRUD-matriisi tai CRUD-tietokanta tai REST-ohjelmointi, jos et ymm\u00e4rr\u00e4 n\u00e4iden kahden prosessin v\u00e4list\u00e4 eroa niiden toimintatavan osalta. H\u00e4mmennys katoaa, kun tied\u00e4t t\u00e4m\u00e4n eron.<\/p>\n<p>Voit ty\u00f6skennell\u00e4 RESTill\u00e4 mink\u00e4 tahansa resurssin parissa, olipa kyseess\u00e4 mediatiedosto, asiakirja, verkkosivusto jne. REST-ty\u00f6skentelylle ei ole rajoituksia. voit k\u00e4ytt\u00e4\u00e4 HTML:\u00e4\u00e4 vain viestint\u00e4protokollana osoittaaksesi resurssit. REST on lyhenne sanoista Representational State Transfer.<\/p>\n<p>REST osoittaa, ett\u00e4 siell\u00e4 jokainen erottuva URL edustaa jotakin objektia, johon voit p\u00e4\u00e4st\u00e4 HTTP GET:n kautta sek\u00e4 muokata ja poistaa HTTP POST:n, PUT:n tai DELETE:n kautta.<\/p>\n<h3><strong>Miten CRUD toimii?<\/strong><\/h3>\n<p>Voit k\u00e4ytt\u00e4\u00e4 CRUD:ia vain tietokantatietueisiin, etk\u00e4 voi luoda CRUD-sovellusliittymi\u00e4 kuten luot REST-sovellusliittymi\u00e4. CRUD-sovellus on rajoitettu tietokantoihin, mink\u00e4 vuoksi CRUD, toisin kuin REST, ei ole arkkitehtuurityyli, vaan sykli. Kaikki sovellukset ja verkkosivustot sis\u00e4lt\u00e4v\u00e4t erilaisia \u200b\u200bCRUD-jaksoja.<\/p>\n<p>Esimerkiksi verkkokauppasivuston vierailija voi LUODA tilin, P\u00c4IVITT\u00c4IT\u00c4 tilin, LUE tiedot ja POISTAA tilin. Se on t\u00e4ysi CRUD-sykli, joka sis\u00e4lt\u00e4\u00e4 jokaisen CRUD-toiminnon.<\/p>\n<p>Esim. samalla verkkokauppasivustolla vierailija voi LUODA tuotteen e-k\u00e4rryyn ja suorittaa sitten koko CRUD-syklin LUKEMAA, P\u00c4IVITYST\u00c4 ja jopa POISTAmalla tuotteen.<\/p>\n<h3><strong>RESTin perusta ja periaatteet<\/strong><\/h3>\n<p>Representational State Transferin peruskomennot \u2013 REST-lyhenne \u2013 py\u00f6riv\u00e4t objektin tai resurssin ymp\u00e4rill\u00e4, jota voidaan kuvata mit\u00e4 tahansa, jonka voit paljastaa HTTP-protokollan avulla. Esimerkkej\u00e4 REST-resursseista: kuva, verkkosivusto, asiakirja, palvelu. Taivas on rajana.<\/p>\n<p>REST on sovellusohjelmointirajapinta eli API tai hajautettuun multimediaan tarkoitettu arkkitehtuuri. API on verkkopalvelu, joka noudattaa REST-arkkitehtuurin periaatteita. N\u00e4in ollen REST kutsuu jokaista API:ta jollakin HTTP-pyynt\u00f6menetelmist\u00e4 GET, PUT, POST ja DELETE.<\/p>\n<h3><strong>RESTful-arkkitehtuurin kuusi p\u00e4\u00e4periaatetta<\/strong><\/h3>\n<ol>\n<li>\n<h3><strong>Asiakas-palvelin mandaatti<\/strong><\/h3>\n<\/li>\n<\/ol>\n<p>Asiakas-palvelin-mandaatti korostaa sit\u00e4 tosiasiaa, ett\u00e4 REST edustaa hajautettua menetelm\u00e4\u00e4, joka perustuu asiakas-palvelin-erottelun luonteeseen. REST-palvelu sis\u00e4lt\u00e4\u00e4 useita ominaisuuksia ja vastaa pyynt\u00f6ihin. Asiakas tekee pyynn\u00f6t ja palvelin hyv\u00e4ksyy tai hylk\u00e4\u00e4 ne.<\/p>\n<ol start=\"2\">\n<li>\n<h3><strong>Valtiottomuus<\/strong><\/h3>\n<\/li>\n<\/ol>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-205612-61e8cbbce0972.jpg\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-205612-61e8cbbce0972.jpg\" alt=\"CRUD-j\u00e4rjestelm\u00e4n luominen WordPressiss\u00e4 - wpDataTables Tables Plugin\" ><\/a><\/p>\n<p>Valtiottomuus rajoittaa kuluttajan ja palvelimen v\u00e4lill\u00e4 l\u00e4hetett\u00e4vi\u00e4 pyynt\u00f6j\u00e4. K\u00e4yt\u00e4nn\u00f6ss\u00e4 se on pyynt\u00f6, joka k\u00e4ynnist\u00e4\u00e4 asiakaspalvelun viestinn\u00e4n, jossa pyynt\u00f6 sis\u00e4lt\u00e4\u00e4 kaikki tiedot, joita palvelin tarvitsee vastatakseen.<\/p>\n<ol start=\"3\">\n<li>\n<h3><strong>V\u00e4limuisti<\/strong><\/h3>\n<\/li>\n<\/ol>\n<p>Pyynn\u00f6n v\u00e4limuistiin tallentamisen tarkoitus ei ole koskaan l\u00e4hett\u00e4\u00e4 samaa pyynt\u00f6\u00e4 kahdesti, koska v\u00e4limuisti kehottaa palvelinta merkitsem\u00e4\u00e4n vastaukset v\u00e4limuistiin tai ei. T\u00e4m\u00e4n seurauksena v\u00e4limuistiin tallentaminen v\u00e4hent\u00e4\u00e4 valtiottomuuden aiheuttamia rajoituksia.<\/p>\n<ol start=\"4\">\n<li>\n<h3><strong>Yhten\u00e4inen sopimus<\/strong><\/h3>\n<\/li>\n<\/ol>\n<p>Uniform Contract sulkee pois useiden itsen\u00e4isten liit\u00e4nt\u00f6jen k\u00e4yt\u00f6n sovellusohjelmointirajapinnassa tai API:ssa. REST noudattaa yhten\u00e4isen sopimuksen periaatteita. Siksi yksi REST-rajapinta jaetaan hypermediayhteyksien kautta.<\/p>\n<ol start=\"5\">\n<li>\n<h3><strong>Kerrostettu j\u00e4rjestelm\u00e4<\/strong><\/h3>\n<\/li>\n<\/ol>\n<p>Layered System k\u00e4ytt\u00e4\u00e4 useita itsen\u00e4isi\u00e4 kerroksia rajapinnan kehitt\u00e4miseen ja laajentamiseen. Koska kerrokset eiv\u00e4t n\u00e4e toisiaan sis\u00e4\u00e4n, voidaan lis\u00e4t\u00e4 uusia pyynt\u00f6j\u00e4 ja v\u00e4liohjelmistoja, joilla ei ole vaikutusta alkukomentoihin ja asiakas-palvelimen toimintaan.<\/p>\n<ol start=\"6\">\n<li>\n<h3><strong>Valinnainen: Code-On-Demand<\/strong><\/h3>\n<\/li>\n<\/ol>\n<p>Vaikka Client-Server, Caching, Statelessness, Uniform Contract ja Layered System ovat v\u00e4ltt\u00e4m\u00e4tt\u00f6mi\u00e4 RESTful-sovelluksille, Code-On-Demand ei ole pakollista. Code-on-Demand mahdollistaa kuitenkin asiakkaiden sis\u00e4isen logiikan pysymisen riippumattomana ja p\u00e4ivitt\u00e4misen siten erill\u00e4\u00e4n palvelinlogiikasta.<\/p>\n<h3><strong>Lopettaa ajatukset aiheesta CRUD vs REST<\/strong><\/h3>\n<p>CRUD sis\u00e4lt\u00e4\u00e4 olennaiset toiminnot, jotka suoritetaan staattisessa tiedontallennustilassa tai tietokantoissa, kuten passiivisten tietueiden tai objektien k\u00e4sittely. CRUD k\u00e4sittelee olennaisesti perustietoja.<\/p>\n<p>REST perustuu resurssien esitt\u00e4miseen yksil\u00f6llisten URL-osoitteiden kautta, miss\u00e4 resurssit ovat objektin abstraktioita, jolloin k\u00e4ytt\u00e4j\u00e4n kommentti voi olla esimerkiksi resurssi.<\/p>\n<p>Sellaisenaan REST sis\u00e4lt\u00e4\u00e4 enemm\u00e4n kuin tietueen kommenttitaulukossa. REST kertoo tietueen suhteesta k\u00e4ytt\u00e4j\u00e4resurssiin ja viestiin\/kommenttiin, johon se on liitetty. REST on eritt\u00e4in korkeatasoinen API-tyyli, joka on vuorovaikutuksessa monimutkaisen j\u00e4rjestelm\u00e4n kanssa.<\/p>\n<hr \/>\n<p>T\u00e4m\u00e4 artikkeli ei tietenk\u00e4\u00e4n ollut t\u00e4ydellinen opetusohjelma &#8211; koska sen kirjoittamiseen menisi kaksikymment\u00e4 sivua. Mutta kerro meille, jos sinulla on kysytt\u00e4v\u00e4\u00e4 tai haluat n\u00e4hd\u00e4 tietyn vaiheittaisen esimerkin, niin luomme sellaisen sinulle.<\/p>\n<p>Toivomme, ett\u00e4 siit\u00e4 oli jollain tapaa apua.<\/p>\n<p>Kiitos, ett\u00e4 luit!<\/p>\n<p>Kuvan l\u00e4hde: <a href=\"http:\/\/www.tyseo.net\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">http:\/\/www.tyseo.net<\/a><\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/wpdatatables.com\" class=\"external external_icon\">wpdatatables.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>CRUD-j\u00e4rjestelm\u00e4n luominen WordPressiss\u00e4 voi olla hankalaa. T\u00e4ss\u00e4 artikkelissa n\u00e4emme CRUD-j\u00e4rjestelm\u00e4n m\u00e4\u00e4ritelm\u00e4n ja eri tapoja tehd\u00e4 se.<\/p>\n","protected":false},"author":1,"featured_media":205613,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[813,843,864],"tags":[1166],"class_list":["post-226502","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laajennuksia","category-opetusohjelmia","category-wordpress-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/226502","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=226502"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/226502\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/205613"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=226502"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=226502"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=226502"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}