{"id":91819,"date":"2022-10-12T06:16:42","date_gmt":"2022-10-12T11:16:42","guid":{"rendered":"https:\/\/blogging-techies.com\/sw\/hur-man-implementerar-formularvalidering-pa-klientsidan-med-javascript\/"},"modified":"2022-10-12T06:16:42","modified_gmt":"2022-10-12T11:16:42","slug":"hur-man-implementerar-formularvalidering-pa-klientsidan-med-javascript","status":"publish","type":"post","link":"https:\/\/blogging-techies.com\/sw\/hur-man-implementerar-formularvalidering-pa-klientsidan-med-javascript\/","title":{"rendered":"Hur man implementerar formul\u00e4rvalidering p\u00e5 klientsidan med JavaScript"},"content":{"rendered":"<div>\n<p>JavaScript \u00e4r ett av de mest popul\u00e4ra och m\u00e5ngsidiga programmeringsspr\u00e5ken som du kan komma ig\u00e5ng med idag.  Detta programmeringsspr\u00e5k s\u00e4gs med r\u00e4tta vara webbens spr\u00e5k och \u00e4r viktigt f\u00f6r att l\u00e4gga till interaktivitet p\u00e5 dina webbplatser.<\/p>\n<p>Formelementet \u00e4r ett av de mest anv\u00e4nda HTML-elementen p\u00e5 webbplatser.  Dessa formul\u00e4r tar input fr\u00e5n anv\u00e4ndaren och bearbetar det i webbl\u00e4saren eller servern.  Det \u00e4r dock viktigt att validera dessa indata f\u00f6r att hantera s\u00e4kerhetsproblem och o\u00f6nskade buggar.<\/p>\n<h2 id=\"understanding-dom-manipulation\"><span class=\"ez-toc-section\" id=\"Forsta_DOM-manipulation\"><\/span>  F\u00f6rst\u00e5 DOM-manipulation<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Innan vi forts\u00e4tter att implementera formul\u00e4rvalidering p\u00e5 klientsidan med JavaScript \u00e4r det viktigt att f\u00f6rst\u00e5 dokumentobjektmodellen, allm\u00e4nt k\u00e4nd som \u201cDOM\u201d.  DOM \u00e4r ett standardiserat API som till\u00e5ter JavaScript att interagera med element p\u00e5 en HTML-webbsida.<\/p>\n<p>F\u00f6r att l\u00e4gga till h\u00e4ndelseavlyssnare och h\u00e4mta anv\u00e4ndarindata m\u00e5ste du f\u00f6rst\u00e5 grunderna f\u00f6r DOM-manipulation.  H\u00e4r \u00e4r ett exempel som f\u00f6rklarar hur du kan \u00e4ndra webbsidans inneh\u00e5ll med hj\u00e4lp av DOM API och JavaScript:<\/p>\n<pre>&lt;!DOCTYPE html&gt;<br\/>&lt;html lang=\"en\"&gt;<br\/>&lt;head&gt;<br\/>&lt;meta charset=\"UTF-8\" \/&gt;<br\/>&lt;meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" \/&gt;<br\/>&lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/&gt;<br\/>&lt;title&gt;Document&lt;\/title&gt;<br\/>&lt;\/head&gt;<br\/>&lt;body&gt;<br\/>&lt;p id=\"paragraph\"&gt;&lt;\/p&gt;<br\/>&lt;\/body&gt;<br\/>&lt;script&gt;<br\/>const paragraph = document.getElementById('parapgraph');<br\/>paragraph.innerText=\"This is a paragraph tag\";<br\/>&lt;\/script&gt;<br\/>&lt;\/html&gt;<\/pre>\n<p>I ovanst\u00e5ende kod, <strong\/><\/p>\n<p> taggen har ett id f\u00f6r <strong>paragraf<\/strong>.  N\u00e4r du skriver JavaScript-koden kan du komma \u00e5t detta element genom att anropa <strong>document.getElementById(\u2018paragraph\u2019)<\/strong> metod och manipulera dess v\u00e4rde.<\/p>\n<p>Nu n\u00e4r du har f\u00f6rst\u00e5tt grunderna i DOM-manipulation, l\u00e5t oss g\u00e5 vidare och implementera formul\u00e4rvalidering.<\/p>\n<h2 id=\"form-validation-with-javascript\"><span class=\"ez-toc-section\" id=\"Formularvalidering_med_JavaScript\"><\/span>  Formul\u00e4rvalidering med JavaScript<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Det finns olika typer av input som du kan ta fr\u00e5n en anv\u00e4ndare.  Texttyp, e-posttyp, l\u00f6senordstyp, alternativknappar och kryssrutor \u00e4r n\u00e5gra av de vanligaste som du kan st\u00f6ta p\u00e5.  P\u00e5 grund av dessa stora flertalet indatatyper kommer du att beh\u00f6va anv\u00e4nda olika logik f\u00f6r att validera var och en av dem.<\/p>\n<p>Innan vi g\u00e5r in i validering, l\u00e5t oss ta en stund f\u00f6r att f\u00f6rst\u00e5 HTML-formul\u00e4r och deras betydelse.  HTML-formul\u00e4r \u00e4r ett av de prim\u00e4ra s\u00e4tten du interagerar med webbplatsen eftersom de l\u00e5ter dig ange dina data, till\u00e4mpa \u00e4ndringar, anropa popup-f\u00f6nster, skicka information till en server och mer.<\/p>\n<p>HTML <strong\/><\/p>\n<form> element anv\u00e4nds f\u00f6r att skapa dessa anv\u00e4ndarv\u00e4nda formul\u00e4r.  S\u00e5 h\u00e4r kan du validera inmatningarna i ett HTML-formul\u00e4r:<\/p>\n<h3 id=\"email-validation\"><span class=\"ez-toc-section\" id=\"1_E-postvalidering\"><\/span>1. E-postvalidering<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Oavsett om du bygger ett autentiseringssystem eller bara samlar in anv\u00e4ndarnas e-postmeddelanden till ditt nyhetsbrev, \u00e4r det viktigt att validera e-postmeddelandet innan du kan lagra det i din databas eller bearbeta det.  F\u00f6r att kontrollera om ett e-postmeddelande uppfyller alla villkor som kr\u00e4vs kan du anv\u00e4nda ett regulj\u00e4rt uttryck.<\/p>\n<p><strong>HTML:<\/strong><\/p>\n<pre>&lt;input type=\"email\" placeholder=\"<a rel=\"nofollow noopener\" href=\"https:\/\/ipotek.net\/cdn-cgi\/l\/email-protection\" class=\"__cf_email__\" data-cfemail=\"5e3b333f37321e3b263f332e323b703731\" target=\"_blank\">[email\u00a0protected]<\/a>\" id=\"email\" required \/&gt;<\/pre>\n<p><strong>JavaScript:<\/strong><\/p>\n<pre>const emailInput = document.getElementById('email');<br\/>const emailRegex = \/^[a-zA-Z0-9.!#$%&amp;'*+\/=?^_`{|}~-]<a rel=\"nofollow noopener\" href=\"https:\/\/ipotek.net\/cdn-cgi\/l\/email-protection\" class=\"__cf_email__\" data-cfemail=\"dbf09b\" target=\"_blank\">[email\u00a0protected]<\/a>[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)*$\/;<br\/>if (!emailInput.value.match(emailRegex)) {<br\/>alert('Invalid email address.');<br\/>}<\/pre>\n<h3 id=\"password-validation\"><span class=\"ez-toc-section\" id=\"2_Losenordsvalidering\"><\/span>2. L\u00f6senordsvalidering<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>L\u00f6senord \u00e4r en viktig del av data som beh\u00f6ver en speciell typ av validering f\u00f6r att s\u00e4kerst\u00e4lla dess s\u00e4kerhet.  \u00d6verv\u00e4g att ett registreringsformul\u00e4r har tv\u00e5 f\u00e4lt: l\u00f6senord och bekr\u00e4fta l\u00f6senord.  F\u00f6r att validera dessa indatapar, h\u00e4r \u00e4r n\u00e5gra saker du m\u00e5ste t\u00e4nka p\u00e5:<\/p>\n<p>  L\u00f6senordet m\u00e5ste vara mer \u00e4n 6 tecken l\u00e5ngt.  V\u00e4rdet p\u00e5 l\u00f6senordet och f\u00e4ltet f\u00f6r bekr\u00e4ftelse av l\u00f6senord m\u00e5ste vara samma.  <\/p>\n<p><strong>HTML:<\/strong><\/p>\n<pre>&lt;input type=\"password\" placeholder=\"Enter your password\" id=\"password\" required \/&gt;<br\/>&lt;input type=\"password\" placeholder=\"Enter your password\" id=\"confirm-password\" required \/&gt;<\/pre>\n<p><strong>JavaScript:<\/strong><\/p>\n<pre>const password = document.getElementById('password').value;<br\/>const confirmPassword = document.getElementById('confirm-password').value;<br\/>if (password.value !== confirmPassword.value) {<br\/>alert('Entered passwords do not match');<br\/>}<br\/>if (password.length &lt; 6) {<br\/>alert('Password must be more than 6 characters long')<br\/>}<\/pre>\n<h3 id=\"radio-input-validation\"><span class=\"ez-toc-section\" id=\"3_Radioingangsvalidering\"><\/span>3. Radioing\u00e5ngsvalidering<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>HTML-radioing\u00e5ng \u00e4r en speciell typ av grafiskt kontrollelement som l\u00e5ter anv\u00e4ndaren v\u00e4lja endast ett av en f\u00f6rdefinierad upps\u00e4ttning alternativ som utesluter varandra.  Ett vanligt anv\u00e4ndningsfall f\u00f6r en s\u00e5dan ing\u00e5ng skulle vara att v\u00e4lja k\u00f6n.  F\u00f6r att validera s\u00e5dan inmatning m\u00e5ste du kontrollera om minst en av dem \u00e4r vald.<\/p>\n<p>Detta kan uppn\u00e5s med hj\u00e4lp av logiska operatorer som AND (<strong>&amp;&amp;<\/strong>) och inte (<strong>!<\/strong>) operat\u00f6r p\u00e5 detta s\u00e4tt:<\/p>\n<p><strong>HTML:<\/strong><\/p>\n<pre>&lt;label for=\"male\"&gt;Male&lt;\/label&gt;<br\/>&lt;input type=\"radio\" id=\"male\" name=\"gender\" value=\"male\" \/&gt;<br\/>&lt;label for=\"female\"&gt;Female&lt;\/label&gt;<br\/>&lt;input type=\"radio\" id=\"female\" name=\"gender\" value=\"female\" \/&gt;<br\/>&lt;label for=\"others\"&gt;Others&lt;\/label&gt;<br\/>&lt;input type=\"radio\" id=\"others\" name=\"gender\" value=\"others\" \/&gt;<\/pre>\n<p><strong>JavaScript:<\/strong><\/p>\n<pre>const genders = document.getElementsByName(\"gender\");<br\/>const validForm = false;<br\/>let i = 0;<br\/>while (!validForm &amp;&amp; i &lt; radios.length) {<br\/>if (radios[i].checked) validForm = true;<br\/>i++; <br\/>}<br\/>if (!validForm) alert(\"Must check some option!\");<\/pre>\n<h3 id=\"select-input-validation\"><span class=\"ez-toc-section\" id=\"4_Valj_Indatavalidering\"><\/span>4. V\u00e4lj Indatavalidering<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>De <strong><v\/><\/strong> HTML-element anv\u00e4nds f\u00f6r att skapa en rullgardinslista.  De <strong><alternativ> <\/alternativ><\/strong>taggar inuti <strong><v\/><\/strong> element definiera de tillg\u00e4ngliga alternativen i rullgardinsmenyn.  Var och en av de h\u00e4r <strong><alternativ> <\/alternativ><\/strong>taggar har ett v\u00e4rdeattribut kopplat till dem.<\/p>\n<p>F\u00f6r standardalternativet eller initialalternativet kan du st\u00e4lla in dess v\u00e4rde till en tom str\u00e4ng s\u00e5 att det kommer att betraktas som ett ogiltigt alternativ.  F\u00f6r alla andra alternativ, st\u00e4ll in ett l\u00e4mpligt v\u00e4rdeattribut.  H\u00e4r \u00e4r ett exempel p\u00e5 hur du kan validera en <strong><v> <\/v><\/strong>ing\u00e5ngselement:<\/p>\n<p><strong>HTML:<\/strong><\/p>\n<pre>&lt;select id=\"title\" required&gt;<br\/>&lt;option value=\"\"&gt;Select One&lt;\/option&gt;<br\/>&lt;option value=\"Mr\"&gt;Mr&lt;\/option&gt;<br\/>&lt;option value=\"Mrs\"&gt;Mrs&lt;\/option&gt;<br\/>&lt;option value=\"Ms\"&gt;Ms&lt;\/option&gt;<br\/>&lt;\/select&gt;<\/pre>\n<p><strong>JavaScript:<\/strong><\/p>\n<pre>const title = document.getElementById('title');<br\/>if (title.value = \"\") {<br\/>alert('Please select a title');<br\/>}<\/pre>\n<h3 id=\"checkbox-validation\"><span class=\"ez-toc-section\" id=\"5_Kryssruta_Validering\"><\/span>5. Kryssruta Validering<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Inmatningselement av typen kryssruta \u00e5terges som standard som rutor som markeras eller markeras n\u00e4r de aktiveras.  En kryssruta l\u00e5ter dig v\u00e4lja enskilda v\u00e4rden f\u00f6r inl\u00e4mning i ett formul\u00e4r.  Kryssrutor \u00e4r ett popul\u00e4rt val f\u00f6r \u201cacceptera villkoren\u201d.<\/p>\n<p>F\u00f6r att ta reda p\u00e5 om en kryssruta \u00e4r markerad eller inte, kan du komma \u00e5t det markerade attributet p\u00e5 kryssrutans ing\u00e5ng.  H\u00e4r \u00e4r ett exempel:<\/p>\n<p><strong>HTML:<\/strong><\/p>\n<pre>&lt;input type=\"checkbox\" id=\"terms\"&gt;<br\/>&lt;label for=\"terms\"&gt;I agree to the terms and conditions&lt;\/label&gt;<\/pre>\n<p><strong>JavaScript:<\/strong><\/p>\n<pre>const terms = document.getElementById('terms');<br\/>if (!terms.checked) {<br\/>alert('Please agree to the terms and conditions to proceed further.');<br\/>}<br\/><\/pre>\n<h2 id=\"prevention-is-better-than-cure\"><span class=\"ez-toc-section\" id=\"Att_forebygga_ar_battre_an_att_bota\"><\/span>  Att f\u00f6rebygga \u00e4r b\u00e4ttre \u00e4n att bota<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Det rekommenderas alltid att validera alla indata som du f\u00e5r fr\u00e5n en bes\u00f6kare f\u00f6r att ge en s\u00e4ker och s\u00e4ker upplevelse.  Hackare f\u00f6rs\u00f6ker alltid l\u00e4gga in skadlig data i inmatningsf\u00e4lten f\u00f6r att utf\u00f6ra cross-site scripting attacker och SQL-injektioner.<\/p>\n<p>Nu n\u00e4r du f\u00f6rst\u00e5r hur du validerar dina HTML-indata, varf\u00f6r inte prova det genom att skapa ett formul\u00e4r och implementera strategierna du har sett ovan?<\/p>\n<p>    <strong class=\"section-sub-title\">Om f\u00f6rfattaren<\/strong><\/p>\n<p>            <strong class=\"bio-title\">Nitin Ranganath (39 artiklar publicerade)<br \/><\/strong><\/p>\n<p>Nitin \u00e4r en ivrig mjukvaruutvecklare och en datoringenj\u00f6rsstudent som utvecklar webbapplikationer med JavaScript-teknik.  Han arbetar som frilansande webbutvecklare och gillar att skriva f\u00f6r Linux och programmering i sin free tid. <\/p>\n<p>                            Mer fr\u00e5n Nitin Ranganath<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Prenumerera_pa_vart_nyhetsbrev\"><\/span>Prenumerera p\u00e5 v\u00e5rt nyhetsbrev<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>G\u00e5 med i v\u00e5rt nyhetsbrev f\u00f6r tekniska tips, recensioner, free e-b\u00f6cker och exklusiva erbjudanden!<\/p>\n<p>Klicka h\u00e4r f\u00f6r att prenumerera<\/p>\n<\/p><\/form>\n<\/div>\n  <div id=\"ez-toc-container\" class=\"ez-toc-v2_0_88 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/blogging-techies.com\/sw\/hur-man-implementerar-formularvalidering-pa-klientsidan-med-javascript\/#Forsta_DOM-manipulation\" >F\u00f6rst\u00e5 DOM-manipulation<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blogging-techies.com\/sw\/hur-man-implementerar-formularvalidering-pa-klientsidan-med-javascript\/#Formularvalidering_med_JavaScript\" >Formul\u00e4rvalidering med JavaScript<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/blogging-techies.com\/sw\/hur-man-implementerar-formularvalidering-pa-klientsidan-med-javascript\/#1_E-postvalidering\" >1. E-postvalidering<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blogging-techies.com\/sw\/hur-man-implementerar-formularvalidering-pa-klientsidan-med-javascript\/#2_Losenordsvalidering\" >2. L\u00f6senordsvalidering<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/blogging-techies.com\/sw\/hur-man-implementerar-formularvalidering-pa-klientsidan-med-javascript\/#3_Radioingangsvalidering\" >3. Radioing\u00e5ngsvalidering<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/blogging-techies.com\/sw\/hur-man-implementerar-formularvalidering-pa-klientsidan-med-javascript\/#4_Valj_Indatavalidering\" >4. V\u00e4lj Indatavalidering<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/blogging-techies.com\/sw\/hur-man-implementerar-formularvalidering-pa-klientsidan-med-javascript\/#5_Kryssruta_Validering\" >5. Kryssruta Validering<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/blogging-techies.com\/sw\/hur-man-implementerar-formularvalidering-pa-klientsidan-med-javascript\/#Att_forebygga_ar_battre_an_att_bota\" >Att f\u00f6rebygga \u00e4r b\u00e4ttre \u00e4n att bota<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/blogging-techies.com\/sw\/hur-man-implementerar-formularvalidering-pa-klientsidan-med-javascript\/#Prenumerera_pa_vart_nyhetsbrev\" >Prenumerera p\u00e5 v\u00e5rt nyhetsbrev<\/a><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n ","protected":false},"excerpt":{"rendered":"<p>JavaScript \u00e4r ett av de mest popul\u00e4ra och m\u00e5ngsidiga programmeringsspr\u00e5ken som du kan komma ig\u00e5ng med idag. Detta programmeringsspr\u00e5k s\u00e4gs med r\u00e4tta vara webbens spr\u00e5k och \u00e4r viktigt f\u00f6r att l\u00e4gga till interaktivitet p\u00e5 dina webbplatser. Formelementet \u00e4r ett av de mest anv\u00e4nda HTML-elementen p\u00e5 webbplatser. Dessa formul\u00e4r tar input fr\u00e5n anv\u00e4ndaren och bearbetar det [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":91820,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[5],"tags":[45370,27,45317,27490,20437,163,102,45],"class_list":["post-91819","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bloggar","tag-formularvalidering","tag-hur","tag-implementerar","tag-javascript","tag-klientsidan","tag-man","tag-med","tag-pa"],"_links":{"self":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/posts\/91819","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/comments?post=91819"}],"version-history":[{"count":0,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/posts\/91819\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/media\/91820"}],"wp:attachment":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/media?parent=91819"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/categories?post=91819"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/tags?post=91819"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}