{"id":231595,"date":"2022-12-24T11:28:00","date_gmt":"2022-12-24T08:28:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231595"},"modified":"2022-12-07T10:57:23","modified_gmt":"2022-12-07T07:57:23","slug":"rakennusliittymaen-toiminnallisuus","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/rakennusliittymaen-toiminnallisuus\/","title":{"rendered":"Rakennusliittym\u00e4n toiminnallisuus"},"content":{"rendered":"\n<p>Minulla ei ole paljon kokemusta API:iden luomisesta. Olen tehnyt melkoisen osan ty\u00f6st\u00e4 WordPressin integroinnissa kolmansien osapuolien sovellusliittymiin, mutta olen k\u00e4ytt\u00e4nyt hyvin v\u00e4h\u00e4n aikaa sellaisen j\u00e4rjestelm\u00e4n luomiseen, jossa on API, jonka kanssa muut j\u00e4rjestelm\u00e4t voivat olla vuorovaikutuksessa.<\/p>\n<p>Mit\u00e4 tulee j\u00e4lkimm\u00e4iseen, olen itse asiassa tekem\u00e4ss\u00e4 sit\u00e4 (ja opin paljon). Projektin ydin on iOS-sovellus, joka on vuorovaikutuksessa WordPressin <a href=\"https:\/\/developer.wordpress.org\/rest-api\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kanssa REST API<\/a> :n kautta kaksisuuntaisella tavalla.<\/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=\"Rakennusliittym\u00e4n toiminnallisuus\" ><\/a><\/p>\n<p>Haluan kertoa siit\u00e4 lis\u00e4\u00e4, mutta minun on teht\u00e4v\u00e4 se, kun projekti etenee.<\/p>\n<p>Mutta kun tulee ty\u00f6skennell\u00e4 kolmannen osapuolen sovellusliittymien kanssa ja sitten rakentaa WordPress-projektin komponentteja, jotka ovat vuorovaikutuksessa niiden kanssa, kaksi niist\u00e4 asioista, joita pid\u00e4n jatkuvasti hy\u00f6dyllisin\u00e4, ovat:<\/p>\n<ul>\n<li><a href=\"http:\/\/docs.guzzlephp.org\/en\/stable\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">k\u00e4ytt\u00e4m\u00e4ll\u00e4 oikeaa kirjastoa<\/a> ,<\/li>\n<li>j\u00e4rjestelm\u00e4n kaaviokuvaus,<\/li>\n<li>jakaa toiminnot osiin.<\/li>\n<\/ul>\n<p>Ja kaksi viimeist\u00e4 yll\u00e4 olevaa kohtaa ovat mit\u00e4 yrit\u00e4n kattaa t\u00e4ss\u00e4 viestiss\u00e4.<\/p>\n<h2>Rakennusliittym\u00e4n toiminnallisuus<\/h2>\n<p>T\u00e4h\u00e4n viestiin ei sis\u00e4lly koodia, mutta ehk\u00e4 se on opas kuinka voit edet\u00e4 ty\u00f6ss\u00e4si API-toimintojen j\u00e4sent\u00e4misen tai vastaavan tekemisen kanssa.<\/p>\n<h3>Kolmannen osapuolen kirjastot<\/h3>\n<p>Mainitsen t\u00e4m\u00e4n vain siksi, ett\u00e4 mielest\u00e4ni on arvokasta k\u00e4ytt\u00e4\u00e4 uudelleen kokeiltuja ja oikeita ratkaisuja, joita on testattu (ja siten k\u00e4ytetty) kautta linjan erilaisissa projekteissa.<\/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=\"Rakennusliittym\u00e4n toiminnallisuus\" ><\/a><\/p>\n<p>Guzzle on suosikkikirjastoni. Kyll\u00e4, WordPressiss\u00e4 on sis\u00e4\u00e4nrakennettuja toimintoja viestimiseen muiden URL-osoitteiden kanssa, mutta voit tehd\u00e4 enemm\u00e4n Guzzlella (etenkin mit\u00e4 tulee pyynn\u00f6n osiin) kuin WordPressill\u00e4.<\/p>\n<p>My\u00f6nnet\u00e4\u00e4n, t\u00e4m\u00e4 on minun mielipiteeni, mutta nautin sen kanssa ty\u00f6skentelyst\u00e4. <a href=\"http:\/\/docs.guzzlephp.org\/en\/stable\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Ja dokumentaatio on vankka<\/a>.<\/p>\n<h3>J\u00e4rjestelm\u00e4n kaavio<\/h3>\n<p>Kun ty\u00f6skentelet integroinnin kanssa kolmannen osapuolen sovellusliittymien kanssa riitt\u00e4v\u00e4n pitk\u00e4\u00e4n, sinun on totuttava j\u00e4rjestelm\u00e4n toiminnan m\u00e4\u00e4ritt\u00e4misprosessiin. Yleens\u00e4 se menee jotenkin n\u00e4in:<\/p>\n<ol>\n<li>luo API-asiakassovellusliittym\u00e4\u00e4n yhdist\u00e4mist\u00e4 varten,<\/li>\n<li>m\u00e4\u00e4rit\u00e4 tarvittavat toiminnot tarvitsemiesi pyynt\u00f6jen tekemiseen,<\/li>\n<li>j\u00e4sent\u00e4\u00e4 vastaus,<\/li>\n<li>palauttaa sen alkuper\u00e4iseen objektiin tai funktioon, joka kutsui pyynn\u00f6n.<\/li>\n<\/ol>\n<p>T\u00e4m\u00e4 on hieman liiallista yksinkertaistamista (API-asiakkaan luominen voi loppujen lopuksi olla teht\u00e4v\u00e4 sin\u00e4ns\u00e4), mutta pisteet pysyv\u00e4t kaikki samoina (eik\u00e4 v\u00e4ltt\u00e4m\u00e4tt\u00e4 tee huonoa sarjaa \ud83e\udd14).<\/p>\n<p>Joka tapauksessa ennen kaikkea j\u00e4rjestelm\u00e4n kaavioista ei ole koskaan haittaa. Teen t\u00e4t\u00e4 edelleen, koska se auttaa minua tietyss\u00e4 mieless\u00e4 artikuloimaan, mit\u00e4 olen rakentamassa, ja katsomaan, onko sovelluksen l\u00e4pi kulkevassa hallinnassa aukkoja.<\/p>\n<p>T\u00e4st\u00e4 syyst\u00e4, ellei muusta syyst\u00e4, t\u00e4m\u00e4 on t\u00e4rke\u00e4\u00e4: Asioiden artikulointi auttaa sinua ymm\u00e4rt\u00e4m\u00e4\u00e4n, mit\u00e4 olet tekem\u00e4ss\u00e4, ja paljastaa usein ajattelussasi aukkoja, joita pid\u00e4t itsest\u00e4\u00e4nselvyyten\u00e4.<\/p>\n<p>Joten kun on kyse j\u00e4rjestelm\u00e4n laatimisesta, \u00e4l\u00e4 oleta, ett\u00e4 olet selvitt\u00e4nyt kaiken.<\/p>\n<h3>Toiminnan erottaminen<\/h3>\n<p>Jos olet lukenut t\u00e4t\u00e4 blogia pidemm\u00e4n aikaa, tied\u00e4t, ett\u00e4 seuraan koko &quot;huolenaiheiden erottelu&quot; -kehitysideoita.<\/p>\n<p>T\u00e4m\u00e4 on totta useista syist\u00e4, joista v\u00e4hiten eiv\u00e4t ole:<\/p>\n<ul>\n<li>kyky testata API-asiakasta erill\u00e4\u00e4n,<\/li>\n<li>pit\u00e4\u00e4 koodin kommunikointia varten k\u00e4ytt\u00f6liittym\u00e4n ja taustan kanssa itsen\u00e4isen\u00e4.<\/li>\n<\/ul>\n<p>Kun sinulla on luokka, joka on omistettu liikelogiikan ajamiseen arvojen p\u00e4\u00e4ll\u00e4, voit siirt\u00e4\u00e4 suuren osan virheiden k\u00e4sittelyst\u00e4 v\u00e4liluokkaan.<\/p>\n<p>T\u00e4m\u00e4 tarkoittaa, ett\u00e4 suurimmasta osasta liiketoimintalogiikasta vastaavalla ydinluokalla tulisi olla juuri se, mit\u00e4 se tarvitsee ty\u00f6ns\u00e4 suorittamiseen. T\u00e4m\u00e4 ei tarkoita sit\u00e4, etteik\u00f6 virheentarkistusta ei pit\u00e4isi tehd\u00e4 (jako nollalla tai jotain, tied\u00e4tk\u00f6?), mutta se tarkoittaa, ett\u00e4 tiedot voidaan tarkistaa ennen kuin se edes p\u00e4\u00e4see ydinluokkaan v\u00e4liluokan kautta.<\/p>\n<p>Se ei vain voi tarkistaa puuttuvien tietojen varalta, vaan se voi my\u00f6s ilmoittaa n\u00e4m\u00e4 virheet takaisin k\u00e4ytt\u00f6liittym\u00e4lle.<\/p>\n<h2>Kolme muistettavaa seikkaa<\/h2>\n<p>Jos olet luomassa Ajax-pohjaista j\u00e4rjestelm\u00e4\u00e4 WordPressiss\u00e4, kaikella on kolme pointtia:<\/p>\n<ol>\n<li>kaavio luomastasi j\u00e4rjestelm\u00e4st\u00e4,<\/li>\n<li>luoda v\u00e4liluokka puuttuvien tietojen k\u00e4sittelemiseksi ja raportoida virheist\u00e4,<\/li>\n<li>L\u00e4het\u00e4 t\u00e4ydelliset tiedot ydinliiketoimintaluokkaan vasta, kun kaikki tiedot on varmistettu.<\/li>\n<\/ol>\n<p>Kun olet tehnyt sen, tavoitteena olisi saada ydinliiketoimintaluokka palauttamaan pyydetyt arvot ilman virhett\u00e4, koska ne on saatu kiinni ennen kuin ne ovat saavuttaneet sen.<\/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>Opas kuinka voit edet\u00e4 ty\u00f6ss\u00e4si strukturoimalla API-toiminnallisuutta tai tekem\u00e4ll\u00e4 jotain vastaavaa omassasi.<\/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":[719,895,843,864],"tags":[1166],"class_list":["post-231595","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kehittaejae","category-koodi","category-opetusohjelmia","category-wordpress-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/231595","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=231595"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/231595\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/224405"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=231595"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=231595"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=231595"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}