{"id":1079,"date":"2025-09-25T11:28:36","date_gmt":"2025-09-25T11:28:36","guid":{"rendered":"https:\/\/aleksejev21.thkit.ee\/wp3\/?page_id=1079"},"modified":"2025-10-10T12:39:40","modified_gmt":"2025-10-10T12:39:40","slug":"harjutus-1-widgets","status":"publish","type":"page","link":"https:\/\/aleksejev21.thkit.ee\/wp3\/harjutus-1-widgets\/","title":{"rendered":"Harjutus 1: Widgets"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">1. Loo t\u00f6\u00f6lauale kaust&nbsp;rest\u2013api&nbsp;<br>2. K\u00e4ivita koodiredaktor (nt VS Code, WebStorm vms) ja ava see kaust projektina<br>3. Loo kausta fail index.js j\u00e4rgneva sisuga<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00dclesanne, mis tuleb t\u00e4ita.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Code<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Faili nimetus on \u201cindex.js\u201d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vidinatega t\u00f6\u00f6tamiseks kausta loomine<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>const express = require('express');\nconst cors = require('cors');\nconst app = express();\n\napp.use(cors());        \/\/ Avoid CORS errors in browsers\napp.use(express.json()) \/\/ Populate req.body\n\nconst widgets = &#91;\n    { id: 1, name: \"Cizzbor\", price: 29.99 },\n    { id: 2, name: \"Woowo\", price: 26.99 },\n    { id: 3, name: \"Crazlinger\", price: 59.99 },\n&#93;\n\napp.get('\/widgets', (req, res) => {\n    res.send(widgets)\n})\n\napp.get('\/widgets\/:id', (req, res) => {\n    if (typeof widgets&#91;req.params.id - 1&#93; === 'undefined') {\n        return res.status(404).send({ error: \"Widget not found\" })\n    }\n    res.send(widgets&#91;req.params.id - 1&#93;)\n})\n\n\napp.post('\/widgets', (req, res) => {\n    if (!req.body.name || !req.body.price) {\n        return res.status(400).send({ error: 'One or all params are missing' })\n    }\n    let newWidget = {\n        id: widgets.length + 1,\n        price: req.body.price,\n        name: req.body.name\n    }\n    widgets.push(newWidget)\n    res.status(201).location('localhost:8080\/widgets\/' + (widgets.length - 1)).send(\n        newWidget\n    )\n})\n\n\/\/ Kustutamine\napp.delete('\/widgets\/:id', (req, res) => {\n    if (typeof widgets&#91;req.params.id - 1&#93; === 'undefined') {\n        return res.status(404).send({\"Widget not found\"})\n    }\n    widgets.splice(req.params.id -1, 1)\n    res.status(204).send()\n})\n\napp.listen(8080, () => {\n    console.log(`API up at: http:\/\/localhost:8080`)\n})<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">const<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">express<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">require<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">express<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">const<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">cors<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">require<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">cors<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">const<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">app<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">express<\/span><span style=\"color: #D8DEE9FF\">()<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">app<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">use<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #88C0D0\">cors<\/span><span style=\"color: #D8DEE9FF\">())<\/span><span style=\"color: #81A1C1\">;<\/span><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #616E88\">\/\/ Avoid CORS errors in browsers<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">app<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">use<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #D8DEE9\">express<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">json<\/span><span style=\"color: #D8DEE9FF\">()) <\/span><span style=\"color: #616E88\">\/\/ Populate req.body<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">const<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">widgets<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> &#91;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">id<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">name<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Cizzbor<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">price<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">29.99<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">},<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">id<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">2<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">name<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Woowo<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">price<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">26.99<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">},<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">id<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">3<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">name<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Crazlinger<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">price<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">59.99<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">},<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#93;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">app<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">get<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">\/widgets<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">req<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">res<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=&gt;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">res<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">send<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #D8DEE9\">widgets<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">app<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">get<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">\/widgets\/:id<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">req<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">res<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=&gt;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> (<\/span><span style=\"color: #81A1C1\">typeof<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">widgets<\/span><span style=\"color: #D8DEE9FF\">&#91;<\/span><span style=\"color: #D8DEE9\">req<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">params<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">id<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #D8DEE9FF\">&#93; <\/span><span style=\"color: #81A1C1\">===<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">undefined<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">) <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">return<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">res<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">status<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #B48EAD\">404<\/span><span style=\"color: #D8DEE9FF\">)<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">send<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">error<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Widget not found<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">}<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">res<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">send<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #D8DEE9\">widgets<\/span><span style=\"color: #D8DEE9FF\">&#91;<\/span><span style=\"color: #D8DEE9\">req<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">params<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">id<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #D8DEE9FF\">&#93;)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">app<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">post<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">\/widgets<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">req<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">res<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=&gt;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> (<\/span><span style=\"color: #81A1C1\">!<\/span><span style=\"color: #D8DEE9\">req<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">body<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">name<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">||<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">!<\/span><span style=\"color: #D8DEE9\">req<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">body<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">price<\/span><span style=\"color: #D8DEE9FF\">) <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">return<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">res<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">status<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #B48EAD\">400<\/span><span style=\"color: #D8DEE9FF\">)<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">send<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">error<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">One or all params are missing<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">}<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">let<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">newWidget<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #88C0D0\">id<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">widgets<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">length <\/span><span style=\"color: #81A1C1\">+<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #88C0D0\">price<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">req<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">body<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">price<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #88C0D0\">name<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">req<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">body<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">name<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">widgets<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">push<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #D8DEE9\">newWidget<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">res<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">status<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #B48EAD\">201<\/span><span style=\"color: #D8DEE9FF\">)<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">location<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">localhost:8080\/widgets\/<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">+<\/span><span style=\"color: #D8DEE9FF\"> (<\/span><span style=\"color: #D8DEE9\">widgets<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">length <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #D8DEE9FF\">))<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">send<\/span><span style=\"color: #D8DEE9FF\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">newWidget<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">\/\/ Kustutamine<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">app<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">delete<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">\/widgets\/:id<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">req<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">res<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=&gt;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> (<\/span><span style=\"color: #81A1C1\">typeof<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">widgets<\/span><span style=\"color: #D8DEE9FF\">&#91;<\/span><span style=\"color: #D8DEE9\">req<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">params<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">id<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #D8DEE9FF\">&#93; <\/span><span style=\"color: #81A1C1\">===<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">undefined<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">) <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">return<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">res<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">status<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #B48EAD\">404<\/span><span style=\"color: #D8DEE9FF\">)<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">send<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Widget not found<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">}<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">widgets<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">splice<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #D8DEE9\">req<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">params<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">id<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">res<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">status<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #B48EAD\">204<\/span><span style=\"color: #D8DEE9FF\">)<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">send<\/span><span style=\"color: #D8DEE9FF\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">app<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">listen<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #B48EAD\">8080<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=&gt;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">console<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">log<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">`<\/span><span style=\"color: #A3BE8C\">API up at: http:\/\/localhost:8080<\/span><span style=\"color: #ECEFF4\">`<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">K\u00e4ivita koodiredaktoris terminal ja seal j\u00e4rgnevad k\u00e4sud:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/davidmyrseth23.thkit.ee\/wp\/wp-content\/uploads\/2025\/09\/C4C838AE-B197-4C8D-82D7-7D9699B4FA95.png\" alt=\"\" class=\"wp-image-3013\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Paigalda&nbsp;<code>xh<\/code>&nbsp;(kiire t\u00f6\u00f6riist HTTP p\u00e4ringute saatmiseks), mille saad Githubist<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/ducaale\/xh\">https:\/\/github.com\/ducaale\/xh<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tippige see k\u00e4sk xh installimiseks:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">curl -sfL https:\/\/raw.githubusercontent.com\/ducaale\/xh\/master\/install.sh | sh<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Loome GET\u2019i p\u00e4ring andmete widget\u2019i n\u00e4itamiseks<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"870\" height=\"636\" src=\"https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2025\/09\/image.png\" alt=\"\" class=\"wp-image-1080\" srcset=\"https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2025\/09\/image.png 870w, https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2025\/09\/image-300x219.png 300w, https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2025\/09\/image-768x561.png 768w, https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2025\/09\/image-150x110.png 150w, https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2025\/09\/image-600x439.png 600w\" sizes=\"auto, (max-width: 870px) 100vw, 870px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Loome GET\u2019i p\u00e4ring andmete widget\u2019i n\u00e4itamiseks valitud id<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"846\" height=\"381\" src=\"https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2025\/09\/image-1.png\" alt=\"\" class=\"wp-image-1081\" srcset=\"https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2025\/09\/image-1.png 846w, https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2025\/09\/image-1-300x135.png 300w, https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2025\/09\/image-1-768x346.png 768w, https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2025\/09\/image-1-150x68.png 150w, https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2025\/09\/image-1-600x270.png 600w\" sizes=\"auto, (max-width: 846px) 100vw, 846px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Loome POST\u2019i p\u00e4ring widget\u2019i loomiseks<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"393\" src=\"https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2025\/09\/image-2-1024x393.png\" alt=\"\" class=\"wp-image-1082\" srcset=\"https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2025\/09\/image-2-1024x393.png 1024w, https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2025\/09\/image-2-300x115.png 300w, https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2025\/09\/image-2-768x295.png 768w, https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2025\/09\/image-2-150x58.png 150w, https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2025\/09\/image-2-600x230.png 600w, https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2025\/09\/image-2.png 1032w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Loome DELETE p\u00e4ring widget\u2019i kustutamiseks<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"928\" height=\"517\" src=\"https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2025\/09\/image-3.png\" alt=\"\" class=\"wp-image-1083\" srcset=\"https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2025\/09\/image-3.png 928w, https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2025\/09\/image-3-300x167.png 300w, https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2025\/09\/image-3-768x428.png 768w, https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2025\/09\/image-3-150x84.png 150w, https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2025\/09\/image-3-600x334.png 600w\" sizes=\"auto, (max-width: 928px) 100vw, 928px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">See ei toimi, aga ma ei tea, miks<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kokkuv\u00f5tte<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">K\u00f5ik kasutatud p\u00e4ringud t\u00f6\u00f6tavad ( GET, POST, DELETE )<\/p>\n","protected":false},"excerpt":{"rendered":"<p>1. Loo t\u00f6\u00f6lauale kaust&nbsp;rest\u2013api&nbsp;2. K\u00e4ivita koodiredaktor (nt VS Code, WebStorm vms) ja ava see kaust projektina3. Loo kausta fail index.js [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-1079","page","type-page","status-publish","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"1. Loo t\u00f6\u00f6lauale kaust rest\u2013api 2. K\u00e4ivita koodiredaktor (nt VS Code, WebStorm vms) ja ava see kaust projektina3. Loo kausta fail index.js j\u00e4rgneva sisuga \u00dclesanne, mis tuleb t\u00e4ita. Code Faili nimetus on \u201cindex.js\u201d Vidinatega t\u00f6\u00f6tamiseks kausta loomine const express = require(&#039;express&#039;); const cors = require(&#039;cors&#039;); const app = express(); app.use(cors()); \/\/ Avoid CORS errors in browsers app.use(express.json())\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"google-site-verification\" content=\"tkbGFUaoRuR10CiaeVP2r2eJVzWl5wL0lGtASf0HS_s\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/aleksejev21.thkit.ee\/wp3\/harjutus-1-widgets\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Aleksandr Aleksejev Protfoolio - Noorem takvaraarendaja\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Harjutus 1: Widgets - Aleksandr Aleksejev Protfoolio\" \/>\n\t\t<meta property=\"og:description\" content=\"1. Loo t\u00f6\u00f6lauale kaust rest\u2013api 2. K\u00e4ivita koodiredaktor (nt VS Code, WebStorm vms) ja ava see kaust projektina3. Loo kausta fail index.js j\u00e4rgneva sisuga \u00dclesanne, mis tuleb t\u00e4ita. Code Faili nimetus on \u201cindex.js\u201d Vidinatega t\u00f6\u00f6tamiseks kausta loomine const express = require(&#039;express&#039;); const cors = require(&#039;cors&#039;); const app = express(); app.use(cors()); \/\/ Avoid CORS errors in browsers app.use(express.json())\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/aleksejev21.thkit.ee\/wp3\/harjutus-1-widgets\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2024\/05\/extendify-demo-logo.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2024\/05\/extendify-demo-logo.png\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2025-09-25T11:28:36+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2025-10-10T12:39:40+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Harjutus 1: Widgets - Aleksandr Aleksejev Protfoolio\" \/>\n\t\t<meta name=\"twitter:description\" content=\"1. Loo t\u00f6\u00f6lauale kaust rest\u2013api 2. K\u00e4ivita koodiredaktor (nt VS Code, WebStorm vms) ja ava see kaust projektina3. Loo kausta fail index.js j\u00e4rgneva sisuga \u00dclesanne, mis tuleb t\u00e4ita. Code Faili nimetus on \u201cindex.js\u201d Vidinatega t\u00f6\u00f6tamiseks kausta loomine const express = require(&#039;express&#039;); const cors = require(&#039;cors&#039;); const app = express(); app.use(cors()); \/\/ Avoid CORS errors in browsers app.use(express.json())\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2024\/05\/extendify-demo-logo.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/harjutus-1-widgets\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3#listItem\",\"position\":1,\"name\":\"\\u0413\\u043b\\u0430\\u0432\\u043d\\u0430\\u044f \\u0441\\u0442\\u0440\\u0430\\u043d\\u0438\\u0446\\u0430\",\"item\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/harjutus-1-widgets\\\/#listItem\",\"name\":\"Harjutus 1: Widgets\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/harjutus-1-widgets\\\/#listItem\",\"position\":2,\"name\":\"Harjutus 1: Widgets\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3#listItem\",\"name\":\"\\u0413\\u043b\\u0430\\u0432\\u043d\\u0430\\u044f \\u0441\\u0442\\u0440\\u0430\\u043d\\u0438\\u0446\\u0430\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/#organization\",\"name\":\"Aleksandr Aleksejev Protfoolio\",\"description\":\"Noorem takvaraarendaja\",\"url\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/wp-content\\\/uploads\\\/2024\\\/05\\\/extendify-demo-logo.png\",\"@id\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/harjutus-1-widgets\\\/#organizationLogo\",\"width\":96,\"height\":97},\"image\":{\"@id\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/harjutus-1-widgets\\\/#organizationLogo\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/harjutus-1-widgets\\\/#webpage\",\"url\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/harjutus-1-widgets\\\/\",\"name\":\"Harjutus 1: Widgets - Aleksandr Aleksejev Protfoolio\",\"description\":\"1. Loo t\\u00f6\\u00f6lauale kaust rest\\u2013api 2. K\\u00e4ivita koodiredaktor (nt VS Code, WebStorm vms) ja ava see kaust projektina3. Loo kausta fail index.js j\\u00e4rgneva sisuga \\u00dclesanne, mis tuleb t\\u00e4ita. Code Faili nimetus on \\u201cindex.js\\u201d Vidinatega t\\u00f6\\u00f6tamiseks kausta loomine const express = require('express'); const cors = require('cors'); const app = express(); app.use(cors()); \\\/\\\/ Avoid CORS errors in browsers app.use(express.json())\",\"inLanguage\":\"et\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/harjutus-1-widgets\\\/#breadcrumblist\"},\"datePublished\":\"2025-09-25T11:28:36+00:00\",\"dateModified\":\"2025-10-10T12:39:40+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/#website\",\"url\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/\",\"name\":\"Aleksandr Aleksejev Protfoolio\",\"description\":\"Noorem takvaraarendaja\",\"inLanguage\":\"et\",\"publisher\":{\"@id\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Harjutus 1: Widgets - Aleksandr Aleksejev Protfoolio","description":"1. Loo t\u00f6\u00f6lauale kaust rest\u2013api 2. K\u00e4ivita koodiredaktor (nt VS Code, WebStorm vms) ja ava see kaust projektina3. Loo kausta fail index.js j\u00e4rgneva sisuga \u00dclesanne, mis tuleb t\u00e4ita. Code Faili nimetus on \u201cindex.js\u201d Vidinatega t\u00f6\u00f6tamiseks kausta loomine const express = require('express'); const cors = require('cors'); const app = express(); app.use(cors()); \/\/ Avoid CORS errors in browsers app.use(express.json())","canonical_url":"https:\/\/aleksejev21.thkit.ee\/wp3\/harjutus-1-widgets\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"google-site-verification":"tkbGFUaoRuR10CiaeVP2r2eJVzWl5wL0lGtASf0HS_s","miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BreadcrumbList","@id":"https:\/\/aleksejev21.thkit.ee\/wp3\/harjutus-1-widgets\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/aleksejev21.thkit.ee\/wp3#listItem","position":1,"name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","item":"https:\/\/aleksejev21.thkit.ee\/wp3","nextItem":{"@type":"ListItem","@id":"https:\/\/aleksejev21.thkit.ee\/wp3\/harjutus-1-widgets\/#listItem","name":"Harjutus 1: Widgets"}},{"@type":"ListItem","@id":"https:\/\/aleksejev21.thkit.ee\/wp3\/harjutus-1-widgets\/#listItem","position":2,"name":"Harjutus 1: Widgets","previousItem":{"@type":"ListItem","@id":"https:\/\/aleksejev21.thkit.ee\/wp3#listItem","name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430"}}]},{"@type":"Organization","@id":"https:\/\/aleksejev21.thkit.ee\/wp3\/#organization","name":"Aleksandr Aleksejev Protfoolio","description":"Noorem takvaraarendaja","url":"https:\/\/aleksejev21.thkit.ee\/wp3\/","logo":{"@type":"ImageObject","url":"https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2024\/05\/extendify-demo-logo.png","@id":"https:\/\/aleksejev21.thkit.ee\/wp3\/harjutus-1-widgets\/#organizationLogo","width":96,"height":97},"image":{"@id":"https:\/\/aleksejev21.thkit.ee\/wp3\/harjutus-1-widgets\/#organizationLogo"}},{"@type":"WebPage","@id":"https:\/\/aleksejev21.thkit.ee\/wp3\/harjutus-1-widgets\/#webpage","url":"https:\/\/aleksejev21.thkit.ee\/wp3\/harjutus-1-widgets\/","name":"Harjutus 1: Widgets - Aleksandr Aleksejev Protfoolio","description":"1. Loo t\u00f6\u00f6lauale kaust rest\u2013api 2. K\u00e4ivita koodiredaktor (nt VS Code, WebStorm vms) ja ava see kaust projektina3. Loo kausta fail index.js j\u00e4rgneva sisuga \u00dclesanne, mis tuleb t\u00e4ita. Code Faili nimetus on \u201cindex.js\u201d Vidinatega t\u00f6\u00f6tamiseks kausta loomine const express = require('express'); const cors = require('cors'); const app = express(); app.use(cors()); \/\/ Avoid CORS errors in browsers app.use(express.json())","inLanguage":"et","isPartOf":{"@id":"https:\/\/aleksejev21.thkit.ee\/wp3\/#website"},"breadcrumb":{"@id":"https:\/\/aleksejev21.thkit.ee\/wp3\/harjutus-1-widgets\/#breadcrumblist"},"datePublished":"2025-09-25T11:28:36+00:00","dateModified":"2025-10-10T12:39:40+00:00"},{"@type":"WebSite","@id":"https:\/\/aleksejev21.thkit.ee\/wp3\/#website","url":"https:\/\/aleksejev21.thkit.ee\/wp3\/","name":"Aleksandr Aleksejev Protfoolio","description":"Noorem takvaraarendaja","inLanguage":"et","publisher":{"@id":"https:\/\/aleksejev21.thkit.ee\/wp3\/#organization"}}]},"og:locale":"et_EE","og:site_name":"Aleksandr Aleksejev Protfoolio - Noorem takvaraarendaja","og:type":"article","og:title":"Harjutus 1: Widgets - Aleksandr Aleksejev Protfoolio","og:description":"1. Loo t\u00f6\u00f6lauale kaust rest\u2013api 2. K\u00e4ivita koodiredaktor (nt VS Code, WebStorm vms) ja ava see kaust projektina3. Loo kausta fail index.js j\u00e4rgneva sisuga \u00dclesanne, mis tuleb t\u00e4ita. Code Faili nimetus on \u201cindex.js\u201d Vidinatega t\u00f6\u00f6tamiseks kausta loomine const express = require('express'); const cors = require('cors'); const app = express(); app.use(cors()); \/\/ Avoid CORS errors in browsers app.use(express.json())","og:url":"https:\/\/aleksejev21.thkit.ee\/wp3\/harjutus-1-widgets\/","og:image":"https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2024\/05\/extendify-demo-logo.png","og:image:secure_url":"https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2024\/05\/extendify-demo-logo.png","article:published_time":"2025-09-25T11:28:36+00:00","article:modified_time":"2025-10-10T12:39:40+00:00","twitter:card":"summary_large_image","twitter:title":"Harjutus 1: Widgets - Aleksandr Aleksejev Protfoolio","twitter:description":"1. Loo t\u00f6\u00f6lauale kaust rest\u2013api 2. K\u00e4ivita koodiredaktor (nt VS Code, WebStorm vms) ja ava see kaust projektina3. Loo kausta fail index.js j\u00e4rgneva sisuga \u00dclesanne, mis tuleb t\u00e4ita. Code Faili nimetus on \u201cindex.js\u201d Vidinatega t\u00f6\u00f6tamiseks kausta loomine const express = require('express'); const cors = require('cors'); const app = express(); app.use(cors()); \/\/ Avoid CORS errors in browsers app.use(express.json())","twitter:image":"https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2024\/05\/extendify-demo-logo.png"},"aioseo_meta_data":{"post_id":"1079","title":null,"description":null,"keywords":null,"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"WebPage","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":{"faqs":[],"keyPoints":[],"titles":[],"descriptions":[],"socialPosts":{"email":[],"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"created":"2025-09-25 11:28:36","updated":"2025-10-10 13:06:05","seo_analyzer_scan_date":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/aleksejev21.thkit.ee\/wp3\" title=\"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\">\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tHarjutus 1: Widgets\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","link":"https:\/\/aleksejev21.thkit.ee\/wp3"},{"label":"Harjutus 1: Widgets","link":"https:\/\/aleksejev21.thkit.ee\/wp3\/harjutus-1-widgets\/"}],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Harjutus 1: Widgets - Aleksandr Aleksejev Protfoolio<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/aleksejev21.thkit.ee\/wp3\/harjutus-1-widgets\/\" \/>\n<meta property=\"og:locale\" content=\"et_EE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Harjutus 1: Widgets - Aleksandr Aleksejev Protfoolio\" \/>\n<meta property=\"og:description\" content=\"1. Loo t\u00f6\u00f6lauale kaust&nbsp;rest\u2013api&nbsp;2. K\u00e4ivita koodiredaktor (nt VS Code, WebStorm vms) ja ava see kaust projektina3. Loo kausta fail index.js [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/aleksejev21.thkit.ee\/wp3\/harjutus-1-widgets\/\" \/>\n<meta property=\"og:site_name\" content=\"Aleksandr Aleksejev Protfoolio\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/profile.php?id=100011831793026&amp;locale=ru_RU\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-10T12:39:40+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Eeldatav lugemisaeg\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutit\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/harjutus-1-widgets\\\/\",\"url\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/harjutus-1-widgets\\\/\",\"name\":\"Harjutus 1: Widgets - Aleksandr Aleksejev Protfoolio\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/harjutus-1-widgets\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/harjutus-1-widgets\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/davidmyrseth23.thkit.ee\\\/wp\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/C4C838AE-B197-4C8D-82D7-7D9699B4FA95.png\",\"datePublished\":\"2025-09-25T11:28:36+00:00\",\"dateModified\":\"2025-10-10T12:39:40+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/harjutus-1-widgets\\\/#breadcrumb\"},\"inLanguage\":\"et\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/harjutus-1-widgets\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"et\",\"@id\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/harjutus-1-widgets\\\/#primaryimage\",\"url\":\"https:\\\/\\\/davidmyrseth23.thkit.ee\\\/wp\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/C4C838AE-B197-4C8D-82D7-7D9699B4FA95.png\",\"contentUrl\":\"https:\\\/\\\/davidmyrseth23.thkit.ee\\\/wp\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/C4C838AE-B197-4C8D-82D7-7D9699B4FA95.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/harjutus-1-widgets\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\",\"item\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Harjutus 1: Widgets\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/#website\",\"url\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/\",\"name\":\"Aleksandr Aleksejev Portfoolio\",\"description\":\"Noorem takvaraarendaja\",\"publisher\":{\"@id\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"et\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/#organization\",\"name\":\"Aleksandr Aleksejev Portfoolio\",\"url\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"et\",\"@id\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/image.png\",\"contentUrl\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/image.png\",\"width\":1200,\"height\":1200,\"caption\":\"Aleksandr Aleksejev Portfoolio\"},\"image\":{\"@id\":\"https:\\\/\\\/aleksejev21.thkit.ee\\\/wp3\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/profile.php?id=100011831793026&locale=ru_RU\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Harjutus 1: Widgets - Aleksandr Aleksejev Protfoolio","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/aleksejev21.thkit.ee\/wp3\/harjutus-1-widgets\/","og_locale":"et_EE","og_type":"article","og_title":"Harjutus 1: Widgets - Aleksandr Aleksejev Protfoolio","og_description":"1. Loo t\u00f6\u00f6lauale kaust&nbsp;rest\u2013api&nbsp;2. K\u00e4ivita koodiredaktor (nt VS Code, WebStorm vms) ja ava see kaust projektina3. Loo kausta fail index.js [&hellip;]","og_url":"https:\/\/aleksejev21.thkit.ee\/wp3\/harjutus-1-widgets\/","og_site_name":"Aleksandr Aleksejev Protfoolio","article_publisher":"https:\/\/www.facebook.com\/profile.php?id=100011831793026&locale=ru_RU","article_modified_time":"2025-10-10T12:39:40+00:00","twitter_card":"summary_large_image","twitter_misc":{"Eeldatav lugemisaeg":"2 minutit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/aleksejev21.thkit.ee\/wp3\/harjutus-1-widgets\/","url":"https:\/\/aleksejev21.thkit.ee\/wp3\/harjutus-1-widgets\/","name":"Harjutus 1: Widgets - Aleksandr Aleksejev Protfoolio","isPartOf":{"@id":"https:\/\/aleksejev21.thkit.ee\/wp3\/#website"},"primaryImageOfPage":{"@id":"https:\/\/aleksejev21.thkit.ee\/wp3\/harjutus-1-widgets\/#primaryimage"},"image":{"@id":"https:\/\/aleksejev21.thkit.ee\/wp3\/harjutus-1-widgets\/#primaryimage"},"thumbnailUrl":"https:\/\/davidmyrseth23.thkit.ee\/wp\/wp-content\/uploads\/2025\/09\/C4C838AE-B197-4C8D-82D7-7D9699B4FA95.png","datePublished":"2025-09-25T11:28:36+00:00","dateModified":"2025-10-10T12:39:40+00:00","breadcrumb":{"@id":"https:\/\/aleksejev21.thkit.ee\/wp3\/harjutus-1-widgets\/#breadcrumb"},"inLanguage":"et","potentialAction":[{"@type":"ReadAction","target":["https:\/\/aleksejev21.thkit.ee\/wp3\/harjutus-1-widgets\/"]}]},{"@type":"ImageObject","inLanguage":"et","@id":"https:\/\/aleksejev21.thkit.ee\/wp3\/harjutus-1-widgets\/#primaryimage","url":"https:\/\/davidmyrseth23.thkit.ee\/wp\/wp-content\/uploads\/2025\/09\/C4C838AE-B197-4C8D-82D7-7D9699B4FA95.png","contentUrl":"https:\/\/davidmyrseth23.thkit.ee\/wp\/wp-content\/uploads\/2025\/09\/C4C838AE-B197-4C8D-82D7-7D9699B4FA95.png"},{"@type":"BreadcrumbList","@id":"https:\/\/aleksejev21.thkit.ee\/wp3\/harjutus-1-widgets\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","item":"https:\/\/aleksejev21.thkit.ee\/wp3\/"},{"@type":"ListItem","position":2,"name":"Harjutus 1: Widgets"}]},{"@type":"WebSite","@id":"https:\/\/aleksejev21.thkit.ee\/wp3\/#website","url":"https:\/\/aleksejev21.thkit.ee\/wp3\/","name":"Aleksandr Aleksejev Portfoolio","description":"Noorem takvaraarendaja","publisher":{"@id":"https:\/\/aleksejev21.thkit.ee\/wp3\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/aleksejev21.thkit.ee\/wp3\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"et"},{"@type":"Organization","@id":"https:\/\/aleksejev21.thkit.ee\/wp3\/#organization","name":"Aleksandr Aleksejev Portfoolio","url":"https:\/\/aleksejev21.thkit.ee\/wp3\/","logo":{"@type":"ImageObject","inLanguage":"et","@id":"https:\/\/aleksejev21.thkit.ee\/wp3\/#\/schema\/logo\/image\/","url":"https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2024\/10\/image.png","contentUrl":"https:\/\/aleksejev21.thkit.ee\/wp3\/wp-content\/uploads\/2024\/10\/image.png","width":1200,"height":1200,"caption":"Aleksandr Aleksejev Portfoolio"},"image":{"@id":"https:\/\/aleksejev21.thkit.ee\/wp3\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/profile.php?id=100011831793026&locale=ru_RU"]}]}},"_links":{"self":[{"href":"https:\/\/aleksejev21.thkit.ee\/wp3\/wp-json\/wp\/v2\/pages\/1079","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aleksejev21.thkit.ee\/wp3\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/aleksejev21.thkit.ee\/wp3\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/aleksejev21.thkit.ee\/wp3\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aleksejev21.thkit.ee\/wp3\/wp-json\/wp\/v2\/comments?post=1079"}],"version-history":[{"count":4,"href":"https:\/\/aleksejev21.thkit.ee\/wp3\/wp-json\/wp\/v2\/pages\/1079\/revisions"}],"predecessor-version":[{"id":1183,"href":"https:\/\/aleksejev21.thkit.ee\/wp3\/wp-json\/wp\/v2\/pages\/1079\/revisions\/1183"}],"wp:attachment":[{"href":"https:\/\/aleksejev21.thkit.ee\/wp3\/wp-json\/wp\/v2\/media?parent=1079"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}