{"id":231213,"date":"2022-12-28T19:02:00","date_gmt":"2022-12-28T16:02:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231213"},"modified":"2022-12-28T19:05:52","modified_gmt":"2022-12-28T16:05:52","slug":"erinevus-curl-i-ja-wordpressi-taotlustes","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/erinevus-curl-i-ja-wordpressi-taotlustes\/","title":{"rendered":"Erinevus cURL-i ja WordPressi taotlustes"},"content":{"rendered":"\n<p><a href=\"https:\/\/curl.haxx.se\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">cURL<\/a> on v\u00e4ga populaarne PHP teek, millele olen viidanud mitmetes postitustes (n\u00e4iteks <a href=\"https:\/\/wordpress.mediadoma.com\/et\/curl-i-kasutamine-et-teha-kindlaks-kas-maeaeratud-url-on-kehtiv-leht\/\" title=\"1\">1<\/a> ja <a href=\"https:\/\/wordpress.mediadoma.com\/et\/uembersuunamise-sihtkoha-leidmine-php-ga\/\" title=\"2\">2<\/a> ). Ja see on \u00fcks, mida minu arvates peaksid k\u00f5ik PHP-s t\u00f6\u00f6tavad inimesed (jah, isegi WordPressis t\u00f6\u00f6tavad) \u00fcle vaatama, uurima ja v\u00f5ib-olla kasutama.<\/p>\n<p>Kuid WordPressi algse API-de t\u00f5ttu on meil abstraktsioonitase, mis v\u00f5imaldab meil saavutada suures osas samu funktsioone (kui mitte sama funktsiooni).<\/p>\n<p>T\u00e4psemalt, ma r\u00e4\u00e4gin <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_safe_remote_get\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_safe_remote_get<\/a>.<\/p>\n<blockquote><p>\n<a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-159653-61e6f9c04b30e.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-159653-61e6f9c04b30e.png\" alt=\"Erinevus cURL-i ja WordPressi taotlustes\"><\/a><\/p>\n<p>See funktsioon on ideaalne, kui HTTP-p\u00e4ring tehakse suvalisele URL-ile. URL on kinnitatud, et v\u00e4ltida \u00fcmbersuunamist ja taotleda v\u00f5ltsimisr\u00fcnnakuid.<\/p>\n<\/blockquote>\n<p>Mainin konkreetselt <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_remote_get\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">selle funktsiooni<\/a> ohutut varianti \u00fclaltoodud definitsiooni jaoks (on veel \u00fcks variant, kuid turvalisuse huvides on oluline v\u00f5tta ettevaatusabin\u00f5usid suvaliste URL-ide vastu).<\/p>\n<h2>cURL-i ja WordPressi taotlused<\/h2>\n<p>Igatahes, milline v\u00f5iks <a href=\"https:\/\/gist.github.com\/tommcfarlin\/8762acc585d6b4987b23a1304615bd4d#file-00-get-curl-response-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">funktsioon<\/a> v\u00e4lja n\u00e4ha, kui kasutaksime seda cURL-i teeki?<\/p>\n<pre><code>&lt;?php\n\ntry {\n    $curl = curl_init();\n    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');\n    curl_setopt($curl, CURLOPT_URL, $url);\n    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);\n    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);\n    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);\n    $response = curl_exec($curl);\n\n    if (is_object($response)) {\n        return false;\n    }\n\n    if (false === $response) {\n        throw new Exception(curl_error($curl), curl_errno($curl));\n    }\n\n    curl_close($curl);\n} catch (Exception $e) {\n    trigger_error(\n        sprintf(\n            'Curl failed with error #%d: %s',\n            $e-&gt;getCode(),\n            $e-&gt;getMessage()\n        ),\n        E_USER_ERROR\n    );\n}<\/code><\/pre>\n<p>L\u00fchidalt (ja see on t\u00fc\u00fcpiline enamiku cURL-i p\u00e4ringute jaoks):<\/p>\n<ul>\n<li>l\u00e4htestage cURL-i teek,<\/li>\n<li><a href=\"https:\/\/curl.haxx.se\/docs\/manpage.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">m\u00e4\u00e4rake oma p\u00e4ringule vastavad valikud<\/a> (mis s\u00f5ltuvad nimetatud p\u00e4ringust),<\/li>\n<li>esitada taotlus,<\/li>\n<li>hinnata vastust<\/li>\n<li>tabada k\u00f5ik vajalikud erandid.<\/li>\n<\/ul>\n<p>Ja kui me kasutaksime WordPressis <a href=\"https:\/\/gist.github.com\/tommcfarlin\/8762acc585d6b4987b23a1304615bd4d#file-01-safe-remote-get-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">sama koodi variatsiooni ?<\/a><\/p>\n<pre><code>&lt;?php\n\n$response = wp_safe_remote_get($url);\nif (is_wp_error($response)) {\n    return '';\n}\n$response = $response['body'];<\/code><\/pre>\n<p>See on palju v\u00e4iksem ja vaieldamatult h\u00f5lpsamini loetav (v\u00e4hemalt neile, kes t\u00f6\u00f6tavad WordPressis). Argumentide osas ei anna ma ka funktsioonile midagi peale URL-i.<\/p>\n<p>Kui loete lingitud API dokumentatsiooni, n\u00e4ete, et meil on selle \u00fcle teatud kontroll; see aga varieerub s\u00f5ltuvalt sellest, kuidas peate antud l\u00f5pp-punktiga suhtlema.<\/p>\n<p>Lisaks on teie otsustada, kuidas <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_error\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WP_Errori<\/a> k\u00e4sitlete. T\u00fchja stringi tagastamine on harva parim valik; selle n\u00e4ite jaoks on see aga piisav. Juhtum, mida me peamiselt otsime, on vastuse p\u00f5hiosa ja see on koodi keskmes.<\/p>\n<h2>Millal me kasutame \u00fcht v\u00f5i teist?<\/h2>\n<p>CURL-i ja WordPressi kaugp\u00e4ringutega t\u00f6\u00f6tamisel ning kasutatava meetodi m\u00e4\u00e4ramisel j\u00e4rgin tavaliselt j\u00e4rgmist reeglit:<\/p>\n<ul>\n<li>Kui seda, mida ma vajan, on v\u00f5imalik saavutada WordPressi API funktsiooniga, kasutan seda.<\/li>\n<li>Kui ei, siis kasutan cURL-i.<\/li>\n<\/ul>\n<p>Ma ei oska kindlamat reeglit pakkuda.<\/p>\n<p>Selle asemel vaadake l\u00f5pp-punkti, millega suhtlete, tehke kindlaks, millisel tasemel kontrolli p\u00e4ringu \u00fcle vajate, ja tehke otsus, kuidas soovite vastust k\u00e4sitleda.<\/p>\n<p>Sealt edasi peaks teil olema hea idee, millist raamatukogu kasutada.<\/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>cURL-i ja WordPressi kaugp\u00e4ringud v\u00f5imaldavad meil paljuski samu funktsioone. Kuid me peame suutma otsustada, milline variant on parim.<\/p>\n","protected":false},"author":1,"featured_media":237087,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,894,842,802],"tags":[1165],"class_list":["post-231213","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-kood","category-opetused","category-php-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/231213","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=231213"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/231213\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/237087"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=231213"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=231213"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=231213"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}