{"id":231038,"date":"2022-12-24T11:38:00","date_gmt":"2022-12-24T08:38:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231038"},"modified":"2022-12-07T10:57:22","modified_gmt":"2022-12-07T07:57:22","slug":"api-funktsionaalsuse-struktureerimine","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/api-funktsionaalsuse-struktureerimine\/","title":{"rendered":"API funktsionaalsuse struktureerimine"},"content":{"rendered":"\n<p>Mul ei ole API-de loomisel palju kogemusi. Olen teinud suure osa t\u00f6\u00f6st WordPressi integreerimisel kolmandate osapoolte API-dega, kuid olen kulutanud v\u00e4ga v\u00e4he aega s\u00fcsteemi loomisele, millel on oma API, millega teised s\u00fcsteemid saaksid suhelda.<\/p>\n<p>Mis viimasesse puutub, siis ma tegelikult tegelen sellega (ja ma \u00f5pin palju). Projekti p\u00f5hiolemus seisneb selles, et seal on iOS-i rakendus, mis suhtleb WordPressiga <a href=\"https:\/\/developer.wordpress.org\/rest-api\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">REST API<\/a> kaudu kahesuunaliselt.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160154-61e7069145e53.png\" 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-160154-61e7069145e53.png\" alt=\"API funktsionaalsuse struktureerimine\" ><\/a><\/p>\n<p>Ma tahan sellest rohkem r\u00e4\u00e4kida, kuid pean seda tegema, kui projekt on kaugemal.<\/p>\n<p>Kui aga r\u00e4\u00e4kida kolmandate osapoolte API-dega t\u00f6\u00f6tamisest ja seej\u00e4rel nendega suhtlevate WordPressi projekti komponentide loomisest, on kaks asja, mis mulle pidevalt kasulikud on:<\/p>\n<ul>\n<li><a href=\"http:\/\/docs.guzzlephp.org\/en\/stable\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kasutades korralikku raamatukogu<\/a> ,<\/li>\n<li>s\u00fcsteemi diagrammi koostamine,<\/li>\n<li>funktsioonide jagamine osadeks.<\/li>\n<\/ul>\n<p>Ja kaks viimast \u00fclaltoodud punkti on need, mida ma selles postituses k\u00e4sitlen.<\/p>\n<h2>API funktsionaalsuse struktureerimine<\/h2>\n<p>See postitus ei sisalda koodi, kuid v\u00f5ib-olla on see juhend selle kohta, kuidas saate API funktsionaalsuse struktureerimise v\u00f5i midagi sarnast oma t\u00f6\u00f6s edasi liikuda.<\/p>\n<h3>Kolmandate osapoolte raamatukogud<\/h3>\n<p>Mainin seda ainult seet\u00f5ttu, et minu arvates on kasulik uuesti kasutada proovitud ja t\u00f5elisi lahendusi, mida on erinevates projektides testitud (ja seega kasutatud).<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160154-61e706951696d.png\" 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-160154-61e706951696d.png\" alt=\"API funktsionaalsuse struktureerimine\" ><\/a><\/p>\n<p>Guzzle on minu valitud raamatukogu. Jah, WordPressil on sisseehitatud funktsioonid teiste URL-idega suhtlemiseks, kuid Guzzle&#8217;iga (eriti mis puudutab p\u00e4ringu komponente) saate teha rohkem kui WordPressiga.<\/p>\n<p>T\u00f5si, see on minu arvamus, kuid mulle meeldib sellega t\u00f6\u00f6tada. <a href=\"http:\/\/docs.guzzlephp.org\/en\/stable\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Ja dokumentatsioon on korralik<\/a>.<\/p>\n<h3>S\u00fcsteemi diagrammi koostamine<\/h3>\n<p>Kui t\u00f6\u00f6tate piisavalt kaua kolmanda osapoole API-dega integreerimisega, peate s\u00fcsteemi toimimise seadistamise protsessiga harjuma. Tavaliselt l\u00e4heb see umbes nii:<\/p>\n<ol>\n<li>luua API-klient API-ga \u00fchenduse loomiseks,<\/li>\n<li>seadistage vajalike p\u00e4ringute tegemiseks vajalikud funktsioonid,<\/li>\n<li>anal\u00fc\u00fcsi vastust,<\/li>\n<li>tagastab selle p\u00e4ringu k\u00e4ivitanud algsele objektile v\u00f5i funktsioonile.<\/li>\n<\/ol>\n<p>See on pisut \u00fclelihtsustatud (l\u00f5ppude l\u00f5puks v\u00f5ib API kliendi loomine olla \u00fclesanne omaette), kuid punktid j\u00e4\u00e4vad k\u00f5ik samaks (ja ei pruugi olla halb seeria \ud83e\udd14).<\/p>\n<p>Igatahes, ennek\u00f5ike ei tee s\u00fcsteemi diagrammi koostamine kunagi paha. Seda ma ikka teen, sest see aitab mul teatud m\u00f5ttes s\u00f5nastada, mida ma loon, ja n\u00e4ha, kas rakenduse kaudu toimuvas juhtimises on l\u00fcnki.<\/p>\n<p>Siin on p\u00f5hjus, miks, kui mitte mingit muud p\u00f5hjust, on see oluline. Tegevuse s\u00f5nastamine aitab teil m\u00f5ista, mida teete, ja paljastab sageli teie m\u00f5tlemises l\u00fcnki, mida peate iseenesestm\u00f5istetavaks.<\/p>\n<p>Seega, kui tegemist on s\u00fcsteemi loomisega, siis \u00e4rge eeldage, et olete selle k\u00f5ik v\u00e4lja m\u00f5elnud.<\/p>\n<h3>Funktsionaalsuse eraldamine<\/h3>\n<p>Kui olete seda ajaveebi m\u00f5nda aega lugenud, siis teate, et ma f\u00e4nnan k\u00f5iki &quot;murede eraldamise&quot; arendusideid.<\/p>\n<p>See kehtib mitmel p\u00f5hjusel, millest v\u00e4him ei ole:<\/p>\n<ul>\n<li>v\u00f5imalus API klienti eraldi katsetada,<\/li>\n<li>esi- ja tagaosaga suhtlemise koodi s\u00f5ltumatuna hoidmine.<\/li>\n<\/ul>\n<p>Kui teil on klass, mis on p\u00fchendatud v\u00e4\u00e4rtuste \u00e4riloogika k\u00e4itamisele, saate suure osa veak\u00e4sitlusest laadida vahepealsesse klassi.<\/p>\n<p>See t\u00e4hendab, et suurema osa \u00e4riloogika eest vastutaval tuumikklassil peaks olema t\u00e4pselt see, mida ta oma t\u00f6\u00f6ks vajab. See ei t\u00e4henda, et vigade kontrollimine ei peaks olema paigas (nulliga jagamine v\u00f5i midagi muud, kas tead?), kuid see t\u00e4hendab, et andmeid saab kontrollida enne, kui need vaheklassi kaudu tuumklassi j\u00f5uavad.<\/p>\n<p>Ja see mitte ainult ei saa kontrollida puuduvat teavet, vaid saab ka nendest vigadest esiotsa tagasi teatada.<\/p>\n<h2>Kolm punkti, mida meeles pidada<\/h2>\n<p>Kui loote WordPressis Ajaxile tugineva s\u00fcsteemi, on sellel k\u00f5igel kolm m\u00f5tet:<\/p>\n<ol>\n<li>joonistage loodava s\u00fcsteemi skeem,<\/li>\n<li>looge vaheklass puuduva teabe k\u00e4sitlemiseks ja teatage vigadest,<\/li>\n<li>Saatke kogu teave p\u00f5hi\u00e4riklassile alles p\u00e4rast kogu teabe kontrollimist.<\/li>\n<\/ol>\n<p>Kui olete seda teinud, oleks eesm\u00e4rk, et p\u00f5hi\u00e4riklass tagastaks n\u00f5utud v\u00e4\u00e4rtused vigadeta, kuna need tabatakse enne selleni j\u00f5udmist.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Juhend selle kohta, kuidas saate API funktsionaalsuse struktureerimisega v\u00f5i midagi sarnast oma t\u00f6\u00f6s edasi liikuda.<\/p>\n","protected":false},"author":1,"featured_media":224405,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,894,842,863],"tags":[1165],"class_list":["post-231038","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-kood","category-opetused","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/231038","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/comments?post=231038"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/231038\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/224405"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=231038"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=231038"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=231038"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}