{"id":2390,"date":"2025-09-30T09:54:01","date_gmt":"2025-09-30T09:54:01","guid":{"rendered":"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/?page_id=2390"},"modified":"2025-10-20T13:45:17","modified_gmt":"2025-10-20T13:45:17","slug":"veebirakenduste-loomine-api-paringute-abil","status":"publish","type":"page","link":"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/veebirakenduste-loomine-api-paringute-abil\/","title":{"rendered":"Veebirakenduste loomine API p\u00e4ringute abil"},"content":{"rendered":"\n<ol class=\"wp-block-list\">\n<li class=\"has-x-large-font-size\"><strong>Project creation<\/strong><\/li>\n<\/ol>\n\n\n\n<p>1.1. Ava Visual Studio<\/p>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-1\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"614\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/F3E230F7-54F7-4178-80D2-AB1C2DEA7913-1024x614.png\" alt=\"\" class=\"wp-image-2395\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/F3E230F7-54F7-4178-80D2-AB1C2DEA7913-1024x614.png 1024w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/F3E230F7-54F7-4178-80D2-AB1C2DEA7913-300x180.png 300w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/F3E230F7-54F7-4178-80D2-AB1C2DEA7913-768x461.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/F3E230F7-54F7-4178-80D2-AB1C2DEA7913-150x90.png 150w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/F3E230F7-54F7-4178-80D2-AB1C2DEA7913-1536x922.png 1536w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/F3E230F7-54F7-4178-80D2-AB1C2DEA7913.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>1.2. Loo uus projekt<\/p>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-2\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"614\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/F6B302F4-AF4C-4732-8164-46C03D6B0D3C-1024x614.png\" alt=\"\" class=\"wp-image-2394\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/F6B302F4-AF4C-4732-8164-46C03D6B0D3C-1024x614.png 1024w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/F6B302F4-AF4C-4732-8164-46C03D6B0D3C-300x180.png 300w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/F6B302F4-AF4C-4732-8164-46C03D6B0D3C-768x461.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/F6B302F4-AF4C-4732-8164-46C03D6B0D3C-150x90.png 150w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/F6B302F4-AF4C-4732-8164-46C03D6B0D3C-1536x922.png 1536w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/F6B302F4-AF4C-4732-8164-46C03D6B0D3C.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>1.3. Vali ASP.NET Core Web API<\/p>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-3\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"614\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/A320A82B-6724-40AE-B6D8-9B31B8B23D70-1024x614.png\" alt=\"\" class=\"wp-image-2396\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/A320A82B-6724-40AE-B6D8-9B31B8B23D70-1024x614.png 1024w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/A320A82B-6724-40AE-B6D8-9B31B8B23D70-300x180.png 300w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/A320A82B-6724-40AE-B6D8-9B31B8B23D70-768x461.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/A320A82B-6724-40AE-B6D8-9B31B8B23D70-150x90.png 150w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/A320A82B-6724-40AE-B6D8-9B31B8B23D70-1536x922.png 1536w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/A320A82B-6724-40AE-B6D8-9B31B8B23D70.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>1.4. Nimeta see, kuidas soovid<\/p>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-4\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"614\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/6B1D8B8D-A964-4025-9400-0B6A5EBAF171-1024x614.png\" alt=\"\" class=\"wp-image-2398\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/6B1D8B8D-A964-4025-9400-0B6A5EBAF171-1024x614.png 1024w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/6B1D8B8D-A964-4025-9400-0B6A5EBAF171-300x180.png 300w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/6B1D8B8D-A964-4025-9400-0B6A5EBAF171-768x461.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/6B1D8B8D-A964-4025-9400-0B6A5EBAF171-150x90.png 150w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/6B1D8B8D-A964-4025-9400-0B6A5EBAF171-1536x922.png 1536w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/6B1D8B8D-A964-4025-9400-0B6A5EBAF171.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>1.5. Sisesta need vanad seaded<\/p>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-5\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"614\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/1D689A8F-3A46-4F25-9558-6F8D7DA552B2-1024x614.png\" alt=\"\" class=\"wp-image-2401\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/1D689A8F-3A46-4F25-9558-6F8D7DA552B2-1024x614.png 1024w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/1D689A8F-3A46-4F25-9558-6F8D7DA552B2-300x180.png 300w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/1D689A8F-3A46-4F25-9558-6F8D7DA552B2-768x461.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/1D689A8F-3A46-4F25-9558-6F8D7DA552B2-150x90.png 150w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/1D689A8F-3A46-4F25-9558-6F8D7DA552B2-1536x922.png 1536w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/1D689A8F-3A46-4F25-9558-6F8D7DA552B2.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li class=\"has-x-large-font-size\"><strong>ASP.NET API-ga tutvumine<\/strong><\/li>\n<\/ol>\n\n\n\n<p>2.1. Paremkl\u00f5psa kaustal Controllers, vali Add -> Controller&#8230;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-6\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"614\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/DBA9BE01-5011-4BCA-8D02-F9EE274FEFF2-1024x614.png\" alt=\"\" class=\"wp-image-2409\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/DBA9BE01-5011-4BCA-8D02-F9EE274FEFF2-1024x614.png 1024w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/DBA9BE01-5011-4BCA-8D02-F9EE274FEFF2-300x180.png 300w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/DBA9BE01-5011-4BCA-8D02-F9EE274FEFF2-768x461.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/DBA9BE01-5011-4BCA-8D02-F9EE274FEFF2-150x90.png 150w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/DBA9BE01-5011-4BCA-8D02-F9EE274FEFF2-1536x922.png 1536w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/DBA9BE01-5011-4BCA-8D02-F9EE274FEFF2.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>2.2. Vali API Controller &#8211; Empty, nimeta see <code>PrimitiividController.cs<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-7\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/0A463A31-127A-4488-88EE-AB7EC796D45E-1024x640.png\" alt=\"\" class=\"wp-image-2411\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/0A463A31-127A-4488-88EE-AB7EC796D45E-1024x640.png 1024w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/0A463A31-127A-4488-88EE-AB7EC796D45E-300x188.png 300w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/0A463A31-127A-4488-88EE-AB7EC796D45E-768x480.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/0A463A31-127A-4488-88EE-AB7EC796D45E-150x94.png 150w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/0A463A31-127A-4488-88EE-AB7EC796D45E-1536x960.png 1536w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/0A463A31-127A-4488-88EE-AB7EC796D45E.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>2.3. Kirjuta see kood:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#e1e4e8;--cbp-line-number-width:calc(2 * 0.6 * 1rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2f363c;color:#d3d7dd\">C#<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;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>using Microsoft.AspNetCore.Http;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Veeb_TARpv23.Controllers\n{\n    [Route(\"&#91;controller&#93;\")]\n    &#91;ApiController&#93;\n    public class PrimitiividController : ControllerBase\n    {\n\n        \/\/ GET: primitiivid\/hello-world\n        &#91;HttpGet(\"hello-world\")&#93;\n        public string HelloWorld()\n        {\n            return \"Hello world at \" + DateTime.Now;\n        }\n\n    }\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=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F97583\">using<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Microsoft<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">AspNetCore<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Http<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">using<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Microsoft<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">AspNetCore<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Mvc<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">namespace<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Veeb_TARpv23<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Controllers<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    [<\/span><span style=\"color: #B392F0\">Route<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;&#91;controller&#93;&quot;<\/span><span style=\"color: #E1E4E8\">)]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    &#91;<\/span><span style=\"color: #B392F0\">ApiController<\/span><span style=\"color: #E1E4E8\">&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">class<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">PrimitiividController<\/span><span style=\"color: #E1E4E8\"> : <\/span><span style=\"color: #B392F0\">ControllerBase<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">        \/\/ GET: primitiivid\/hello-world<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &#91;<\/span><span style=\"color: #B392F0\">HttpGet<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;hello-world&quot;<\/span><span style=\"color: #E1E4E8\">)&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">string<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">HelloWorld<\/span><span style=\"color: #E1E4E8\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&quot;Hello world at &quot;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">+<\/span><span style=\"color: #E1E4E8\"> DateTime.Now;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>2.4. K\u00e4ivita see, mine oma <code>localhost:[port]\/Primitiivid\/hello-world<\/code> URL-ile<\/p>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-8\"><img loading=\"lazy\" decoding=\"async\" width=\"853\" height=\"1024\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/9D2D1A18-067C-442B-9FC8-4AF262B5AE48-853x1024.png\" alt=\"\" class=\"wp-image-2423\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/9D2D1A18-067C-442B-9FC8-4AF262B5AE48-853x1024.png 853w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/9D2D1A18-067C-442B-9FC8-4AF262B5AE48-250x300.png 250w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/9D2D1A18-067C-442B-9FC8-4AF262B5AE48-768x922.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/9D2D1A18-067C-442B-9FC8-4AF262B5AE48-125x150.png 125w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/9D2D1A18-067C-442B-9FC8-4AF262B5AE48.png 960w\" sizes=\"auto, (max-width: 853px) 100vw, 853px\" \/><\/figure>\n\n\n\n<p>2.5. Kirjuta see kood:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#e1e4e8;--cbp-line-number-width:calc(2 * 0.6 * 1rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2f363c;color:#d3d7dd\">C#<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;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>using Microsoft.AspNetCore.Http;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Veeb_TARpv23.Controllers\n{\n    [Route(\"&#91;controller&#93;\")]\n    &#91;ApiController&#93;\n    public class PrimitiividController : ControllerBase\n    {\n\n        \/\/ GET: primitiivid\/hello-world\n        &#91;HttpGet(\"hello-world\")&#93;\n        public string HelloWorld()\n        {\n            return \"Hello world at \" + DateTime.Now;\n        }\n\n        \/\/ GET: primitiivid\/hello-variable\/mari\n        &#91;HttpGet(\"hello-variable\/{nimi}\")&#93;\n        public string HelloVariable(string nimi)\n        {\n            return \"Hello \" + nimi;\n        }\n\n        \/\/ GET: primitiivid\/add\/5\/6\n        &#91;HttpGet(\"add\/{nr1}\/{nr2}\")&#93;\n        public int AddNumbers(int nr1, int nr2)\n        {\n            return nr1 + nr2;\n        }\n\n        \/\/ GET: primitiivid\/multiply\/5\/6\n        &#91;HttpGet(\"multiply\/{nr1}\/{nr2}\")&#93;\n        public int Multiply(int nr1, int nr2)\n        {\n            return nr1 * nr2;\n        }\n\n        \/\/ GET: primitiivid\/do-logs\/5\n        &#91;HttpGet(\"do-logs\/{arv}\")&#93;\n        public void DoLogs(int arv)\n        {\n            for (int i = 0; i &lt; arv; i++)\n            {\n                Console.WriteLine(\"See on logi nr \" + i);\n            }\n        }\n    }\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=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F97583\">using<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Microsoft<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">AspNetCore<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Http<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">using<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Microsoft<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">AspNetCore<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Mvc<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">namespace<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Veeb_TARpv23<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Controllers<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    [<\/span><span style=\"color: #B392F0\">Route<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;&#91;controller&#93;&quot;<\/span><span style=\"color: #E1E4E8\">)]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    &#91;<\/span><span style=\"color: #B392F0\">ApiController<\/span><span style=\"color: #E1E4E8\">&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">class<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">PrimitiividController<\/span><span style=\"color: #E1E4E8\"> : <\/span><span style=\"color: #B392F0\">ControllerBase<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">        \/\/ GET: primitiivid\/hello-world<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &#91;<\/span><span style=\"color: #B392F0\">HttpGet<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;hello-world&quot;<\/span><span style=\"color: #E1E4E8\">)&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">string<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">HelloWorld<\/span><span style=\"color: #E1E4E8\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&quot;Hello world at &quot;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">+<\/span><span style=\"color: #E1E4E8\"> DateTime.Now;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">        \/\/ GET: primitiivid\/hello-variable\/mari<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &#91;<\/span><span style=\"color: #B392F0\">HttpGet<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;hello-variable\/{nimi}&quot;<\/span><span style=\"color: #E1E4E8\">)&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">string<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">HelloVariable<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #F97583\">string<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">nimi<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&quot;Hello &quot;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">+<\/span><span style=\"color: #E1E4E8\"> nimi;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">        \/\/ GET: primitiivid\/add\/5\/6<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &#91;<\/span><span style=\"color: #B392F0\">HttpGet<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;add\/{nr1}\/{nr2}&quot;<\/span><span style=\"color: #E1E4E8\">)&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">int<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">AddNumbers<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #F97583\">int<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">nr1<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #F97583\">int<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">nr2<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> nr1 <\/span><span style=\"color: #F97583\">+<\/span><span style=\"color: #E1E4E8\"> nr2;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">        \/\/ GET: primitiivid\/multiply\/5\/6<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &#91;<\/span><span style=\"color: #B392F0\">HttpGet<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;multiply\/{nr1}\/{nr2}&quot;<\/span><span style=\"color: #E1E4E8\">)&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">int<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Multiply<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #F97583\">int<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">nr1<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #F97583\">int<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">nr2<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> nr1 <\/span><span style=\"color: #F97583\">*<\/span><span style=\"color: #E1E4E8\"> nr2;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">        \/\/ GET: primitiivid\/do-logs\/5<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &#91;<\/span><span style=\"color: #B392F0\">HttpGet<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;do-logs\/{arv}&quot;<\/span><span style=\"color: #E1E4E8\">)&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">void<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">DoLogs<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #F97583\">int<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">arv<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">for<\/span><span style=\"color: #E1E4E8\"> (<\/span><span style=\"color: #F97583\">int<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">i<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">0<\/span><span style=\"color: #E1E4E8\">; i <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #E1E4E8\"> arv; i<\/span><span style=\"color: #F97583\">++<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                Console.<\/span><span style=\"color: #B392F0\">WriteLine<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;See on logi nr &quot;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">+<\/span><span style=\"color: #E1E4E8\"> i);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>2.6. Testi endpoint&#8217;e:<\/p>\n\n\n\n<p>2.6.1. Mine <code>localhost:[port]\/Primitiivid\/hello-variable\/[NIMI]<\/code> URL-ile<\/p>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-9\"><img loading=\"lazy\" decoding=\"async\" width=\"853\" height=\"1024\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/14AF59DF-A093-459A-9158-684B3770F546-853x1024.png\" alt=\"\" class=\"wp-image-2429\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/14AF59DF-A093-459A-9158-684B3770F546-853x1024.png 853w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/14AF59DF-A093-459A-9158-684B3770F546-250x300.png 250w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/14AF59DF-A093-459A-9158-684B3770F546-768x922.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/14AF59DF-A093-459A-9158-684B3770F546-125x150.png 125w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/14AF59DF-A093-459A-9158-684B3770F546.png 960w\" sizes=\"auto, (max-width: 853px) 100vw, 853px\" \/><\/figure>\n\n\n\n<p>2.6.2. Mine <code>localhost:[port]\/Primitiivid\/add\/[NUMBER 1]\/[NUMBER 2]<\/code> URL-ile<\/p>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-10\"><img loading=\"lazy\" decoding=\"async\" width=\"853\" height=\"1024\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/304B422A-E3B7-4C8C-ADF6-F4412217DEE8-853x1024.png\" alt=\"\" class=\"wp-image-2436\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/304B422A-E3B7-4C8C-ADF6-F4412217DEE8-853x1024.png 853w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/304B422A-E3B7-4C8C-ADF6-F4412217DEE8-250x300.png 250w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/304B422A-E3B7-4C8C-ADF6-F4412217DEE8-768x922.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/304B422A-E3B7-4C8C-ADF6-F4412217DEE8-125x150.png 125w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/304B422A-E3B7-4C8C-ADF6-F4412217DEE8.png 960w\" sizes=\"auto, (max-width: 853px) 100vw, 853px\" \/><\/figure>\n\n\n\n<p>2.6.3. Mine <code>localhost:[port]\/Primitiivid\/multiply\/[NUMBER 1]\/[NUMBER 2]<\/code> URL-ile<\/p>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-11\"><img loading=\"lazy\" decoding=\"async\" width=\"853\" height=\"1024\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/24974055-132A-4180-A72D-65D784B3C83C-853x1024.png\" alt=\"\" class=\"wp-image-2438\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/24974055-132A-4180-A72D-65D784B3C83C-853x1024.png 853w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/24974055-132A-4180-A72D-65D784B3C83C-250x300.png 250w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/24974055-132A-4180-A72D-65D784B3C83C-768x922.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/24974055-132A-4180-A72D-65D784B3C83C-125x150.png 125w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/24974055-132A-4180-A72D-65D784B3C83C.png 960w\" sizes=\"auto, (max-width: 853px) 100vw, 853px\" \/><\/figure>\n\n\n\n<p>2.6.3. <code>Mine localhost:[port]\/Primitiivid\/do-logs\/[KOGUS] URL-ile ja kontrolli konsooli<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-12\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"615\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/54311BEB-4B29-4013-83AA-532D4FAAB39D-1024x615.png\" alt=\"\" class=\"wp-image-2440\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/54311BEB-4B29-4013-83AA-532D4FAAB39D-1024x615.png 1024w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/54311BEB-4B29-4013-83AA-532D4FAAB39D-300x180.png 300w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/54311BEB-4B29-4013-83AA-532D4FAAB39D-768x461.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/54311BEB-4B29-4013-83AA-532D4FAAB39D-150x90.png 150w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/54311BEB-4B29-4013-83AA-532D4FAAB39D-1536x922.png 1536w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/54311BEB-4B29-4013-83AA-532D4FAAB39D.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>2.7. Loo uus kaust nimega Models<\/p>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-13\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"614\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/6861D571-D028-4048-B353-52FFFB950554-1024x614.png\" alt=\"\" class=\"wp-image-2444\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/6861D571-D028-4048-B353-52FFFB950554-1024x614.png 1024w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/6861D571-D028-4048-B353-52FFFB950554-300x180.png 300w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/6861D571-D028-4048-B353-52FFFB950554-768x461.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/6861D571-D028-4048-B353-52FFFB950554-150x90.png 150w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/6861D571-D028-4048-B353-52FFFB950554-1536x922.png 1536w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/6861D571-D028-4048-B353-52FFFB950554.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>2.8. Loo uude kausta uus C# klass nimega <code>Toode.cs<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-14\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"614\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/4110FD4F-D89D-4D6D-9F9E-9AD161A1C1D3-1024x614.png\" alt=\"\" class=\"wp-image-2445\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/4110FD4F-D89D-4D6D-9F9E-9AD161A1C1D3-1024x614.png 1024w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/4110FD4F-D89D-4D6D-9F9E-9AD161A1C1D3-300x180.png 300w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/4110FD4F-D89D-4D6D-9F9E-9AD161A1C1D3-768x461.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/4110FD4F-D89D-4D6D-9F9E-9AD161A1C1D3-150x90.png 150w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/4110FD4F-D89D-4D6D-9F9E-9AD161A1C1D3-1536x922.png 1536w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/4110FD4F-D89D-4D6D-9F9E-9AD161A1C1D3.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full wp-duotone-unset-15\"><img loading=\"lazy\" decoding=\"async\" width=\"941\" height=\"653\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/1A51B690-9EA9-4CAF-A843-3E2BB8BF578E.png\" alt=\"\" class=\"wp-image-2447\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/1A51B690-9EA9-4CAF-A843-3E2BB8BF578E.png 941w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/1A51B690-9EA9-4CAF-A843-3E2BB8BF578E-300x208.png 300w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/1A51B690-9EA9-4CAF-A843-3E2BB8BF578E-768x533.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/1A51B690-9EA9-4CAF-A843-3E2BB8BF578E-150x104.png 150w\" sizes=\"auto, (max-width: 941px) 100vw, 941px\" \/><\/figure>\n\n\n\n<p>2.9. Kirjuta sisse see kood:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#e1e4e8;--cbp-line-number-width:calc(2 * 0.6 * 1rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2f363c;color:#d3d7dd\">C#<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;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>namespace Veeb_TARpv23.Models\n{\n    public class Toode\n    {\n        public int Id { get; set; }\n        public string Name { get; set; }\n        public double Price { get; set; }\n        public bool IsActive { get; set; }\n\n        public Toode(int id, string name, double price, bool isActive)\n        {\n            Id = id;\n            Name = name;\n            Price = price;\n            IsActive = isActive;\n        }\n    }\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=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F97583\">namespace<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Veeb_TARpv23<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Models<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">class<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Toode<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">int<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Id<\/span><span style=\"color: #E1E4E8\"> { <\/span><span style=\"color: #F97583\">get<\/span><span style=\"color: #E1E4E8\">; <\/span><span style=\"color: #F97583\">set<\/span><span style=\"color: #E1E4E8\">; }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">string<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Name<\/span><span style=\"color: #E1E4E8\"> { <\/span><span style=\"color: #F97583\">get<\/span><span style=\"color: #E1E4E8\">; <\/span><span style=\"color: #F97583\">set<\/span><span style=\"color: #E1E4E8\">; }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">double<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Price<\/span><span style=\"color: #E1E4E8\"> { <\/span><span style=\"color: #F97583\">get<\/span><span style=\"color: #E1E4E8\">; <\/span><span style=\"color: #F97583\">set<\/span><span style=\"color: #E1E4E8\">; }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">bool<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">IsActive<\/span><span style=\"color: #E1E4E8\"> { <\/span><span style=\"color: #F97583\">get<\/span><span style=\"color: #E1E4E8\">; <\/span><span style=\"color: #F97583\">set<\/span><span style=\"color: #E1E4E8\">; }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #F97583\">int<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">id<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #F97583\">string<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">name<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #F97583\">double<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">price<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #F97583\">bool<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">isActive<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            Id <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> id;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            Name <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> name;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            Price <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> price;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            IsActive <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> isActive;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>2.10. Loo uus Controller ja nimeta see <code>ToodeController.cs<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-16\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"614\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/39A30442-7421-49A6-8DDC-8B5F42307B49-1024x614.png\" alt=\"\" class=\"wp-image-2453\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/39A30442-7421-49A6-8DDC-8B5F42307B49-1024x614.png 1024w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/39A30442-7421-49A6-8DDC-8B5F42307B49-300x180.png 300w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/39A30442-7421-49A6-8DDC-8B5F42307B49-768x461.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/39A30442-7421-49A6-8DDC-8B5F42307B49-150x90.png 150w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/39A30442-7421-49A6-8DDC-8B5F42307B49-1536x922.png 1536w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/39A30442-7421-49A6-8DDC-8B5F42307B49.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-17\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/7E4A5CEE-BE35-46C8-8239-6C4ECBF6CD87-1024x640.png\" alt=\"\" class=\"wp-image-2454\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/7E4A5CEE-BE35-46C8-8239-6C4ECBF6CD87-1024x640.png 1024w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/7E4A5CEE-BE35-46C8-8239-6C4ECBF6CD87-300x188.png 300w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/7E4A5CEE-BE35-46C8-8239-6C4ECBF6CD87-768x480.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/7E4A5CEE-BE35-46C8-8239-6C4ECBF6CD87-150x94.png 150w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/7E4A5CEE-BE35-46C8-8239-6C4ECBF6CD87-1536x960.png 1536w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/7E4A5CEE-BE35-46C8-8239-6C4ECBF6CD87.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>2.11. Kirjuta sisse see kood:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#e1e4e8;--cbp-line-number-width:calc(2 * 0.6 * 1rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2f363c;color:#d3d7dd\">C#<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;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>using Microsoft.AspNetCore.Http;\nusing Microsoft.AspNetCore.Mvc;\nusing Veeb_TARpv23.Models;\n\nnamespace Veeb_TARpv23.Controllers\n{\n    [Route(\"&#91;controller&#93;\")]\n    &#91;ApiController&#93;\n    public class ToodeController : ControllerBase\n    {\n        private static Toode _toode = new Toode(1, \"Koola\", 1.5, true);\n\n        \/\/ GET: toode\n        &#91;HttpGet&#93;\n        public Toode GetToode()\n        {\n            return _toode;\n        }\n\n        \/\/ GET: toode\/suurenda-hinda\n        &#91;HttpGet(\"suurenda-hinda\")&#93;\n        public Toode SuurendaHinda()\n        {\n            _toode.Price = _toode.Price + 1;\n            return _toode;\n        }\n    }\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=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F97583\">using<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Microsoft<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">AspNetCore<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Http<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">using<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Microsoft<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">AspNetCore<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Mvc<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">using<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Veeb_TARpv23<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Models<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">namespace<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Veeb_TARpv23<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Controllers<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    [<\/span><span style=\"color: #B392F0\">Route<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;&#91;controller&#93;&quot;<\/span><span style=\"color: #E1E4E8\">)]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    &#91;<\/span><span style=\"color: #B392F0\">ApiController<\/span><span style=\"color: #E1E4E8\">&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">class<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">ToodeController<\/span><span style=\"color: #E1E4E8\"> : <\/span><span style=\"color: #B392F0\">ControllerBase<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">private<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">static<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">_toode<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">new<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #79B8FF\">1<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #9ECBFF\">&quot;Koola&quot;<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #79B8FF\">1.5<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #79B8FF\">true<\/span><span style=\"color: #E1E4E8\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">        \/\/ GET: toode<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &#91;<\/span><span style=\"color: #B392F0\">HttpGet<\/span><span style=\"color: #E1E4E8\">&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">GetToode<\/span><span style=\"color: #E1E4E8\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> _toode;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">        \/\/ GET: toode\/suurenda-hinda<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &#91;<\/span><span style=\"color: #B392F0\">HttpGet<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;suurenda-hinda&quot;<\/span><span style=\"color: #E1E4E8\">)&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">SuurendaHinda<\/span><span style=\"color: #E1E4E8\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            _toode.Price <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> _toode.Price <\/span><span style=\"color: #F97583\">+<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">1<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> _toode;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>2.12. Mine testimiseks <code>localhost:[port]\/Toode<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-18\"><img loading=\"lazy\" decoding=\"async\" width=\"859\" height=\"1024\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/987059C3-A847-42B8-B707-A397B4AA218F-859x1024.png\" alt=\"\" class=\"wp-image-2459\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/987059C3-A847-42B8-B707-A397B4AA218F-859x1024.png 859w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/987059C3-A847-42B8-B707-A397B4AA218F-252x300.png 252w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/987059C3-A847-42B8-B707-A397B4AA218F-768x916.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/987059C3-A847-42B8-B707-A397B4AA218F-126x150.png 126w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/987059C3-A847-42B8-B707-A397B4AA218F.png 960w\" sizes=\"auto, (max-width: 859px) 100vw, 859px\" \/><\/figure>\n\n\n\n<p>2.13. Mine <code>localhost:[port]\/Toode\/suurenda-hinda<\/code>, et n\u00e4ha, kas hind muutub<\/p>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-19\"><img loading=\"lazy\" decoding=\"async\" width=\"859\" height=\"1024\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/9853B945-D59F-4F03-BB21-C5BB92B6AEFE-859x1024.png\" alt=\"\" class=\"wp-image-2464\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/9853B945-D59F-4F03-BB21-C5BB92B6AEFE-859x1024.png 859w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/9853B945-D59F-4F03-BB21-C5BB92B6AEFE-252x300.png 252w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/9853B945-D59F-4F03-BB21-C5BB92B6AEFE-768x916.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/9853B945-D59F-4F03-BB21-C5BB92B6AEFE-126x150.png 126w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/9853B945-D59F-4F03-BB21-C5BB92B6AEFE.png 960w\" sizes=\"auto, (max-width: 859px) 100vw, 859px\" \/><\/figure>\n\n\n\n<p>2.14. Loo uus Controller ja nimeta see <code>TootedController.cs<\/code>, kirjuta sisse see kood:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#e1e4e8;--cbp-line-number-width:calc(2 * 0.6 * 1rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2f363c;color:#d3d7dd\">C#<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;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>using Microsoft.AspNetCore.Http;\nusing Microsoft.AspNetCore.Mvc;\nusing Veeb_TARpv23.Models;\n\nnamespace Veeb_TARpv23.Controllers\n{\n    &#91;ApiController&#93;\n    [Route(\"&#91;controller&#93;\")]\n    public class TootedController : ControllerBase\n    {\n        private static List&lt;Toode> _tooted = new List&lt;Toode>{\n        new Toode(1,\"Koola\", 1.5, true),\n        new Toode(2,\"Fanta\", 1.0, false),\n        new Toode(3,\"Sprite\", 1.7, true),\n        new Toode(4,\"Vichy\", 2.0, true),\n        new Toode(5,\"Vitamin well\", 2.5, true)\n        };\n\n\n        \/\/ https:\/\/localhost:7052\/tooted\n        &#91;HttpGet&#93;\n        public List&lt;Toode> Get()\n        {\n            return _tooted;\n        }\n\n        &#91;HttpGet(\"kustuta\/{index}\")&#93;\n        public List&lt;Toode> Delete(int index)\n        {\n            _tooted.RemoveAt(index);\n            return _tooted;\n        }\n\n        &#91;HttpGet(\"kustuta2\/{index}\")&#93;\n        public string Delete2(int index)\n        {\n            _tooted.RemoveAt(index);\n            return \"Kustutatud!\";\n        }\n\n        &#91;HttpGet(\"lisa\/{id}\/{nimi}\/{hind}\/{aktiivne}\")&#93;\n        public List&lt;Toode> Add(int id, string nimi, double hind, bool aktiivne)\n        {\n            Toode toode = new Toode(id, nimi, hind, aktiivne);\n            _tooted.Add(toode);\n            return _tooted;\n        }\n\n        &#91;HttpGet(\"lisa\")&#93; \/\/ GET \/tooted\/lisa?id=1&amp;nimi=Koola&amp;hind=1.5&amp;aktiivne=true\n        public List&lt;Toode> Add2(&#91;FromQuery&#93; int id, &#91;FromQuery&#93; string nimi, &#91;FromQuery&#93; double hind, &#91;FromQuery&#93; bool aktiivne)\n        {\n            Toode toode = new Toode(id, nimi, hind, aktiivne);\n            _tooted.Add(toode);\n            return _tooted;\n        }\n\n        &#91;HttpGet(\"hind-dollaritesse\/{kurss}\")&#93; \/\/ GET \/tooted\/hind-dollaritesse\/1.5\n        public List&lt;Toode> Dollaritesse(double kurss)\n        {\n            for (int i = 0; i &lt; _tooted.Count; i++)\n            {\n                _tooted&#91;i&#93;.Price = _tooted&#91;i&#93;.Price * kurss;\n            }\n            return _tooted;\n        }\n\n        \/\/ v\u00f5i foreachina:\n\n        &#91;HttpGet(\"hind-dollaritesse2\/{kurss}\")&#93; \/\/ GET \/tooted\/hind-dollaritesse2\/1.5\n        public List&lt;Toode> Dollaritesse2(double kurss)\n        {\n            foreach (var t in _tooted)\n            {\n                t.Price = t.Price * kurss;\n            }\n\n            return _tooted;\n        }\n    }\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=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F97583\">using<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Microsoft<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">AspNetCore<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Http<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">using<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Microsoft<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">AspNetCore<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Mvc<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">using<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Veeb_TARpv23<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Models<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">namespace<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Veeb_TARpv23<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Controllers<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    &#91;<\/span><span style=\"color: #B392F0\">ApiController<\/span><span style=\"color: #E1E4E8\">&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    [<\/span><span style=\"color: #B392F0\">Route<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;&#91;controller&#93;&quot;<\/span><span style=\"color: #E1E4E8\">)]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">class<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">TootedController<\/span><span style=\"color: #E1E4E8\"> : <\/span><span style=\"color: #B392F0\">ControllerBase<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">private<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">static<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">List<\/span><span style=\"color: #E1E4E8\">&lt;<\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\">&gt; <\/span><span style=\"color: #B392F0\">_tooted<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">new<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">List<\/span><span style=\"color: #E1E4E8\">&lt;<\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\">&gt;{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">new<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #79B8FF\">1<\/span><span style=\"color: #E1E4E8\">,<\/span><span style=\"color: #9ECBFF\">&quot;Koola&quot;<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #79B8FF\">1.5<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #79B8FF\">true<\/span><span style=\"color: #E1E4E8\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">new<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #79B8FF\">2<\/span><span style=\"color: #E1E4E8\">,<\/span><span style=\"color: #9ECBFF\">&quot;Fanta&quot;<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #79B8FF\">1.0<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #79B8FF\">false<\/span><span style=\"color: #E1E4E8\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">new<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #79B8FF\">3<\/span><span style=\"color: #E1E4E8\">,<\/span><span style=\"color: #9ECBFF\">&quot;Sprite&quot;<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #79B8FF\">1.7<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #79B8FF\">true<\/span><span style=\"color: #E1E4E8\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">new<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #79B8FF\">4<\/span><span style=\"color: #E1E4E8\">,<\/span><span style=\"color: #9ECBFF\">&quot;Vichy&quot;<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #79B8FF\">2.0<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #79B8FF\">true<\/span><span style=\"color: #E1E4E8\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">new<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #79B8FF\">5<\/span><span style=\"color: #E1E4E8\">,<\/span><span style=\"color: #9ECBFF\">&quot;Vitamin well&quot;<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #79B8FF\">2.5<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #79B8FF\">true<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        };<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">        \/\/ https:\/\/localhost:7052\/tooted<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &#91;<\/span><span style=\"color: #B392F0\">HttpGet<\/span><span style=\"color: #E1E4E8\">&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">List<\/span><span style=\"color: #E1E4E8\">&lt;<\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\">&gt; <\/span><span style=\"color: #B392F0\">Get<\/span><span style=\"color: #E1E4E8\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> _tooted;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &#91;<\/span><span style=\"color: #B392F0\">HttpGet<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;kustuta\/{index}&quot;<\/span><span style=\"color: #E1E4E8\">)&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">List<\/span><span style=\"color: #E1E4E8\">&lt;<\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\">&gt; <\/span><span style=\"color: #B392F0\">Delete<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #F97583\">int<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">index<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            _tooted.<\/span><span style=\"color: #B392F0\">RemoveAt<\/span><span style=\"color: #E1E4E8\">(index);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> _tooted;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &#91;<\/span><span style=\"color: #B392F0\">HttpGet<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;kustuta2\/{index}&quot;<\/span><span style=\"color: #E1E4E8\">)&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">string<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Delete2<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #F97583\">int<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">index<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            _tooted.<\/span><span style=\"color: #B392F0\">RemoveAt<\/span><span style=\"color: #E1E4E8\">(index);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&quot;Kustutatud!&quot;<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &#91;<\/span><span style=\"color: #B392F0\">HttpGet<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;lisa\/{id}\/{nimi}\/{hind}\/{aktiivne}&quot;<\/span><span style=\"color: #E1E4E8\">)&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">List<\/span><span style=\"color: #E1E4E8\">&lt;<\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\">&gt; <\/span><span style=\"color: #B392F0\">Add<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #F97583\">int<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">id<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #F97583\">string<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">nimi<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #F97583\">double<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">hind<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #F97583\">bool<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">aktiivne<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">toode<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">new<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\">(id, nimi, hind, aktiivne);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            _tooted.<\/span><span style=\"color: #B392F0\">Add<\/span><span style=\"color: #E1E4E8\">(toode);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> _tooted;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &#91;<\/span><span style=\"color: #B392F0\">HttpGet<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;lisa&quot;<\/span><span style=\"color: #E1E4E8\">)&#93; <\/span><span style=\"color: #6A737D\">\/\/ GET \/tooted\/lisa?id=1&amp;nimi=Koola&amp;hind=1.5&amp;aktiivne=true<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">List<\/span><span style=\"color: #E1E4E8\">&lt;<\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\">&gt; <\/span><span style=\"color: #B392F0\">Add2<\/span><span style=\"color: #E1E4E8\">(&#91;<\/span><span style=\"color: #B392F0\">FromQuery<\/span><span style=\"color: #E1E4E8\">&#93; <\/span><span style=\"color: #F97583\">int<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">id<\/span><span style=\"color: #E1E4E8\">, &#91;<\/span><span style=\"color: #B392F0\">FromQuery<\/span><span style=\"color: #E1E4E8\">&#93; <\/span><span style=\"color: #F97583\">string<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">nimi<\/span><span style=\"color: #E1E4E8\">, &#91;<\/span><span style=\"color: #B392F0\">FromQuery<\/span><span style=\"color: #E1E4E8\">&#93; <\/span><span style=\"color: #F97583\">double<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">hind<\/span><span style=\"color: #E1E4E8\">, &#91;<\/span><span style=\"color: #B392F0\">FromQuery<\/span><span style=\"color: #E1E4E8\">&#93; <\/span><span style=\"color: #F97583\">bool<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">aktiivne<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">toode<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">new<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\">(id, nimi, hind, aktiivne);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            _tooted.<\/span><span style=\"color: #B392F0\">Add<\/span><span style=\"color: #E1E4E8\">(toode);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> _tooted;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &#91;<\/span><span style=\"color: #B392F0\">HttpGet<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;hind-dollaritesse\/{kurss}&quot;<\/span><span style=\"color: #E1E4E8\">)&#93; <\/span><span style=\"color: #6A737D\">\/\/ GET \/tooted\/hind-dollaritesse\/1.5<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">List<\/span><span style=\"color: #E1E4E8\">&lt;<\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\">&gt; <\/span><span style=\"color: #B392F0\">Dollaritesse<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #F97583\">double<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">kurss<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">for<\/span><span style=\"color: #E1E4E8\"> (<\/span><span style=\"color: #F97583\">int<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">i<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">0<\/span><span style=\"color: #E1E4E8\">; i <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #E1E4E8\"> _tooted.Count; i<\/span><span style=\"color: #F97583\">++<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                _tooted&#91;i&#93;.Price <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> _tooted&#91;i&#93;.Price <\/span><span style=\"color: #F97583\">*<\/span><span style=\"color: #E1E4E8\"> kurss;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> _tooted;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">        \/\/ v\u00f5i foreachina:<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &#91;<\/span><span style=\"color: #B392F0\">HttpGet<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;hind-dollaritesse2\/{kurss}&quot;<\/span><span style=\"color: #E1E4E8\">)&#93; <\/span><span style=\"color: #6A737D\">\/\/ GET \/tooted\/hind-dollaritesse2\/1.5<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">List<\/span><span style=\"color: #E1E4E8\">&lt;<\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\">&gt; <\/span><span style=\"color: #B392F0\">Dollaritesse2<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #F97583\">double<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">kurss<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">foreach<\/span><span style=\"color: #E1E4E8\"> (<\/span><span style=\"color: #F97583\">var<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">t<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">in<\/span><span style=\"color: #E1E4E8\"> _tooted)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                t.Price <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> t.Price <\/span><span style=\"color: #F97583\">*<\/span><span style=\"color: #E1E4E8\"> kurss;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> _tooted;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>2.15. Testi endpoint&#8217;e:<\/p>\n\n\n\n<p>2.15.1. <code>localhost:[port]\/Tooted<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-20\"><img loading=\"lazy\" decoding=\"async\" width=\"859\" height=\"1024\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/040A5E35-4998-4030-A4AB-2F5E438C543F-859x1024.png\" alt=\"\" class=\"wp-image-2470\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/040A5E35-4998-4030-A4AB-2F5E438C543F-859x1024.png 859w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/040A5E35-4998-4030-A4AB-2F5E438C543F-252x300.png 252w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/040A5E35-4998-4030-A4AB-2F5E438C543F-768x916.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/040A5E35-4998-4030-A4AB-2F5E438C543F-126x150.png 126w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/040A5E35-4998-4030-A4AB-2F5E438C543F.png 960w\" sizes=\"auto, (max-width: 859px) 100vw, 859px\" \/><\/figure>\n\n\n\n<p>2.15.2. <code>localhost:[port]\/Tooted\/kustuta\/[ID]<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-21\"><img loading=\"lazy\" decoding=\"async\" width=\"853\" height=\"1024\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/265404A3-29C5-4E74-BDA3-B4A7F51C5778-853x1024.png\" alt=\"\" class=\"wp-image-2474\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/265404A3-29C5-4E74-BDA3-B4A7F51C5778-853x1024.png 853w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/265404A3-29C5-4E74-BDA3-B4A7F51C5778-250x300.png 250w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/265404A3-29C5-4E74-BDA3-B4A7F51C5778-768x922.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/265404A3-29C5-4E74-BDA3-B4A7F51C5778-125x150.png 125w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/265404A3-29C5-4E74-BDA3-B4A7F51C5778.png 960w\" sizes=\"auto, (max-width: 853px) 100vw, 853px\" \/><\/figure>\n\n\n\n<p>2.15.3. <code>localhost:[port]\/Tooted\/kustuta2\/[ID]<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-22\"><img loading=\"lazy\" decoding=\"async\" width=\"853\" height=\"1024\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/71A9F6CB-A144-4298-82DB-E39EE760CF31-853x1024.png\" alt=\"\" class=\"wp-image-2477\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/71A9F6CB-A144-4298-82DB-E39EE760CF31-853x1024.png 853w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/71A9F6CB-A144-4298-82DB-E39EE760CF31-250x300.png 250w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/71A9F6CB-A144-4298-82DB-E39EE760CF31-768x922.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/71A9F6CB-A144-4298-82DB-E39EE760CF31-125x150.png 125w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/71A9F6CB-A144-4298-82DB-E39EE760CF31.png 960w\" sizes=\"auto, (max-width: 853px) 100vw, 853px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-23\"><img loading=\"lazy\" decoding=\"async\" width=\"853\" height=\"1024\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/43E2392C-503A-4FAF-8BA7-46A8183C360E-853x1024.png\" alt=\"\" class=\"wp-image-2478\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/43E2392C-503A-4FAF-8BA7-46A8183C360E-853x1024.png 853w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/43E2392C-503A-4FAF-8BA7-46A8183C360E-250x300.png 250w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/43E2392C-503A-4FAF-8BA7-46A8183C360E-768x922.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/43E2392C-503A-4FAF-8BA7-46A8183C360E-125x150.png 125w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/43E2392C-503A-4FAF-8BA7-46A8183C360E.png 960w\" sizes=\"auto, (max-width: 853px) 100vw, 853px\" \/><\/figure>\n\n\n\n<p>2.15.4. <code>localhost:[port]\/Tooted\/lisa\/[ID]\/[Nimi]\/[Hind]\/[Aktiivne]<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-24\"><img loading=\"lazy\" decoding=\"async\" width=\"853\" height=\"1024\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/61DBA799-B94F-4B93-BD2F-DA87FD3E3C18-853x1024.png\" alt=\"\" class=\"wp-image-2482\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/61DBA799-B94F-4B93-BD2F-DA87FD3E3C18-853x1024.png 853w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/61DBA799-B94F-4B93-BD2F-DA87FD3E3C18-250x300.png 250w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/61DBA799-B94F-4B93-BD2F-DA87FD3E3C18-768x922.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/61DBA799-B94F-4B93-BD2F-DA87FD3E3C18-125x150.png 125w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/61DBA799-B94F-4B93-BD2F-DA87FD3E3C18.png 960w\" sizes=\"auto, (max-width: 853px) 100vw, 853px\" \/><\/figure>\n\n\n\n<p>2.15.5. <code>localhost:[port]\/Tooted\/lisa?id=<code>[ID]<\/code>&amp;nimi=<code>[Nimi]<\/code>&amp;hind=<code>[Hind]<\/code>&amp;aktiivne=<code>[Aktiivne]<\/code><\/code><\/p>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-25\"><img loading=\"lazy\" decoding=\"async\" width=\"853\" height=\"1024\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/7DE3B8CF-82BF-4429-888B-D40DBCBB5599-853x1024.png\" alt=\"\" class=\"wp-image-2484\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/7DE3B8CF-82BF-4429-888B-D40DBCBB5599-853x1024.png 853w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/7DE3B8CF-82BF-4429-888B-D40DBCBB5599-250x300.png 250w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/7DE3B8CF-82BF-4429-888B-D40DBCBB5599-768x922.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/7DE3B8CF-82BF-4429-888B-D40DBCBB5599-125x150.png 125w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/7DE3B8CF-82BF-4429-888B-D40DBCBB5599.png 960w\" sizes=\"auto, (max-width: 853px) 100vw, 853px\" \/><\/figure>\n\n\n\n<p>2.15.6. <code>localhost:[port]\/Tooted\/hind-dollaritesse\/[Kurss]<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-26\"><img loading=\"lazy\" decoding=\"async\" width=\"853\" height=\"1024\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/B396DF27-9EA5-4BF6-9172-B78CA13B9C65-853x1024.png\" alt=\"\" class=\"wp-image-2489\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/B396DF27-9EA5-4BF6-9172-B78CA13B9C65-853x1024.png 853w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/B396DF27-9EA5-4BF6-9172-B78CA13B9C65-250x300.png 250w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/B396DF27-9EA5-4BF6-9172-B78CA13B9C65-768x922.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/B396DF27-9EA5-4BF6-9172-B78CA13B9C65-125x150.png 125w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/B396DF27-9EA5-4BF6-9172-B78CA13B9C65.png 960w\" sizes=\"auto, (max-width: 853px) 100vw, 853px\" \/><\/figure>\n\n\n\n<p>2.15.7. <code>localhost:[port]\/Tooted\/hind-dollaritesse2\/[Kurss]<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-27\"><img loading=\"lazy\" decoding=\"async\" width=\"853\" height=\"1024\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/EFD1196E-CB40-4F8C-85B6-16F1F8B66DBB-853x1024.png\" alt=\"\" class=\"wp-image-2491\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/EFD1196E-CB40-4F8C-85B6-16F1F8B66DBB-853x1024.png 853w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/EFD1196E-CB40-4F8C-85B6-16F1F8B66DBB-250x300.png 250w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/EFD1196E-CB40-4F8C-85B6-16F1F8B66DBB-768x922.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/EFD1196E-CB40-4F8C-85B6-16F1F8B66DBB-125x150.png 125w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/09\/EFD1196E-CB40-4F8C-85B6-16F1F8B66DBB.png 960w\" sizes=\"auto, (max-width: 853px) 100vw, 853px\" \/><\/figure>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li class=\"has-x-large-font-size\"><strong>Frontend<\/strong><\/li>\n<\/ol>\n\n\n\n<p>3.1. Loo eraldi projekt nimega frontend, kasutades k\u00e4sku <code>npx create-react-app frontend<\/code>, veendu, et npm on installitud<\/p>\n\n\n\n<figure class=\"wp-block-image size-full wp-duotone-unset-28\"><img loading=\"lazy\" decoding=\"async\" width=\"699\" height=\"429\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-1.png\" alt=\"\" class=\"wp-image-2540\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-1.png 699w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-1-300x184.png 300w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-1-150x92.png 150w\" sizes=\"auto, (max-width: 699px) 100vw, 699px\" \/><\/figure>\n\n\n\n<p>3.2. Et testida, kas projekt loodi edukalt, mine k\u00e4suga cd projekti kausta ja sisesta <code>npm start<\/code>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-29\"><img loading=\"lazy\" decoding=\"async\" width=\"912\" height=\"1024\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-3-912x1024.png\" alt=\"\" class=\"wp-image-2544\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-3-912x1024.png 912w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-3-267x300.png 267w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-3-768x863.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-3-134x150.png 134w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-3.png 1282w\" sizes=\"auto, (max-width: 912px) 100vw, 912px\" \/><\/figure>\n\n\n\n<p>3.3. Sisesta see kood ja vaata, kas see t\u00f6\u00f6tab. <code>App.js<\/code>:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#e1e4e8;--cbp-line-number-width:calc(2 * 0.6 * 1rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2f363c;color:#d3d7dd\">JavaScript<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;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>import { useEffect, useRef, useState } from 'react';\nimport '.\/App.css';\n\nfunction App() {\n  const &#91;tooted, setTooted&#93; = useState([]);\n\n  useEffect(() => {\n    fetch(\"https:\/\/localhost:4444\/tooted\")\n      .then(res => res.json())\n      .then(json => setTooted(json));\n  }, []);\n\n  return (\n    &lt;div className=\"App\">\n      {tooted.map(toode => \n        &lt;div>\n          &lt;div>{toode.id}&lt;\/div>\n          &lt;div>{toode.name}&lt;\/div>\n          &lt;div>{toode.price.toFixed(2)}&lt;\/div>\n        &lt;\/div>)}\n    &lt;\/div>\n  );\n}\n\nexport default App;<\/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=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F97583\">import<\/span><span style=\"color: #E1E4E8\"> { useEffect, useRef, useState } <\/span><span style=\"color: #F97583\">from<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&#39;react&#39;<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">import<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&#39;.\/App.css&#39;<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">function<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">App<\/span><span style=\"color: #E1E4E8\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">const<\/span><span style=\"color: #E1E4E8\"> &#91;<\/span><span style=\"color: #79B8FF\">tooted<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #79B8FF\">setTooted<\/span><span style=\"color: #E1E4E8\">&#93; <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">useState<\/span><span style=\"color: #E1E4E8\">([]);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #B392F0\">useEffect<\/span><span style=\"color: #E1E4E8\">(() <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #B392F0\">fetch<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;https:\/\/localhost:4444\/tooted&quot;<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      .<\/span><span style=\"color: #B392F0\">then<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #FFAB70\">res<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> res.<\/span><span style=\"color: #B392F0\">json<\/span><span style=\"color: #E1E4E8\">())<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      .<\/span><span style=\"color: #B392F0\">then<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #FFAB70\">json<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">setTooted<\/span><span style=\"color: #E1E4E8\">(json));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  }, []);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    &lt;<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">className<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #9ECBFF\">&quot;App&quot;<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      {tooted.<\/span><span style=\"color: #B392F0\">map<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #FFAB70\">toode<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &lt;<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">          &lt;<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\">&gt;{toode.id}&lt;\/<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">          &lt;<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\">&gt;{toode.name}&lt;\/<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">          &lt;<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\">&gt;{toode.price.<\/span><span style=\"color: #B392F0\">toFixed<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #79B8FF\">2<\/span><span style=\"color: #E1E4E8\">)}&lt;\/<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &lt;\/<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\">&gt;)}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    &lt;\/<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  );<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">export<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">default<\/span><span style=\"color: #E1E4E8\"> App;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>3.3.1. Veendu, et \u00f5ige port on kirjutatud faili <code>launchSettings.json<\/code>:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#e1e4e8;--cbp-line-number-width:calc(2 * 0.6 * 1rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2f363c;color:#d3d7dd\">JSON<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;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>{\n  \"$schema\": \"https:\/\/json.schemastore.org\/launchsettings.json\",\n  \"iisSettings\": {\n    \"windowsAuthentication\": false,\n    \"anonymousAuthentication\": true,\n    \"iisExpress\": {\n      \"applicationUrl\": \"http:\/\/localhost:53941\",\n      \"sslPort\": 44380\n    }\n  },\n  \"profiles\": {\n    \"Veeb_TARpv23\": {\n      \"commandName\": \"Project\",\n      \"dotnetRunMessages\": true,\n      \"launchBrowser\": true,\n      \"launchUrl\": \"swagger\",\n      \"applicationUrl\": \"https:\/\/localhost:4444;http:\/\/localhost:5028\",\n      \"environmentVariables\": {\n        \"ASPNETCORE_ENVIRONMENT\": \"Development\"\n      }\n    },\n    \"IIS Express\": {\n      \"commandName\": \"IISExpress\",\n      \"launchBrowser\": true,\n      \"launchUrl\": \"swagger\",\n      \"environmentVariables\": {\n        \"ASPNETCORE_ENVIRONMENT\": \"Development\"\n      }\n    }\n  }\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=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #E1E4E8\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #79B8FF\">&quot;$schema&quot;<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">&quot;https:\/\/json.schemastore.org\/launchsettings.json&quot;<\/span><span style=\"color: #E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #79B8FF\">&quot;iisSettings&quot;<\/span><span style=\"color: #E1E4E8\">: {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #79B8FF\">&quot;windowsAuthentication&quot;<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #79B8FF\">false<\/span><span style=\"color: #E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #79B8FF\">&quot;anonymousAuthentication&quot;<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #79B8FF\">true<\/span><span style=\"color: #E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #79B8FF\">&quot;iisExpress&quot;<\/span><span style=\"color: #E1E4E8\">: {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      <\/span><span style=\"color: #79B8FF\">&quot;applicationUrl&quot;<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">&quot;http:\/\/localhost:53941&quot;<\/span><span style=\"color: #E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      <\/span><span style=\"color: #79B8FF\">&quot;sslPort&quot;<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #79B8FF\">44380<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  },<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #79B8FF\">&quot;profiles&quot;<\/span><span style=\"color: #E1E4E8\">: {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #79B8FF\">&quot;Veeb_TARpv23&quot;<\/span><span style=\"color: #E1E4E8\">: {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      <\/span><span style=\"color: #79B8FF\">&quot;commandName&quot;<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">&quot;Project&quot;<\/span><span style=\"color: #E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      <\/span><span style=\"color: #79B8FF\">&quot;dotnetRunMessages&quot;<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #79B8FF\">true<\/span><span style=\"color: #E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      <\/span><span style=\"color: #79B8FF\">&quot;launchBrowser&quot;<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #79B8FF\">true<\/span><span style=\"color: #E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      <\/span><span style=\"color: #79B8FF\">&quot;launchUrl&quot;<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">&quot;swagger&quot;<\/span><span style=\"color: #E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      <\/span><span style=\"color: #79B8FF\">&quot;applicationUrl&quot;<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">&quot;https:\/\/localhost:4444;http:\/\/localhost:5028&quot;<\/span><span style=\"color: #E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      <\/span><span style=\"color: #79B8FF\">&quot;environmentVariables&quot;<\/span><span style=\"color: #E1E4E8\">: {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #79B8FF\">&quot;ASPNETCORE_ENVIRONMENT&quot;<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">&quot;Development&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    },<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #79B8FF\">&quot;IIS Express&quot;<\/span><span style=\"color: #E1E4E8\">: {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      <\/span><span style=\"color: #79B8FF\">&quot;commandName&quot;<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">&quot;IISExpress&quot;<\/span><span style=\"color: #E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      <\/span><span style=\"color: #79B8FF\">&quot;launchBrowser&quot;<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #79B8FF\">true<\/span><span style=\"color: #E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      <\/span><span style=\"color: #79B8FF\">&quot;launchUrl&quot;<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">&quot;swagger&quot;<\/span><span style=\"color: #E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      <\/span><span style=\"color: #79B8FF\">&quot;environmentVariables&quot;<\/span><span style=\"color: #E1E4E8\">: {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #79B8FF\">&quot;ASPNETCORE_ENVIRONMENT&quot;<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">&quot;Development&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>3.3.2. Kasuta kindlasti CORS-i, et v\u00e4ltida probleeme. Seda saad teha, muutes faili <code>Program.cs<\/code> j\u00e4rgmiselt:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#e1e4e8;--cbp-line-number-width:calc(2 * 0.6 * 1rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2f363c;color:#d3d7dd\">C#<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;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>var builder = WebApplication.CreateBuilder(args);\n\n\/\/ Add services to the container.\n\nbuilder.Services.AddControllers();\n\/\/ Learn more about configuring Swagger\/OpenAPI at https:\/\/aka.ms\/aspnetcore\/swashbuckle\nbuilder.Services.AddEndpointsApiExplorer();\nbuilder.Services.AddSwaggerGen();\n\nvar app = builder.Build();\n\n\/\/ Configure the HTTP request pipeline.\nif (app.Environment.IsDevelopment())\n{\n    app.UseSwagger();\n    app.UseSwaggerUI();\n}\n\napp.UseHttpsRedirection();\n\napp.UseCors(options => options\n    .WithOrigins(\"*\")\n    .AllowAnyMethod()\n    .AllowAnyHeader()\n);\n\napp.UseAuthorization();\n\napp.MapControllers();\n\napp.Run();<\/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=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F97583\">var<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">builder<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> WebApplication.<\/span><span style=\"color: #B392F0\">CreateBuilder<\/span><span style=\"color: #E1E4E8\">(args);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">\/\/ Add services to the container.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">builder.Services.<\/span><span style=\"color: #B392F0\">AddControllers<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">\/\/ Learn more about configuring Swagger\/OpenAPI at https:\/\/aka.ms\/aspnetcore\/swashbuckle<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">builder.Services.<\/span><span style=\"color: #B392F0\">AddEndpointsApiExplorer<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">builder.Services.<\/span><span style=\"color: #B392F0\">AddSwaggerGen<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">var<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">app<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> builder.<\/span><span style=\"color: #B392F0\">Build<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">\/\/ Configure the HTTP request pipeline.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">if<\/span><span style=\"color: #E1E4E8\"> (app.Environment.<\/span><span style=\"color: #B392F0\">IsDevelopment<\/span><span style=\"color: #E1E4E8\">())<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    app.<\/span><span style=\"color: #B392F0\">UseSwagger<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    app.<\/span><span style=\"color: #B392F0\">UseSwaggerUI<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">app.<\/span><span style=\"color: #B392F0\">UseHttpsRedirection<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">app.<\/span><span style=\"color: #B392F0\">UseCors<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #B392F0\">options<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> options<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    .<\/span><span style=\"color: #B392F0\">WithOrigins<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;*&quot;<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    .<\/span><span style=\"color: #B392F0\">AllowAnyMethod<\/span><span style=\"color: #E1E4E8\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    .<\/span><span style=\"color: #B392F0\">AllowAnyHeader<\/span><span style=\"color: #E1E4E8\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">app.<\/span><span style=\"color: #B392F0\">UseAuthorization<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">app.<\/span><span style=\"color: #B392F0\">MapControllers<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">app.<\/span><span style=\"color: #B392F0\">Run<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-30\"><img loading=\"lazy\" decoding=\"async\" width=\"938\" height=\"1024\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-4-938x1024.png\" alt=\"\" class=\"wp-image-2546\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-4-938x1024.png 938w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-4-275x300.png 275w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-4-768x838.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-4-137x150.png 137w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-4.png 1282w\" sizes=\"auto, (max-width: 938px) 100vw, 938px\" \/><\/figure>\n\n\n\n<p>3.4. Uuenda koodi uue funktsionaalsuse lisamiseks. <code>App.js<\/code>:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#e1e4e8;--cbp-line-number-width:calc(2 * 0.6 * 1rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2f363c;color:#d3d7dd\">JavaScript<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;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>import { useEffect, useRef, useState } from 'react';\nimport '.\/App.css';\n\nfunction App() {\n  const &#91;tooted, setTooted&#93; = useState([]);\n  const idRef = useRef();\n  const nameRef = useRef();\n  const priceRef = useRef();\n  const isActiveRef = useRef();\n  const &#91;isUsd, setUsd&#93; = useState(false);\n\n  useEffect(() => {\n    fetch(\"https:\/\/localhost:4444\/tooted\")\n      .then(res => res.json())\n      .then(json => setTooted(json));\n  }, []);\n\n  function kustuta(index) {\n    fetch(\"https:\/\/localhost:4444\/tooted\/kustuta\/\" + index)\n      .then(res => res.json())\n      .then(json => setTooted(json));\n  }\n\n  function lisa() {\n    fetch(`https:\/\/localhost:4444\/tooted\/lisa\/${Number(idRef.current.value)}\/${nameRef.current.value}\/${Number(priceRef.current.value)}\/${isActiveRef.current.checked}`)\n      .then(res => res.json())\n      .then(json => setTooted(json));\n  }\n\n  function dollariteks() {\n    const kurss = 1.1;\n    setUsd(true);\n    fetch(\"https:\/\/localhost:4444\/tooted\/hind-dollaritesse\/\" + kurss)\n      .then(res => res.json())\n      .then(json => setTooted(json));\n  }\n\n  function eurodeks() {\n    const kurss = 0.9091;\n    setUsd(false);\n    fetch(\"https:\/\/localhost:4444\/tooted\/hind-dollaritesse\/\" + kurss)\n      .then(res => res.json())\n      .then(json => setTooted(json));\n  }\n\n  return (\n    &lt;div className=\"App\">\n      &lt;label>ID&lt;\/label> &lt;br \/>\n      &lt;input ref={idRef} type=\"number\" \/> &lt;br \/>\n      &lt;label>name&lt;\/label> &lt;br \/>\n      &lt;input ref={nameRef} type=\"text\" \/> &lt;br \/>\n      &lt;label>price&lt;\/label> &lt;br \/>\n      &lt;input ref={priceRef} type=\"number\" \/> &lt;br \/>\n      &lt;label>isActive&lt;\/label> &lt;br \/>\n      &lt;input ref={isActiveRef} type=\"checkbox\" \/> &lt;br \/>\n      &lt;button onClick={() => lisa()}>Lisa&lt;\/button>\n      {tooted.map((toode, index) => \n        &lt;div>\n          &lt;div>{toode.id}&lt;\/div>\n          &lt;div>{toode.name}&lt;\/div>\n          &lt;div>{toode.price.toFixed(2)}&lt;\/div>\n          &lt;button onClick={() => kustuta(index)}>x&lt;\/button>\n        &lt;\/div>)}\n      {isUsd === false &amp;&amp; &lt;button onClick={() => dollariteks()}>Muuda dollariteks&lt;\/button>}\n      {isUsd === true &amp;&amp; &lt;button onClick={() => eurodeks()}>Muuda eurodeks&lt;\/button>}\n    &lt;\/div>\n  );\n}\n\nexport default App;<\/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=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F97583\">import<\/span><span style=\"color: #E1E4E8\"> { useEffect, useRef, useState } <\/span><span style=\"color: #F97583\">from<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&#39;react&#39;<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">import<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&#39;.\/App.css&#39;<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">function<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">App<\/span><span style=\"color: #E1E4E8\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">const<\/span><span style=\"color: #E1E4E8\"> &#91;<\/span><span style=\"color: #79B8FF\">tooted<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #79B8FF\">setTooted<\/span><span style=\"color: #E1E4E8\">&#93; <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">useState<\/span><span style=\"color: #E1E4E8\">([]);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">const<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">idRef<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">useRef<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">const<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">nameRef<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">useRef<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">const<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">priceRef<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">useRef<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">const<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">isActiveRef<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">useRef<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">const<\/span><span style=\"color: #E1E4E8\"> &#91;<\/span><span style=\"color: #79B8FF\">isUsd<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #79B8FF\">setUsd<\/span><span style=\"color: #E1E4E8\">&#93; <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">useState<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #79B8FF\">false<\/span><span style=\"color: #E1E4E8\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #B392F0\">useEffect<\/span><span style=\"color: #E1E4E8\">(() <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #B392F0\">fetch<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;https:\/\/localhost:4444\/tooted&quot;<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      .<\/span><span style=\"color: #B392F0\">then<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #FFAB70\">res<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> res.<\/span><span style=\"color: #B392F0\">json<\/span><span style=\"color: #E1E4E8\">())<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      .<\/span><span style=\"color: #B392F0\">then<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #FFAB70\">json<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">setTooted<\/span><span style=\"color: #E1E4E8\">(json));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  }, []);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">function<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">kustuta<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #FFAB70\">index<\/span><span style=\"color: #E1E4E8\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #B392F0\">fetch<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;https:\/\/localhost:4444\/tooted\/kustuta\/&quot;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">+<\/span><span style=\"color: #E1E4E8\"> index)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      .<\/span><span style=\"color: #B392F0\">then<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #FFAB70\">res<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> res.<\/span><span style=\"color: #B392F0\">json<\/span><span style=\"color: #E1E4E8\">())<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      .<\/span><span style=\"color: #B392F0\">then<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #FFAB70\">json<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">setTooted<\/span><span style=\"color: #E1E4E8\">(json));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">function<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">lisa<\/span><span style=\"color: #E1E4E8\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #B392F0\">fetch<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">`https:\/\/localhost:4444\/tooted\/lisa\/${<\/span><span style=\"color: #B392F0\">Number<\/span><span style=\"color: #9ECBFF\">(<\/span><span style=\"color: #E1E4E8\">idRef<\/span><span style=\"color: #9ECBFF\">.<\/span><span style=\"color: #E1E4E8\">current<\/span><span style=\"color: #9ECBFF\">.<\/span><span style=\"color: #E1E4E8\">value<\/span><span style=\"color: #9ECBFF\">)<\/span><span style=\"color: #9ECBFF\">}\/${<\/span><span style=\"color: #E1E4E8\">nameRef<\/span><span style=\"color: #9ECBFF\">.<\/span><span style=\"color: #E1E4E8\">current<\/span><span style=\"color: #9ECBFF\">.<\/span><span style=\"color: #E1E4E8\">value<\/span><span style=\"color: #9ECBFF\">}\/${<\/span><span style=\"color: #B392F0\">Number<\/span><span style=\"color: #9ECBFF\">(<\/span><span style=\"color: #E1E4E8\">priceRef<\/span><span style=\"color: #9ECBFF\">.<\/span><span style=\"color: #E1E4E8\">current<\/span><span style=\"color: #9ECBFF\">.<\/span><span style=\"color: #E1E4E8\">value<\/span><span style=\"color: #9ECBFF\">)<\/span><span style=\"color: #9ECBFF\">}\/${<\/span><span style=\"color: #E1E4E8\">isActiveRef<\/span><span style=\"color: #9ECBFF\">.<\/span><span style=\"color: #E1E4E8\">current<\/span><span style=\"color: #9ECBFF\">.<\/span><span style=\"color: #E1E4E8\">checked<\/span><span style=\"color: #9ECBFF\">}`<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      .<\/span><span style=\"color: #B392F0\">then<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #FFAB70\">res<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> res.<\/span><span style=\"color: #B392F0\">json<\/span><span style=\"color: #E1E4E8\">())<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      .<\/span><span style=\"color: #B392F0\">then<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #FFAB70\">json<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">setTooted<\/span><span style=\"color: #E1E4E8\">(json));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">function<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">dollariteks<\/span><span style=\"color: #E1E4E8\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #F97583\">const<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">kurss<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">1.1<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #B392F0\">setUsd<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #79B8FF\">true<\/span><span style=\"color: #E1E4E8\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #B392F0\">fetch<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;https:\/\/localhost:4444\/tooted\/hind-dollaritesse\/&quot;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">+<\/span><span style=\"color: #E1E4E8\"> kurss)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      .<\/span><span style=\"color: #B392F0\">then<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #FFAB70\">res<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> res.<\/span><span style=\"color: #B392F0\">json<\/span><span style=\"color: #E1E4E8\">())<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      .<\/span><span style=\"color: #B392F0\">then<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #FFAB70\">json<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">setTooted<\/span><span style=\"color: #E1E4E8\">(json));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">function<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">eurodeks<\/span><span style=\"color: #E1E4E8\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #F97583\">const<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">kurss<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">0.9091<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #B392F0\">setUsd<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #79B8FF\">false<\/span><span style=\"color: #E1E4E8\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #B392F0\">fetch<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;https:\/\/localhost:4444\/tooted\/hind-dollaritesse\/&quot;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">+<\/span><span style=\"color: #E1E4E8\"> kurss)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      .<\/span><span style=\"color: #B392F0\">then<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #FFAB70\">res<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> res.<\/span><span style=\"color: #B392F0\">json<\/span><span style=\"color: #E1E4E8\">())<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      .<\/span><span style=\"color: #B392F0\">then<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #FFAB70\">json<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">setTooted<\/span><span style=\"color: #E1E4E8\">(json));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    &lt;<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">className<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #9ECBFF\">&quot;App&quot;<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      &lt;<\/span><span style=\"color: #85E89D\">label<\/span><span style=\"color: #E1E4E8\">&gt;ID&lt;\/<\/span><span style=\"color: #85E89D\">label<\/span><span style=\"color: #E1E4E8\">&gt; &lt;<\/span><span style=\"color: #85E89D\">br<\/span><span style=\"color: #E1E4E8\"> \/&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      &lt;<\/span><span style=\"color: #85E89D\">input<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">ref<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">{idRef} <\/span><span style=\"color: #B392F0\">type<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #9ECBFF\">&quot;number&quot;<\/span><span style=\"color: #E1E4E8\"> \/&gt; &lt;<\/span><span style=\"color: #85E89D\">br<\/span><span style=\"color: #E1E4E8\"> \/&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      &lt;<\/span><span style=\"color: #85E89D\">label<\/span><span style=\"color: #E1E4E8\">&gt;name&lt;\/<\/span><span style=\"color: #85E89D\">label<\/span><span style=\"color: #E1E4E8\">&gt; &lt;<\/span><span style=\"color: #85E89D\">br<\/span><span style=\"color: #E1E4E8\"> \/&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      &lt;<\/span><span style=\"color: #85E89D\">input<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">ref<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">{nameRef} <\/span><span style=\"color: #B392F0\">type<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #9ECBFF\">&quot;text&quot;<\/span><span style=\"color: #E1E4E8\"> \/&gt; &lt;<\/span><span style=\"color: #85E89D\">br<\/span><span style=\"color: #E1E4E8\"> \/&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      &lt;<\/span><span style=\"color: #85E89D\">label<\/span><span style=\"color: #E1E4E8\">&gt;price&lt;\/<\/span><span style=\"color: #85E89D\">label<\/span><span style=\"color: #E1E4E8\">&gt; &lt;<\/span><span style=\"color: #85E89D\">br<\/span><span style=\"color: #E1E4E8\"> \/&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      &lt;<\/span><span style=\"color: #85E89D\">input<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">ref<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">{priceRef} <\/span><span style=\"color: #B392F0\">type<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #9ECBFF\">&quot;number&quot;<\/span><span style=\"color: #E1E4E8\"> \/&gt; &lt;<\/span><span style=\"color: #85E89D\">br<\/span><span style=\"color: #E1E4E8\"> \/&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      &lt;<\/span><span style=\"color: #85E89D\">label<\/span><span style=\"color: #E1E4E8\">&gt;isActive&lt;\/<\/span><span style=\"color: #85E89D\">label<\/span><span style=\"color: #E1E4E8\">&gt; &lt;<\/span><span style=\"color: #85E89D\">br<\/span><span style=\"color: #E1E4E8\"> \/&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      &lt;<\/span><span style=\"color: #85E89D\">input<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">ref<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">{isActiveRef} <\/span><span style=\"color: #B392F0\">type<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #9ECBFF\">&quot;checkbox&quot;<\/span><span style=\"color: #E1E4E8\"> \/&gt; &lt;<\/span><span style=\"color: #85E89D\">br<\/span><span style=\"color: #E1E4E8\"> \/&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      &lt;<\/span><span style=\"color: #85E89D\">button<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">onClick<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">{() <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">lisa<\/span><span style=\"color: #E1E4E8\">()}&gt;Lisa&lt;\/<\/span><span style=\"color: #85E89D\">button<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      {tooted.<\/span><span style=\"color: #B392F0\">map<\/span><span style=\"color: #E1E4E8\">((<\/span><span style=\"color: #FFAB70\">toode<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #FFAB70\">index<\/span><span style=\"color: #E1E4E8\">) <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &lt;<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">          &lt;<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\">&gt;{toode.id}&lt;\/<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">          &lt;<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\">&gt;{toode.name}&lt;\/<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">          &lt;<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\">&gt;{toode.price.<\/span><span style=\"color: #B392F0\">toFixed<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #79B8FF\">2<\/span><span style=\"color: #E1E4E8\">)}&lt;\/<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">          &lt;<\/span><span style=\"color: #85E89D\">button<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">onClick<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">{() <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">kustuta<\/span><span style=\"color: #E1E4E8\">(index)}&gt;x&lt;\/<\/span><span style=\"color: #85E89D\">button<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &lt;\/<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\">&gt;)}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      {isUsd <\/span><span style=\"color: #F97583\">===<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">false<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">&amp;&amp;<\/span><span style=\"color: #E1E4E8\"> &lt;<\/span><span style=\"color: #85E89D\">button<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">onClick<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">{() <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">dollariteks<\/span><span style=\"color: #E1E4E8\">()}&gt;Muuda dollariteks&lt;\/<\/span><span style=\"color: #85E89D\">button<\/span><span style=\"color: #E1E4E8\">&gt;}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      {isUsd <\/span><span style=\"color: #F97583\">===<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">true<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">&amp;&amp;<\/span><span style=\"color: #E1E4E8\"> &lt;<\/span><span style=\"color: #85E89D\">button<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">onClick<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">{() <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">eurodeks<\/span><span style=\"color: #E1E4E8\">()}&gt;Muuda eurodeks&lt;\/<\/span><span style=\"color: #85E89D\">button<\/span><span style=\"color: #E1E4E8\">&gt;}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    &lt;\/<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  );<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">export<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">default<\/span><span style=\"color: #E1E4E8\"> App;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-31\"><img loading=\"lazy\" decoding=\"async\" width=\"912\" height=\"1024\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-5-912x1024.png\" alt=\"\" class=\"wp-image-2553\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-5-912x1024.png 912w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-5-267x300.png 267w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-5-768x863.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-5-134x150.png 134w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-5.png 1282w\" sizes=\"auto, (max-width: 912px) 100vw, 912px\" \/><\/figure>\n\n\n\n<p>3.5. N\u00fc\u00fcd veendume, et CORS m\u00f5jutab ainult porti 3000:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#e1e4e8;--cbp-line-number-width:calc(2 * 0.6 * 1rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2f363c;color:#d3d7dd\">C#<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;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>var builder = WebApplication.CreateBuilder(args);\n\n\/\/ Add services to the container.\n\nbuilder.Services.AddControllers();\n\/\/ Learn more about configuring Swagger\/OpenAPI at https:\/\/aka.ms\/aspnetcore\/swashbuckle\nbuilder.Services.AddEndpointsApiExplorer();\nbuilder.Services.AddSwaggerGen();\n\nvar app = builder.Build();\n\n\/\/ Configure the HTTP request pipeline.\nif (app.Environment.IsDevelopment())\n{\n    app.UseSwagger();\n    app.UseSwaggerUI();\n}\n\napp.UseHttpsRedirection();\n\napp.UseCors(options => options\n    .WithOrigins(\"http:\/\/localhost:3000\")\n    .AllowAnyMethod()\n    .AllowAnyHeader()\n);\n\napp.UseAuthorization();\n\napp.MapControllers();\n\napp.Run();<\/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=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F97583\">var<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">builder<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> WebApplication.<\/span><span style=\"color: #B392F0\">CreateBuilder<\/span><span style=\"color: #E1E4E8\">(args);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">\/\/ Add services to the container.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">builder.Services.<\/span><span style=\"color: #B392F0\">AddControllers<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">\/\/ Learn more about configuring Swagger\/OpenAPI at https:\/\/aka.ms\/aspnetcore\/swashbuckle<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">builder.Services.<\/span><span style=\"color: #B392F0\">AddEndpointsApiExplorer<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">builder.Services.<\/span><span style=\"color: #B392F0\">AddSwaggerGen<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">var<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">app<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> builder.<\/span><span style=\"color: #B392F0\">Build<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">\/\/ Configure the HTTP request pipeline.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">if<\/span><span style=\"color: #E1E4E8\"> (app.Environment.<\/span><span style=\"color: #B392F0\">IsDevelopment<\/span><span style=\"color: #E1E4E8\">())<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    app.<\/span><span style=\"color: #B392F0\">UseSwagger<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    app.<\/span><span style=\"color: #B392F0\">UseSwaggerUI<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">app.<\/span><span style=\"color: #B392F0\">UseHttpsRedirection<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">app.<\/span><span style=\"color: #B392F0\">UseCors<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #B392F0\">options<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> options<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    .<\/span><span style=\"color: #B392F0\">WithOrigins<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;http:\/\/localhost:3000&quot;<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    .<\/span><span style=\"color: #B392F0\">AllowAnyMethod<\/span><span style=\"color: #E1E4E8\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    .<\/span><span style=\"color: #B392F0\">AllowAnyHeader<\/span><span style=\"color: #E1E4E8\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">app.<\/span><span style=\"color: #B392F0\">UseAuthorization<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">app.<\/span><span style=\"color: #B392F0\">MapControllers<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">app.<\/span><span style=\"color: #B392F0\">Run<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>3.6. Teeme oma meetodid korrektseks, asendades POST-i teiste meetoditega, <code>TootedController.cs<\/code>:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#e1e4e8;--cbp-line-number-width:calc(2 * 0.6 * 1rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2f363c;color:#d3d7dd\">C#<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;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>using Microsoft.AspNetCore.Mvc;\nusing Veeb_TARpv23.Models;\n\nnamespace Veeb_TARpv23.Controllers\n{\n    [Route(\"&#91;controller&#93;\")]\n    &#91;ApiController&#93;\n    public class TootedController : ControllerBase\n    {\n        private static List&lt;Toode> _tooted = new()\n        {\n            new Toode(1,\"Koola\", 1.5, true),\n            new Toode(2,\"Fanta\", 1.0, false),\n            new Toode(3,\"Sprite\", 1.7, true),\n            new Toode(4,\"Vichy\", 2.0, true),\n            new Toode(5,\"Vitamin well\", 2.5, true)\n        };\n\n        \/\/ GET https:\/\/localhost:4444\/tooted\n        &#91;HttpGet&#93;\n        public List&lt;Toode> Get()\n        {\n            return _tooted;\n        }\n\n        \/\/ DELETE https:\/\/localhost:4444\/tooted\/kustuta\/0\n        &#91;HttpDelete(\"kustuta\/{index}\")&#93;\n        public List&lt;Toode> Delete(int index)\n        {\n            _tooted.RemoveAt(index);\n            return _tooted;\n        }\n\n        &#91;HttpDelete(\"kustuta2\/{index}\")&#93;\n        public string Delete2(int index)\n        {\n            _tooted.RemoveAt(index);\n            return \"Kustutatud!\";\n        }\n\n        &#91;HttpPost(\"lisa\")&#93;\n        public List&lt;Toode> Add(&#91;FromBody&#93; Toode toode)\n        {\n            _tooted.Add(toode);\n            return _tooted;\n        }\n\n        \/\/ POST https:\/\/localhost:4444\/tooted\/lisa\/1\/Coca\/1.5\/true\n        &#91;HttpPost(\"lisa\/{id}\/{nimi}\/{hind}\/{aktiivne}\")&#93;\n        public List&lt;Toode> Add(int id, string nimi, double hind, bool aktiivne)\n        {\n            Toode toode = new Toode(id, nimi, hind, aktiivne);\n            _tooted.Add(toode);\n            return _tooted;\n        }\n\n        &#91;HttpPost(\"lisa2\")&#93;\n        public List&lt;Toode> Add2(int id, string nimi, double hind, bool aktiivne)\n        {\n            Toode toode = new Toode(id, nimi, hind, aktiivne);\n            _tooted.Add(toode);\n            return _tooted;\n        }\n\n        \/\/ PATCH https:\/\/localhost:4444\/tooted\/hind-dollaritesse\/1.5\n        &#91;HttpPatch(\"hind-dollaritesse\/{kurss}\")&#93; \n        public List&lt;Toode> UpdatePrices(double kurss)\n        {\n            for (int i = 0; i &lt; _tooted.Count; i++)\n            {\n                _tooted&#91;i&#93;.Price = _tooted&#91;i&#93;.Price * kurss;\n            }\n            return _tooted;\n        }\n    }\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=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F97583\">using<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Microsoft<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">AspNetCore<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Mvc<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">using<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Veeb_TARpv23<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Models<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">namespace<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Veeb_TARpv23<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Controllers<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    [<\/span><span style=\"color: #B392F0\">Route<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;&#91;controller&#93;&quot;<\/span><span style=\"color: #E1E4E8\">)]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    &#91;<\/span><span style=\"color: #B392F0\">ApiController<\/span><span style=\"color: #E1E4E8\">&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">class<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">TootedController<\/span><span style=\"color: #E1E4E8\"> : <\/span><span style=\"color: #B392F0\">ControllerBase<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">private<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">static<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">List<\/span><span style=\"color: #E1E4E8\">&lt;<\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\">&gt; <\/span><span style=\"color: #B392F0\">_tooted<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">new<\/span><span style=\"color: #E1E4E8\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">new<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #79B8FF\">1<\/span><span style=\"color: #E1E4E8\">,<\/span><span style=\"color: #9ECBFF\">&quot;Koola&quot;<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #79B8FF\">1.5<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #79B8FF\">true<\/span><span style=\"color: #E1E4E8\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">new<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #79B8FF\">2<\/span><span style=\"color: #E1E4E8\">,<\/span><span style=\"color: #9ECBFF\">&quot;Fanta&quot;<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #79B8FF\">1.0<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #79B8FF\">false<\/span><span style=\"color: #E1E4E8\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">new<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #79B8FF\">3<\/span><span style=\"color: #E1E4E8\">,<\/span><span style=\"color: #9ECBFF\">&quot;Sprite&quot;<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #79B8FF\">1.7<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #79B8FF\">true<\/span><span style=\"color: #E1E4E8\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">new<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #79B8FF\">4<\/span><span style=\"color: #E1E4E8\">,<\/span><span style=\"color: #9ECBFF\">&quot;Vichy&quot;<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #79B8FF\">2.0<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #79B8FF\">true<\/span><span style=\"color: #E1E4E8\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">new<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #79B8FF\">5<\/span><span style=\"color: #E1E4E8\">,<\/span><span style=\"color: #9ECBFF\">&quot;Vitamin well&quot;<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #79B8FF\">2.5<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #79B8FF\">true<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        };<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">        \/\/ GET https:\/\/localhost:4444\/tooted<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &#91;<\/span><span style=\"color: #B392F0\">HttpGet<\/span><span style=\"color: #E1E4E8\">&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">List<\/span><span style=\"color: #E1E4E8\">&lt;<\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\">&gt; <\/span><span style=\"color: #B392F0\">Get<\/span><span style=\"color: #E1E4E8\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> _tooted;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">        \/\/ DELETE https:\/\/localhost:4444\/tooted\/kustuta\/0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &#91;<\/span><span style=\"color: #B392F0\">HttpDelete<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;kustuta\/{index}&quot;<\/span><span style=\"color: #E1E4E8\">)&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">List<\/span><span style=\"color: #E1E4E8\">&lt;<\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\">&gt; <\/span><span style=\"color: #B392F0\">Delete<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #F97583\">int<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">index<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            _tooted.<\/span><span style=\"color: #B392F0\">RemoveAt<\/span><span style=\"color: #E1E4E8\">(index);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> _tooted;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &#91;<\/span><span style=\"color: #B392F0\">HttpDelete<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;kustuta2\/{index}&quot;<\/span><span style=\"color: #E1E4E8\">)&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">string<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Delete2<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #F97583\">int<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">index<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            _tooted.<\/span><span style=\"color: #B392F0\">RemoveAt<\/span><span style=\"color: #E1E4E8\">(index);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&quot;Kustutatud!&quot;<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &#91;<\/span><span style=\"color: #B392F0\">HttpPost<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;lisa&quot;<\/span><span style=\"color: #E1E4E8\">)&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">List<\/span><span style=\"color: #E1E4E8\">&lt;<\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\">&gt; <\/span><span style=\"color: #B392F0\">Add<\/span><span style=\"color: #E1E4E8\">(&#91;<\/span><span style=\"color: #B392F0\">FromBody<\/span><span style=\"color: #E1E4E8\">&#93; <\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">toode<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            _tooted.<\/span><span style=\"color: #B392F0\">Add<\/span><span style=\"color: #E1E4E8\">(toode);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> _tooted;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">        \/\/ POST https:\/\/localhost:4444\/tooted\/lisa\/1\/Coca\/1.5\/true<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &#91;<\/span><span style=\"color: #B392F0\">HttpPost<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;lisa\/{id}\/{nimi}\/{hind}\/{aktiivne}&quot;<\/span><span style=\"color: #E1E4E8\">)&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">List<\/span><span style=\"color: #E1E4E8\">&lt;<\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\">&gt; <\/span><span style=\"color: #B392F0\">Add<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #F97583\">int<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">id<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #F97583\">string<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">nimi<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #F97583\">double<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">hind<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #F97583\">bool<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">aktiivne<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">toode<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">new<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\">(id, nimi, hind, aktiivne);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            _tooted.<\/span><span style=\"color: #B392F0\">Add<\/span><span style=\"color: #E1E4E8\">(toode);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> _tooted;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &#91;<\/span><span style=\"color: #B392F0\">HttpPost<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;lisa2&quot;<\/span><span style=\"color: #E1E4E8\">)&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">List<\/span><span style=\"color: #E1E4E8\">&lt;<\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\">&gt; <\/span><span style=\"color: #B392F0\">Add2<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #F97583\">int<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">id<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #F97583\">string<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">nimi<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #F97583\">double<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">hind<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #F97583\">bool<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">aktiivne<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">toode<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">new<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\">(id, nimi, hind, aktiivne);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            _tooted.<\/span><span style=\"color: #B392F0\">Add<\/span><span style=\"color: #E1E4E8\">(toode);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> _tooted;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">        \/\/ PATCH https:\/\/localhost:4444\/tooted\/hind-dollaritesse\/1.5<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &#91;<\/span><span style=\"color: #B392F0\">HttpPatch<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;hind-dollaritesse\/{kurss}&quot;<\/span><span style=\"color: #E1E4E8\">)&#93; <\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">List<\/span><span style=\"color: #E1E4E8\">&lt;<\/span><span style=\"color: #B392F0\">Toode<\/span><span style=\"color: #E1E4E8\">&gt; <\/span><span style=\"color: #B392F0\">UpdatePrices<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #F97583\">double<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">kurss<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">for<\/span><span style=\"color: #E1E4E8\"> (<\/span><span style=\"color: #F97583\">int<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">i<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">0<\/span><span style=\"color: #E1E4E8\">; i <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #E1E4E8\"> _tooted.Count; i<\/span><span style=\"color: #F97583\">++<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                _tooted&#91;i&#93;.Price <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> _tooted&#91;i&#93;.Price <\/span><span style=\"color: #F97583\">*<\/span><span style=\"color: #E1E4E8\"> kurss;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> _tooted;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><code>App.js<\/code>:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#e1e4e8;--cbp-line-number-width:calc(2 * 0.6 * 1rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2f363c;color:#d3d7dd\">JavaScript<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;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>import { useEffect, useRef, useState } from 'react';\nimport '.\/App.css';\n\nfunction App() {\n  const &#91;tooted, setTooted&#93; = useState([]);\n  const idRef = useRef();\n  const nameRef = useRef();\n  const priceRef = useRef();\n  const isActiveRef = useRef();\n\n\n  useEffect(() => {\n    fetch(\"https:\/\/localhost:4444\/tooted\")\n      .then(res => res.json())\n      .then(json => setTooted(json));\n  }, []);\n\n  function kustuta(index) {\n    fetch(\"https:\/\/localhost:4444\/tooted\/kustuta\/\" + index, {\"method\": \"DELETE\"})\n      .then(res => res.json())\n      .then(json => setTooted(json));\n  }\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  function lisa() {\n    const uusToode = {\n      \"id\": Number(idRef.current.value),\n      \"name\": nameRef.current.value,\n      \"price\": Number(priceRef.current.value),\n      \"isActive\": isActiveRef.current.checked\n    }\n    fetch(\"https:\/\/localhost:4444\/tooted\/lisa\", {\"method\": \"POST\", \"body\": JSON.stringify(uusToode)})\n      .then(res => res.json())\n      .then(json => setTooted(json));\n  }\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n  function dollariteks() {\n    const kurss = 1.1;\n    fetch(\"https:\/\/localhost:4444\/tooted\/hind-dollaritesse\/\" + kurss, {\"method\": \"PATCH\"})\n      .then(res => res.json())\n      .then(json => setTooted(json));\n  }\n\n  return (\n    &lt;div className=\"App\">\n      &lt;label>ID&lt;\/label> &lt;br \/>\n      &lt;input ref={idRef} type=\"number\" \/> &lt;br \/>\n      &lt;label>Nimi&lt;\/label> &lt;br \/>\n      &lt;input ref={nameRef} type=\"text\" \/> &lt;br \/>\n      &lt;label>Hind&lt;\/label> &lt;br \/>\n      &lt;input ref={priceRef} type=\"number\" \/> &lt;br \/>\n      &lt;label>Aktiivne&lt;\/label> &lt;br \/>\n      &lt;input ref={isActiveRef} type=\"checkbox\" \/> &lt;br \/>\n      &lt;button onClick={() => lisa()}>Lisa&lt;\/button>\n      {tooted.map((toode, index) => \n        &lt;div>\n          &lt;div>{toode.id}&lt;\/div>\n          &lt;div>{toode.name}&lt;\/div>\n          &lt;div>{toode.price}&lt;\/div>\n          &lt;button onClick={() => kustuta(index)}>x&lt;\/button>\n        &lt;\/div>)}\n      &lt;button onClick={() => dollariteks()}>Muuda dollariteks&lt;\/button>\n    &lt;\/div>\n  );\n}\n\nexport default App;<\/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=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F97583\">import<\/span><span style=\"color: #E1E4E8\"> { useEffect, useRef, useState } <\/span><span style=\"color: #F97583\">from<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&#39;react&#39;<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">import<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&#39;.\/App.css&#39;<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">function<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">App<\/span><span style=\"color: #E1E4E8\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">const<\/span><span style=\"color: #E1E4E8\"> &#91;<\/span><span style=\"color: #79B8FF\">tooted<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #79B8FF\">setTooted<\/span><span style=\"color: #E1E4E8\">&#93; <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">useState<\/span><span style=\"color: #E1E4E8\">([]);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">const<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">idRef<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">useRef<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">const<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">nameRef<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">useRef<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">const<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">priceRef<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">useRef<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">const<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">isActiveRef<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">useRef<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #B392F0\">useEffect<\/span><span style=\"color: #E1E4E8\">(() <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #B392F0\">fetch<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;https:\/\/localhost:4444\/tooted&quot;<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      .<\/span><span style=\"color: #B392F0\">then<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #FFAB70\">res<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> res.<\/span><span style=\"color: #B392F0\">json<\/span><span style=\"color: #E1E4E8\">())<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      .<\/span><span style=\"color: #B392F0\">then<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #FFAB70\">json<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">setTooted<\/span><span style=\"color: #E1E4E8\">(json));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  }, []);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">function<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">kustuta<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #FFAB70\">index<\/span><span style=\"color: #E1E4E8\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #B392F0\">fetch<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;https:\/\/localhost:4444\/tooted\/kustuta\/&quot;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">+<\/span><span style=\"color: #E1E4E8\"> index, {<\/span><span style=\"color: #9ECBFF\">&quot;method&quot;<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">&quot;DELETE&quot;<\/span><span style=\"color: #E1E4E8\">})<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      .<\/span><span style=\"color: #B392F0\">then<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #FFAB70\">res<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> res.<\/span><span style=\"color: #B392F0\">json<\/span><span style=\"color: #E1E4E8\">())<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      .<\/span><span style=\"color: #B392F0\">then<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #FFAB70\">json<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">setTooted<\/span><span style=\"color: #E1E4E8\">(json));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #6A737D\">\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">function<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">lisa<\/span><span style=\"color: #E1E4E8\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #F97583\">const<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">uusToode<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      <\/span><span style=\"color: #9ECBFF\">&quot;id&quot;<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #B392F0\">Number<\/span><span style=\"color: #E1E4E8\">(idRef.current.value),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      <\/span><span style=\"color: #9ECBFF\">&quot;name&quot;<\/span><span style=\"color: #E1E4E8\">: nameRef.current.value,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      <\/span><span style=\"color: #9ECBFF\">&quot;price&quot;<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #B392F0\">Number<\/span><span style=\"color: #E1E4E8\">(priceRef.current.value),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      <\/span><span style=\"color: #9ECBFF\">&quot;isActive&quot;<\/span><span style=\"color: #E1E4E8\">: isActiveRef.current.checked<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #B392F0\">fetch<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;https:\/\/localhost:4444\/tooted\/lisa&quot;<\/span><span style=\"color: #E1E4E8\">, {<\/span><span style=\"color: #9ECBFF\">&quot;method&quot;<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">&quot;POST&quot;<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #9ECBFF\">&quot;body&quot;<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #79B8FF\">JSON<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">stringify<\/span><span style=\"color: #E1E4E8\">(uusToode)})<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      .<\/span><span style=\"color: #B392F0\">then<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #FFAB70\">res<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> res.<\/span><span style=\"color: #B392F0\">json<\/span><span style=\"color: #E1E4E8\">())<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      .<\/span><span style=\"color: #B392F0\">then<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #FFAB70\">json<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">setTooted<\/span><span style=\"color: #E1E4E8\">(json));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #6A737D\">\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">function<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">dollariteks<\/span><span style=\"color: #E1E4E8\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #F97583\">const<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">kurss<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">1.1<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #B392F0\">fetch<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;https:\/\/localhost:4444\/tooted\/hind-dollaritesse\/&quot;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">+<\/span><span style=\"color: #E1E4E8\"> kurss, {<\/span><span style=\"color: #9ECBFF\">&quot;method&quot;<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">&quot;PATCH&quot;<\/span><span style=\"color: #E1E4E8\">})<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      .<\/span><span style=\"color: #B392F0\">then<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #FFAB70\">res<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> res.<\/span><span style=\"color: #B392F0\">json<\/span><span style=\"color: #E1E4E8\">())<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      .<\/span><span style=\"color: #B392F0\">then<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #FFAB70\">json<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">setTooted<\/span><span style=\"color: #E1E4E8\">(json));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    &lt;<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">className<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #9ECBFF\">&quot;App&quot;<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      &lt;<\/span><span style=\"color: #85E89D\">label<\/span><span style=\"color: #E1E4E8\">&gt;ID&lt;\/<\/span><span style=\"color: #85E89D\">label<\/span><span style=\"color: #E1E4E8\">&gt; &lt;<\/span><span style=\"color: #85E89D\">br<\/span><span style=\"color: #E1E4E8\"> \/&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      &lt;<\/span><span style=\"color: #85E89D\">input<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">ref<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">{idRef} <\/span><span style=\"color: #B392F0\">type<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #9ECBFF\">&quot;number&quot;<\/span><span style=\"color: #E1E4E8\"> \/&gt; &lt;<\/span><span style=\"color: #85E89D\">br<\/span><span style=\"color: #E1E4E8\"> \/&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      &lt;<\/span><span style=\"color: #85E89D\">label<\/span><span style=\"color: #E1E4E8\">&gt;Nimi&lt;\/<\/span><span style=\"color: #85E89D\">label<\/span><span style=\"color: #E1E4E8\">&gt; &lt;<\/span><span style=\"color: #85E89D\">br<\/span><span style=\"color: #E1E4E8\"> \/&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      &lt;<\/span><span style=\"color: #85E89D\">input<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">ref<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">{nameRef} <\/span><span style=\"color: #B392F0\">type<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #9ECBFF\">&quot;text&quot;<\/span><span style=\"color: #E1E4E8\"> \/&gt; &lt;<\/span><span style=\"color: #85E89D\">br<\/span><span style=\"color: #E1E4E8\"> \/&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      &lt;<\/span><span style=\"color: #85E89D\">label<\/span><span style=\"color: #E1E4E8\">&gt;Hind&lt;\/<\/span><span style=\"color: #85E89D\">label<\/span><span style=\"color: #E1E4E8\">&gt; &lt;<\/span><span style=\"color: #85E89D\">br<\/span><span style=\"color: #E1E4E8\"> \/&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      &lt;<\/span><span style=\"color: #85E89D\">input<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">ref<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">{priceRef} <\/span><span style=\"color: #B392F0\">type<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #9ECBFF\">&quot;number&quot;<\/span><span style=\"color: #E1E4E8\"> \/&gt; &lt;<\/span><span style=\"color: #85E89D\">br<\/span><span style=\"color: #E1E4E8\"> \/&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      &lt;<\/span><span style=\"color: #85E89D\">label<\/span><span style=\"color: #E1E4E8\">&gt;Aktiivne&lt;\/<\/span><span style=\"color: #85E89D\">label<\/span><span style=\"color: #E1E4E8\">&gt; &lt;<\/span><span style=\"color: #85E89D\">br<\/span><span style=\"color: #E1E4E8\"> \/&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      &lt;<\/span><span style=\"color: #85E89D\">input<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">ref<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">{isActiveRef} <\/span><span style=\"color: #B392F0\">type<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #9ECBFF\">&quot;checkbox&quot;<\/span><span style=\"color: #E1E4E8\"> \/&gt; &lt;<\/span><span style=\"color: #85E89D\">br<\/span><span style=\"color: #E1E4E8\"> \/&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      &lt;<\/span><span style=\"color: #85E89D\">button<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">onClick<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">{() <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">lisa<\/span><span style=\"color: #E1E4E8\">()}&gt;Lisa&lt;\/<\/span><span style=\"color: #85E89D\">button<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      {tooted.<\/span><span style=\"color: #B392F0\">map<\/span><span style=\"color: #E1E4E8\">((<\/span><span style=\"color: #FFAB70\">toode<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #FFAB70\">index<\/span><span style=\"color: #E1E4E8\">) <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &lt;<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">          &lt;<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\">&gt;{toode.id}&lt;\/<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">          &lt;<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\">&gt;{toode.name}&lt;\/<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">          &lt;<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\">&gt;{toode.price}&lt;\/<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">          &lt;<\/span><span style=\"color: #85E89D\">button<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">onClick<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">{() <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">kustuta<\/span><span style=\"color: #E1E4E8\">(index)}&gt;x&lt;\/<\/span><span style=\"color: #85E89D\">button<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &lt;\/<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\">&gt;)}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      &lt;<\/span><span style=\"color: #85E89D\">button<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">onClick<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">{() <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">dollariteks<\/span><span style=\"color: #E1E4E8\">()}&gt;Muuda dollariteks&lt;\/<\/span><span style=\"color: #85E89D\">button<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    &lt;\/<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  );<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">export<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">default<\/span><span style=\"color: #E1E4E8\"> App;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-32\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"324\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-6-1024x324.png\" alt=\"\" class=\"wp-image-2559\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-6-1024x324.png 1024w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-6-300x95.png 300w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-6-768x243.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-6-150x47.png 150w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-6.png 1250w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>3.7. N\u00fc\u00fcd proovime Postmani abil saata POST-p\u00e4ringut. Kasutame VSCode&#8217;i laiendust, l\u00e4heme selle vahekaardile, vajutame &#8220;<strong>New HTTP request<\/strong>&#8220;, kirjutame v\u00e4ljale <a href=\"https:\/\/www.google.com\/url?sa=E&amp;q=https%3A%2F%2Flocalhost%3A4444%2Ftooted%2Flisa\" target=\"_blank\" rel=\"noreferrer noopener\"><code>https:\/\/localhost:4444\/tooted\/lisa<\/code><\/a>, valime &#8216;body&#8217;, vajutame &#8216;raw&#8217;, muudame vormingu JSON-iks ja kirjutame:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#e1e4e8;--cbp-line-number-width:calc(1 * 0.6 * 1rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2f363c;color:#d3d7dd\">JSON<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;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>{\n  \"id\": 321,\n  \"name\": \"Red bull\",\n  \"price\": 5,\n  \"isActive\": true\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=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #E1E4E8\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #79B8FF\">&quot;id&quot;<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #79B8FF\">321<\/span><span style=\"color: #E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #79B8FF\">&quot;name&quot;<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">&quot;Red bull&quot;<\/span><span style=\"color: #E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #79B8FF\">&quot;price&quot;<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #79B8FF\">5<\/span><span style=\"color: #E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #79B8FF\">&quot;isActive&quot;<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #79B8FF\">true<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-33\"><img decoding=\"async\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/123.png\" alt=\"\"\/><\/figure>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li class=\"has-x-large-font-size\"><strong>API requests<\/strong><\/li>\n<\/ol>\n\n\n\n<p class=\"has-large-font-size\"><strong>4.1. Omniva<\/strong><\/p>\n\n\n\n<p>4.1.1. Loome uue kontrolleri nimega <code>ParcelMachineController.cs<\/code>:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full wp-duotone-unset-34\"><img loading=\"lazy\" decoding=\"async\" width=\"601\" height=\"679\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-9.png\" alt=\"\" class=\"wp-image-2577\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-9.png 601w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-9-266x300.png 266w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-9-133x150.png 133w\" sizes=\"auto, (max-width: 601px) 100vw, 601px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-35\"><img loading=\"lazy\" decoding=\"async\" width=\"936\" height=\"1024\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-11-936x1024.png\" alt=\"\" class=\"wp-image-2582\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-11-936x1024.png 936w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-11-274x300.png 274w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-11-768x840.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-11-137x150.png 137w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-11.png 1269w\" sizes=\"auto, (max-width: 936px) 100vw, 936px\" \/><\/figure>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#e1e4e8;--cbp-line-number-width:calc(2 * 0.6 * 1rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2f363c;color:#d3d7dd\">C#<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;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>using Microsoft.AspNetCore.Mvc;\n\nnamespace Veeb_TARpv23.Controllers\n{\n    [Route(\"&#91;controller&#93;\")]\n    &#91;ApiController&#93;\n    public class ParcelMachineController : ControllerBase\n    {\n        private readonly HttpClient _httpClient;\n\n        public ParcelMachineController(HttpClient httpClient)\n        {\n            _httpClient = httpClient;\n        }\n        \n        &#91;HttpGet&#93;\n        public async Task&lt;IActionResult> GetParcelMachines()\n        {\n            var response = await _httpClient.GetAsync(\"https:\/\/www.omniva.ee\/locations.json\");\n            var responseBody = await response.Content.ReadAsStringAsync();\n            return Content(responseBody, \"application\/json\");\n        }\n    }\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=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F97583\">using<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Microsoft<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">AspNetCore<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Mvc<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">namespace<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Veeb_TARpv23<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Controllers<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    [<\/span><span style=\"color: #B392F0\">Route<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;&#91;controller&#93;&quot;<\/span><span style=\"color: #E1E4E8\">)]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    &#91;<\/span><span style=\"color: #B392F0\">ApiController<\/span><span style=\"color: #E1E4E8\">&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">class<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">ParcelMachineController<\/span><span style=\"color: #E1E4E8\"> : <\/span><span style=\"color: #B392F0\">ControllerBase<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">private<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">readonly<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">HttpClient<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">_httpClient<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">ParcelMachineController<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #B392F0\">HttpClient<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">httpClient<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            _httpClient <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> httpClient;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &#91;<\/span><span style=\"color: #B392F0\">HttpGet<\/span><span style=\"color: #E1E4E8\">&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">async<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Task<\/span><span style=\"color: #E1E4E8\">&lt;<\/span><span style=\"color: #B392F0\">IActionResult<\/span><span style=\"color: #E1E4E8\">&gt; <\/span><span style=\"color: #B392F0\">GetParcelMachines<\/span><span style=\"color: #E1E4E8\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">var<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">response<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">await<\/span><span style=\"color: #E1E4E8\"> _httpClient.<\/span><span style=\"color: #B392F0\">GetAsync<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;https:\/\/www.omniva.ee\/locations.json&quot;<\/span><span style=\"color: #E1E4E8\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">var<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">responseBody<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">await<\/span><span style=\"color: #E1E4E8\"> response.Content.<\/span><span style=\"color: #B392F0\">ReadAsStringAsync<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Content<\/span><span style=\"color: #E1E4E8\">(responseBody, <\/span><span style=\"color: #9ECBFF\">&quot;application\/json&quot;<\/span><span style=\"color: #E1E4E8\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>4.1.2. Lisame <code>http<\/code>-kliendi faili <code>Program.cs<\/code>:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#e1e4e8;--cbp-line-number-width:calc(2 * 0.6 * 1rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2f363c;color:#d3d7dd\">C#<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;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>var builder = WebApplication.CreateBuilder(args);\n\n\/\/ Add services to the container.\n\nbuilder.Services.AddControllers();\n\/\/ Learn more about configuring Swagger\/OpenAPI at https:\/\/aka.ms\/aspnetcore\/swashbuckle\nbuilder.Services.AddEndpointsApiExplorer();\nbuilder.Services.AddSwaggerGen();\n\nbuilder.Services.AddHttpClient();\n\nvar app = builder.Build();\n\n\/\/ Configure the HTTP request pipeline.\nif (app.Environment.IsDevelopment())\n{\n    app.UseSwagger();\n    app.UseSwaggerUI();\n}\n\napp.UseHttpsRedirection();\n\napp.UseCors(options => options\n    .WithOrigins(\"http:\/\/localhost:3000\")\n    .AllowAnyMethod()\n    .AllowAnyHeader()\n);\n\napp.UseAuthorization();\n\napp.MapControllers();\n\napp.Run();<\/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=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F97583\">var<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">builder<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> WebApplication.<\/span><span style=\"color: #B392F0\">CreateBuilder<\/span><span style=\"color: #E1E4E8\">(args);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">\/\/ Add services to the container.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">builder.Services.<\/span><span style=\"color: #B392F0\">AddControllers<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">\/\/ Learn more about configuring Swagger\/OpenAPI at https:\/\/aka.ms\/aspnetcore\/swashbuckle<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">builder.Services.<\/span><span style=\"color: #B392F0\">AddEndpointsApiExplorer<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">builder.Services.<\/span><span style=\"color: #B392F0\">AddSwaggerGen<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">builder.Services.<\/span><span style=\"color: #B392F0\">AddHttpClient<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">var<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">app<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> builder.<\/span><span style=\"color: #B392F0\">Build<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">\/\/ Configure the HTTP request pipeline.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">if<\/span><span style=\"color: #E1E4E8\"> (app.Environment.<\/span><span style=\"color: #B392F0\">IsDevelopment<\/span><span style=\"color: #E1E4E8\">())<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    app.<\/span><span style=\"color: #B392F0\">UseSwagger<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    app.<\/span><span style=\"color: #B392F0\">UseSwaggerUI<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">app.<\/span><span style=\"color: #B392F0\">UseHttpsRedirection<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">app.<\/span><span style=\"color: #B392F0\">UseCors<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #B392F0\">options<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> options<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    .<\/span><span style=\"color: #B392F0\">WithOrigins<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;http:\/\/localhost:3000&quot;<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    .<\/span><span style=\"color: #B392F0\">AllowAnyMethod<\/span><span style=\"color: #E1E4E8\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    .<\/span><span style=\"color: #B392F0\">AllowAnyHeader<\/span><span style=\"color: #E1E4E8\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">app.<\/span><span style=\"color: #B392F0\">UseAuthorization<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">app.<\/span><span style=\"color: #B392F0\">MapControllers<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">app.<\/span><span style=\"color: #B392F0\">Run<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>4.1.3. Uuenda <code>App.js<\/code>-i selle koodiga, et luua valikukast k\u00f5ikide pakiautomaatidega:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#e1e4e8;--cbp-line-number-width:calc(2 * 0.6 * 1rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2f363c;color:#d3d7dd\">JavaScript<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;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>import { useEffect, useState } from 'react';\nimport '.\/App.css';\n\nfunction App() {\n  const &#91;pakiautomaadid, setPakiautomaadid&#93; = useState([]);\n\n  useEffect(() => {\n    fetch(\"https:\/\/localhost:4444\/parcelmachine\")\n      .then(res => res.json())\n      .then(json => setPakiautomaadid(json));\n  }, []);\n\n  return (\n    &lt;div className=\"App\">\n      &lt;select>\n        {pakiautomaadid.map(automaat => \n            &lt;option>\n                {automaat.NAME}\n            &lt;\/option>)}\n      &lt;\/select>\n    &lt;\/div>\n  );\n}\n\nexport default App;<\/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=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F97583\">import<\/span><span style=\"color: #E1E4E8\"> { useEffect, useState } <\/span><span style=\"color: #F97583\">from<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&#39;react&#39;<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">import<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&#39;.\/App.css&#39;<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">function<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">App<\/span><span style=\"color: #E1E4E8\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">const<\/span><span style=\"color: #E1E4E8\"> &#91;<\/span><span style=\"color: #79B8FF\">pakiautomaadid<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #79B8FF\">setPakiautomaadid<\/span><span style=\"color: #E1E4E8\">&#93; <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">useState<\/span><span style=\"color: #E1E4E8\">([]);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #B392F0\">useEffect<\/span><span style=\"color: #E1E4E8\">(() <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #B392F0\">fetch<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;https:\/\/localhost:4444\/parcelmachine&quot;<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      .<\/span><span style=\"color: #B392F0\">then<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #FFAB70\">res<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> res.<\/span><span style=\"color: #B392F0\">json<\/span><span style=\"color: #E1E4E8\">())<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      .<\/span><span style=\"color: #B392F0\">then<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #FFAB70\">json<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">setPakiautomaadid<\/span><span style=\"color: #E1E4E8\">(json));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  }, []);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    &lt;<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">className<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #9ECBFF\">&quot;App&quot;<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      &lt;<\/span><span style=\"color: #85E89D\">select<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        {pakiautomaadid.<\/span><span style=\"color: #B392F0\">map<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #FFAB70\">automaat<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            &lt;<\/span><span style=\"color: #85E89D\">option<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                {automaat.<\/span><span style=\"color: #79B8FF\">NAME<\/span><span style=\"color: #E1E4E8\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            &lt;\/<\/span><span style=\"color: #85E89D\">option<\/span><span style=\"color: #E1E4E8\">&gt;)}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      &lt;\/<\/span><span style=\"color: #85E89D\">select<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    &lt;\/<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  );<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">export<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">default<\/span><span style=\"color: #E1E4E8\"> App;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-36\"><img decoding=\"async\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/1234.png\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"has-large-font-size\"><strong>4.2. Elering<\/strong><\/p>\n\n\n\n<p>4.2.1. Kleebi see kood:<\/p>\n\n\n\n<p><code>NordpoolController.cs<\/code>:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#e1e4e8;--cbp-line-number-width:calc(2 * 0.6 * 1rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2f363c;color:#d3d7dd\">C#<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;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>using Microsoft.AspNetCore.Mvc;\nusing System.Text.Json;\n\nnamespace Veeb_TARpv23.Controllers\n{\n    [Route(\"&#91;controller&#93;\")]\n    &#91;ApiController&#93;\n    public class NordpoolController : ControllerBase\n    {\n\n        private readonly HttpClient _httpClient;\n\n        public NordpoolController(HttpClient httpClient)\n        {\n            _httpClient = httpClient;\n        }\n\n        &#91;HttpGet(\"{country}\/{start}\/{end}\")&#93;\n        public async Task&lt;IActionResult> GetNordPoolPrices(\n            string country,\n            string start,\n            string end)\n        {\n            var response = await _httpClient.GetAsync(\n                $\"https:\/\/dashboard.elering.ee\/api\/nps\/price?start={start}&amp;end={end}\");\n            var responseBody = await response.Content.ReadAsStringAsync();\n            Console.WriteLine(responseBody);\n\n            var jsonDoc = JsonDocument.Parse(responseBody);\n            var dataProperty = jsonDoc.RootElement.GetProperty(\"data\");\n\n            string prices;\n\n            switch (country)\n            {\n                case \"ee\":\n                    prices = dataProperty.GetProperty(\"ee\").ToString();\n                    Console.WriteLine(responseBody);\n\n                    return Content(prices, \"application\/json\");\n\n                case \"lv\":\n                    prices = dataProperty.GetProperty(\"lv\").ToString();\n                    return Content(prices, \"application\/json\");\n\n                case \"lt\":\n                    prices = dataProperty.GetProperty(\"lt\").ToString();\n                    return Content(prices, \"application\/json\");\n\n                case \"fi\":\n                    prices = dataProperty.GetProperty(\"fi\").ToString();\n                    return Content(prices, \"application\/json\");\n\n                default:\n                    return BadRequest(\"Invalid country code.\");\n            }\n        }\n    }\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=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F97583\">using<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Microsoft<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">AspNetCore<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Mvc<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">using<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">System<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Text<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Json<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">namespace<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Veeb_TARpv23<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Controllers<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    [<\/span><span style=\"color: #B392F0\">Route<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;&#91;controller&#93;&quot;<\/span><span style=\"color: #E1E4E8\">)]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    &#91;<\/span><span style=\"color: #B392F0\">ApiController<\/span><span style=\"color: #E1E4E8\">&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">class<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">NordpoolController<\/span><span style=\"color: #E1E4E8\"> : <\/span><span style=\"color: #B392F0\">ControllerBase<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">private<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">readonly<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">HttpClient<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">_httpClient<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">NordpoolController<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #B392F0\">HttpClient<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">httpClient<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            _httpClient <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> httpClient;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &#91;<\/span><span style=\"color: #B392F0\">HttpGet<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;{country}\/{start}\/{end}&quot;<\/span><span style=\"color: #E1E4E8\">)&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">async<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Task<\/span><span style=\"color: #E1E4E8\">&lt;<\/span><span style=\"color: #B392F0\">IActionResult<\/span><span style=\"color: #E1E4E8\">&gt; <\/span><span style=\"color: #B392F0\">GetNordPoolPrices<\/span><span style=\"color: #E1E4E8\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">string<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">country<\/span><span style=\"color: #E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">string<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">start<\/span><span style=\"color: #E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">string<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">end<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">var<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">response<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">await<\/span><span style=\"color: #E1E4E8\"> _httpClient.<\/span><span style=\"color: #B392F0\">GetAsync<\/span><span style=\"color: #E1E4E8\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                <\/span><span style=\"color: #9ECBFF\">$&quot;https:\/\/dashboard.elering.ee\/api\/nps\/price?start={<\/span><span style=\"color: #E1E4E8\">start<\/span><span style=\"color: #9ECBFF\">}&amp;end={<\/span><span style=\"color: #E1E4E8\">end<\/span><span style=\"color: #9ECBFF\">}&quot;<\/span><span style=\"color: #E1E4E8\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">var<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">responseBody<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">await<\/span><span style=\"color: #E1E4E8\"> response.Content.<\/span><span style=\"color: #B392F0\">ReadAsStringAsync<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            Console.<\/span><span style=\"color: #B392F0\">WriteLine<\/span><span style=\"color: #E1E4E8\">(responseBody);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">var<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">jsonDoc<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> JsonDocument.<\/span><span style=\"color: #B392F0\">Parse<\/span><span style=\"color: #E1E4E8\">(responseBody);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">var<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">dataProperty<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> jsonDoc.RootElement.<\/span><span style=\"color: #B392F0\">GetProperty<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;data&quot;<\/span><span style=\"color: #E1E4E8\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">string<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">prices<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">switch<\/span><span style=\"color: #E1E4E8\"> (country)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                <\/span><span style=\"color: #F97583\">case<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&quot;ee&quot;<\/span><span style=\"color: #E1E4E8\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                    prices <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> dataProperty.<\/span><span style=\"color: #B392F0\">GetProperty<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;ee&quot;<\/span><span style=\"color: #E1E4E8\">).<\/span><span style=\"color: #B392F0\">ToString<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                    Console.<\/span><span style=\"color: #B392F0\">WriteLine<\/span><span style=\"color: #E1E4E8\">(responseBody);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                    <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Content<\/span><span style=\"color: #E1E4E8\">(prices, <\/span><span style=\"color: #9ECBFF\">&quot;application\/json&quot;<\/span><span style=\"color: #E1E4E8\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                <\/span><span style=\"color: #F97583\">case<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&quot;lv&quot;<\/span><span style=\"color: #E1E4E8\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                    prices <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> dataProperty.<\/span><span style=\"color: #B392F0\">GetProperty<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;lv&quot;<\/span><span style=\"color: #E1E4E8\">).<\/span><span style=\"color: #B392F0\">ToString<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                    <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Content<\/span><span style=\"color: #E1E4E8\">(prices, <\/span><span style=\"color: #9ECBFF\">&quot;application\/json&quot;<\/span><span style=\"color: #E1E4E8\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                <\/span><span style=\"color: #F97583\">case<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&quot;lt&quot;<\/span><span style=\"color: #E1E4E8\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                    prices <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> dataProperty.<\/span><span style=\"color: #B392F0\">GetProperty<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;lt&quot;<\/span><span style=\"color: #E1E4E8\">).<\/span><span style=\"color: #B392F0\">ToString<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                    <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Content<\/span><span style=\"color: #E1E4E8\">(prices, <\/span><span style=\"color: #9ECBFF\">&quot;application\/json&quot;<\/span><span style=\"color: #E1E4E8\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                <\/span><span style=\"color: #F97583\">case<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&quot;fi&quot;<\/span><span style=\"color: #E1E4E8\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                    prices <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> dataProperty.<\/span><span style=\"color: #B392F0\">GetProperty<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;fi&quot;<\/span><span style=\"color: #E1E4E8\">).<\/span><span style=\"color: #B392F0\">ToString<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                    <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Content<\/span><span style=\"color: #E1E4E8\">(prices, <\/span><span style=\"color: #9ECBFF\">&quot;application\/json&quot;<\/span><span style=\"color: #E1E4E8\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                <\/span><span style=\"color: #F97583\">default<\/span><span style=\"color: #E1E4E8\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                    <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">BadRequest<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;Invalid country code.&quot;<\/span><span style=\"color: #E1E4E8\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><code>App.js<\/code>:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#e1e4e8;--cbp-line-number-width:calc(2 * 0.6 * 1rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2f363c;color:#d3d7dd\">JavaScript<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;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>import { useRef } from 'react';\nimport { useEffect, useState } from 'react';\nimport '.\/App.css';\n\nfunction App() {\n  const &#91;prices, setPrices&#93; = useState([]);\n  const &#91;chosenCountry, setChosenCountry&#93; = useState(\"ee\");\n  const &#91;start, setStart&#93; = useState(\"\");\n  const &#91;end, setEnd&#93; = useState(\"\");\n  const startRef = useRef();\n  const endRef = useRef();\n\n  useEffect(() => {\n    if (start !== \"\" &amp;&amp; end !== \"\") {\n      fetch(\"https:\/\/localhost:4444\/nordpool\/\" + chosenCountry + \"\/\" + start + \"\/\" + end)\n        .then(res => res.json())\n        .then(json => {\n          setPrices(json);\n        });\n    }\n  }, &#91;chosenCountry, start, end&#93;);\n\n  function updateStart() {\n    const startIso = new Date(startRef.current.value).toISOString();\n    setStart(startIso);\n  }\n\n  function updateEnd() {\n    const endIso = new Date(endRef.current.value).toISOString();\n    setEnd(endIso);\n  }\n\n  return (\n    &lt;div>\n      &lt;button onClick={() => setChosenCountry(\"fi\")}>Soome&lt;\/button>\n      &lt;button onClick={() => setChosenCountry(\"ee\")}>Eesti&lt;\/button>\n      &lt;button onClick={() => setChosenCountry(\"lv\")}>L\u00e4ti&lt;\/button>\n      &lt;button onClick={() => setChosenCountry(\"lt\")}>Leedu&lt;\/button>\n      &lt;input ref={startRef} onChange={updateStart} type=\"datetime-local\" \/>\n      &lt;input ref={endRef} onChange={updateEnd} type=\"datetime-local\" \/>\n      {prices.length > 0 &amp;&amp; \n      &lt;table style={{marginLeft: \"100px\"}}>\n        &lt;thead>\n          &lt;th style={{border: \"1px solid #ddd\", padding: \"12px\", backgroundColor: \"#04AA6D\"}}>Ajatempel&lt;\/th>\n          &lt;th style={{border: \"1px solid #ddd\", padding: \"12px\", backgroundColor: \"#04AA6D\"}}>Hind&lt;\/th>\n        &lt;\/thead>\n        &lt;tbody>\n          &lt;td style={{position: \"absolute\", left: \"30px\"}}>{chosenCountry}&lt;\/td>\n          {prices.map(data => \n          &lt;tr key={data.timestamp}>\n            &lt;td style={{border: \"1px solid #ddd\", padding: \"8px\"}}>{new Date(data.timestamp * 1000).toISOString()}&lt;\/td>\n            &lt;td style={{border: \"1px solid #ddd\", padding: \"8px\"}}>{data.price}&lt;\/td>\n          &lt;\/tr>)}\n        &lt;\/tbody>\n      &lt;\/table>}\n    &lt;\/div>\n  );\n}\n\nexport default App;<\/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=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F97583\">import<\/span><span style=\"color: #E1E4E8\"> { useRef } <\/span><span style=\"color: #F97583\">from<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&#39;react&#39;<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">import<\/span><span style=\"color: #E1E4E8\"> { useEffect, useState } <\/span><span style=\"color: #F97583\">from<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&#39;react&#39;<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">import<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&#39;.\/App.css&#39;<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">function<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">App<\/span><span style=\"color: #E1E4E8\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">const<\/span><span style=\"color: #E1E4E8\"> &#91;<\/span><span style=\"color: #79B8FF\">prices<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #79B8FF\">setPrices<\/span><span style=\"color: #E1E4E8\">&#93; <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">useState<\/span><span style=\"color: #E1E4E8\">([]);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">const<\/span><span style=\"color: #E1E4E8\"> &#91;<\/span><span style=\"color: #79B8FF\">chosenCountry<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #79B8FF\">setChosenCountry<\/span><span style=\"color: #E1E4E8\">&#93; <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">useState<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;ee&quot;<\/span><span style=\"color: #E1E4E8\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">const<\/span><span style=\"color: #E1E4E8\"> &#91;<\/span><span style=\"color: #79B8FF\">start<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #79B8FF\">setStart<\/span><span style=\"color: #E1E4E8\">&#93; <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">useState<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;&quot;<\/span><span style=\"color: #E1E4E8\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">const<\/span><span style=\"color: #E1E4E8\"> &#91;<\/span><span style=\"color: #79B8FF\">end<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #79B8FF\">setEnd<\/span><span style=\"color: #E1E4E8\">&#93; <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">useState<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;&quot;<\/span><span style=\"color: #E1E4E8\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">const<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">startRef<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">useRef<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">const<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">endRef<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">useRef<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #B392F0\">useEffect<\/span><span style=\"color: #E1E4E8\">(() <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #F97583\">if<\/span><span style=\"color: #E1E4E8\"> (start <\/span><span style=\"color: #F97583\">!==<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&quot;&quot;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">&amp;&amp;<\/span><span style=\"color: #E1E4E8\"> end <\/span><span style=\"color: #F97583\">!==<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&quot;&quot;<\/span><span style=\"color: #E1E4E8\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      <\/span><span style=\"color: #B392F0\">fetch<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;https:\/\/localhost:4444\/nordpool\/&quot;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">+<\/span><span style=\"color: #E1E4E8\"> chosenCountry <\/span><span style=\"color: #F97583\">+<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&quot;\/&quot;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">+<\/span><span style=\"color: #E1E4E8\"> start <\/span><span style=\"color: #F97583\">+<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&quot;\/&quot;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">+<\/span><span style=\"color: #E1E4E8\"> end)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        .<\/span><span style=\"color: #B392F0\">then<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #FFAB70\">res<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> res.<\/span><span style=\"color: #B392F0\">json<\/span><span style=\"color: #E1E4E8\">())<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        .<\/span><span style=\"color: #B392F0\">then<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #FFAB70\">json<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">          <\/span><span style=\"color: #B392F0\">setPrices<\/span><span style=\"color: #E1E4E8\">(json);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        });<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  }, &#91;chosenCountry, start, end&#93;);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">function<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">updateStart<\/span><span style=\"color: #E1E4E8\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #F97583\">const<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">startIso<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">new<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Date<\/span><span style=\"color: #E1E4E8\">(startRef.current.value).<\/span><span style=\"color: #B392F0\">toISOString<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #B392F0\">setStart<\/span><span style=\"color: #E1E4E8\">(startIso);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">function<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">updateEnd<\/span><span style=\"color: #E1E4E8\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #F97583\">const<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">endIso<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">new<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Date<\/span><span style=\"color: #E1E4E8\">(endRef.current.value).<\/span><span style=\"color: #B392F0\">toISOString<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #B392F0\">setEnd<\/span><span style=\"color: #E1E4E8\">(endIso);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    &lt;<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      &lt;<\/span><span style=\"color: #85E89D\">button<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">onClick<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">{() <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">setChosenCountry<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;fi&quot;<\/span><span style=\"color: #E1E4E8\">)}&gt;Soome&lt;\/<\/span><span style=\"color: #85E89D\">button<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      &lt;<\/span><span style=\"color: #85E89D\">button<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">onClick<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">{() <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">setChosenCountry<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;ee&quot;<\/span><span style=\"color: #E1E4E8\">)}&gt;Eesti&lt;\/<\/span><span style=\"color: #85E89D\">button<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      &lt;<\/span><span style=\"color: #85E89D\">button<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">onClick<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">{() <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">setChosenCountry<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;lv&quot;<\/span><span style=\"color: #E1E4E8\">)}&gt;L\u00e4ti&lt;\/<\/span><span style=\"color: #85E89D\">button<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      &lt;<\/span><span style=\"color: #85E89D\">button<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">onClick<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">{() <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">setChosenCountry<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;lt&quot;<\/span><span style=\"color: #E1E4E8\">)}&gt;Leedu&lt;\/<\/span><span style=\"color: #85E89D\">button<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      &lt;<\/span><span style=\"color: #85E89D\">input<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">ref<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">{startRef} <\/span><span style=\"color: #B392F0\">onChange<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">{updateStart} <\/span><span style=\"color: #B392F0\">type<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #9ECBFF\">&quot;datetime-local&quot;<\/span><span style=\"color: #E1E4E8\"> \/&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      &lt;<\/span><span style=\"color: #85E89D\">input<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">ref<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">{endRef} <\/span><span style=\"color: #B392F0\">onChange<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">{updateEnd} <\/span><span style=\"color: #B392F0\">type<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #9ECBFF\">&quot;datetime-local&quot;<\/span><span style=\"color: #E1E4E8\"> \/&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      {prices.<\/span><span style=\"color: #79B8FF\">length<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">&gt;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">&amp;&amp;<\/span><span style=\"color: #E1E4E8\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      &lt;<\/span><span style=\"color: #85E89D\">table<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">style<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">{{marginLeft: <\/span><span style=\"color: #9ECBFF\">&quot;100px&quot;<\/span><span style=\"color: #E1E4E8\">}}&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &lt;<\/span><span style=\"color: #85E89D\">thead<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">          &lt;<\/span><span style=\"color: #85E89D\">th<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">style<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">{{border: <\/span><span style=\"color: #9ECBFF\">&quot;1px solid #ddd&quot;<\/span><span style=\"color: #E1E4E8\">, padding: <\/span><span style=\"color: #9ECBFF\">&quot;12px&quot;<\/span><span style=\"color: #E1E4E8\">, backgroundColor: <\/span><span style=\"color: #9ECBFF\">&quot;#04AA6D&quot;<\/span><span style=\"color: #E1E4E8\">}}&gt;Ajatempel&lt;\/<\/span><span style=\"color: #85E89D\">th<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">          &lt;<\/span><span style=\"color: #85E89D\">th<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">style<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">{{border: <\/span><span style=\"color: #9ECBFF\">&quot;1px solid #ddd&quot;<\/span><span style=\"color: #E1E4E8\">, padding: <\/span><span style=\"color: #9ECBFF\">&quot;12px&quot;<\/span><span style=\"color: #E1E4E8\">, backgroundColor: <\/span><span style=\"color: #9ECBFF\">&quot;#04AA6D&quot;<\/span><span style=\"color: #E1E4E8\">}}&gt;Hind&lt;\/<\/span><span style=\"color: #85E89D\">th<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &lt;\/<\/span><span style=\"color: #85E89D\">thead<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &lt;<\/span><span style=\"color: #85E89D\">tbody<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">          &lt;<\/span><span style=\"color: #85E89D\">td<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">style<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">{{position: <\/span><span style=\"color: #9ECBFF\">&quot;absolute&quot;<\/span><span style=\"color: #E1E4E8\">, left: <\/span><span style=\"color: #9ECBFF\">&quot;30px&quot;<\/span><span style=\"color: #E1E4E8\">}}&gt;{chosenCountry}&lt;\/<\/span><span style=\"color: #85E89D\">td<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">          {prices.<\/span><span style=\"color: #B392F0\">map<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #FFAB70\">data<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #E1E4E8\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">          &lt;<\/span><span style=\"color: #85E89D\">tr<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">key<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">{data.timestamp}&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            &lt;<\/span><span style=\"color: #85E89D\">td<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">style<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">{{border: <\/span><span style=\"color: #9ECBFF\">&quot;1px solid #ddd&quot;<\/span><span style=\"color: #E1E4E8\">, padding: <\/span><span style=\"color: #9ECBFF\">&quot;8px&quot;<\/span><span style=\"color: #E1E4E8\">}}&gt;{<\/span><span style=\"color: #F97583\">new<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Date<\/span><span style=\"color: #E1E4E8\">(data.timestamp <\/span><span style=\"color: #F97583\">*<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">1000<\/span><span style=\"color: #E1E4E8\">).<\/span><span style=\"color: #B392F0\">toISOString<\/span><span style=\"color: #E1E4E8\">()}&lt;\/<\/span><span style=\"color: #85E89D\">td<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            &lt;<\/span><span style=\"color: #85E89D\">td<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">style<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">{{border: <\/span><span style=\"color: #9ECBFF\">&quot;1px solid #ddd&quot;<\/span><span style=\"color: #E1E4E8\">, padding: <\/span><span style=\"color: #9ECBFF\">&quot;8px&quot;<\/span><span style=\"color: #E1E4E8\">}}&gt;{data.price}&lt;\/<\/span><span style=\"color: #85E89D\">td<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">          &lt;\/<\/span><span style=\"color: #85E89D\">tr<\/span><span style=\"color: #E1E4E8\">&gt;)}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &lt;\/<\/span><span style=\"color: #85E89D\">tbody<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      &lt;\/<\/span><span style=\"color: #85E89D\">table<\/span><span style=\"color: #E1E4E8\">&gt;}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    &lt;\/<\/span><span style=\"color: #85E89D\">div<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">  );<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">export<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">default<\/span><span style=\"color: #E1E4E8\"> App;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-37\"><img decoding=\"async\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/12345.png\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"has-large-font-size\"><strong>4.3. Payment controller<\/strong><\/p>\n\n\n\n<p>4.3.1. Kleebi see kood:<\/p>\n\n\n\n<p><code>PaymentController.cs<\/code>:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#e1e4e8;--cbp-line-number-width:calc(2 * 0.6 * 1rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2f363c;color:#d3d7dd\">C#<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;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>using Microsoft.AspNetCore.Mvc;\nusing System.Net.Http.Headers;\nusing System.Text.Json;\nusing System.Text;\n\nnamespace Veeb_TARpv23.Controllers\n{\n    [Route(\"&#91;controller&#93;\")]\n    &#91;ApiController&#93;\n    public class PaymentController : ControllerBase\n    {\n        private readonly HttpClient _httpClient;\n\n        public PaymentController(HttpClient httpClient)\n        {\n            _httpClient = httpClient;\n        }\n\n        &#91;HttpGet(\"{sum}\")&#93;\n        public async Task&lt;IActionResult> MakePayment(string sum)\n        {\n            var paymentData = new\n            {\n                api_username = \"e36eb40f5ec87fa2\",\n                account_name = \"EUR3D1\",\n                amount = sum,\n                order_reference = Math.Ceiling(new Random().NextDouble() * 999999),\n                nonce = $\"a9b7f7e7as{DateTime.Now}{new Random().NextDouble() * 999999}\",\n                timestamp = DateTime.Now,\n                customer_url = \"https:\/\/maksmine.web.app\/makse\"\n            };\n\n            var json = JsonSerializer.Serialize(paymentData);\n            var content = new StringContent(json, Encoding.UTF8, \"application\/json\");\n\n            var client = new HttpClient();\n            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(\"Basic\", \"ZTM2ZWI0MGY1ZWM4N2ZhMjo3YjkxYTNiOWUxYjc0NTI0YzJlOWZjMjgyZjhhYzhjZA==\");\n\n            var response = await client.PostAsync(\"https:\/\/igw-demo.every-pay.com\/api\/v4\/payments\/oneoff\", content);\n\n            if (response.IsSuccessStatusCode)\n            {\n                var responseContent = await response.Content.ReadAsStringAsync();\n                var jsonDoc = JsonDocument.Parse(responseContent);\n                var paymentLink = jsonDoc.RootElement.GetProperty(\"payment_link\");\n                return Ok(paymentLink);\n            }\n            else\n            {\n                return BadRequest(\"Payment failed.\");\n            }\n        }\n    }\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=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F97583\">using<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Microsoft<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">AspNetCore<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Mvc<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">using<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">System<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Net<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Http<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Headers<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">using<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">System<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Text<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Json<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">using<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">System<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Text<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">namespace<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Veeb_TARpv23<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">Controllers<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    [<\/span><span style=\"color: #B392F0\">Route<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;&#91;controller&#93;&quot;<\/span><span style=\"color: #E1E4E8\">)]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    &#91;<\/span><span style=\"color: #B392F0\">ApiController<\/span><span style=\"color: #E1E4E8\">&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">class<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">PaymentController<\/span><span style=\"color: #E1E4E8\"> : <\/span><span style=\"color: #B392F0\">ControllerBase<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">private<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">readonly<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">HttpClient<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">_httpClient<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">PaymentController<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #B392F0\">HttpClient<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">httpClient<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            _httpClient <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> httpClient;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        &#91;<\/span><span style=\"color: #B392F0\">HttpGet<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;{sum}&quot;<\/span><span style=\"color: #E1E4E8\">)&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        <\/span><span style=\"color: #F97583\">public<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">async<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Task<\/span><span style=\"color: #E1E4E8\">&lt;<\/span><span style=\"color: #B392F0\">IActionResult<\/span><span style=\"color: #E1E4E8\">&gt; <\/span><span style=\"color: #B392F0\">MakePayment<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #F97583\">string<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">sum<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">var<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">paymentData<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">new<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                api_username <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&quot;e36eb40f5ec87fa2&quot;<\/span><span style=\"color: #E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                account_name <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&quot;EUR3D1&quot;<\/span><span style=\"color: #E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                amount <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> sum,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                order_reference <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> Math.<\/span><span style=\"color: #B392F0\">Ceiling<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #F97583\">new<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Random<\/span><span style=\"color: #E1E4E8\">().<\/span><span style=\"color: #B392F0\">NextDouble<\/span><span style=\"color: #E1E4E8\">() <\/span><span style=\"color: #F97583\">*<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">999999<\/span><span style=\"color: #E1E4E8\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                nonce <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">$&quot;a9b7f7e7as{<\/span><span style=\"color: #E1E4E8\">DateTime<\/span><span style=\"color: #9ECBFF\">.<\/span><span style=\"color: #E1E4E8\">Now<\/span><span style=\"color: #9ECBFF\">}{<\/span><span style=\"color: #F97583\">new<\/span><span style=\"color: #9ECBFF\"> <\/span><span style=\"color: #B392F0\">Random<\/span><span style=\"color: #9ECBFF\">().<\/span><span style=\"color: #B392F0\">NextDouble<\/span><span style=\"color: #9ECBFF\">() <\/span><span style=\"color: #F97583\">*<\/span><span style=\"color: #9ECBFF\"> <\/span><span style=\"color: #79B8FF\">999999<\/span><span style=\"color: #9ECBFF\">}&quot;<\/span><span style=\"color: #E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                timestamp <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> DateTime.Now,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                customer_url <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">&quot;https:\/\/maksmine.web.app\/makse&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            };<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">var<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">json<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> JsonSerializer.<\/span><span style=\"color: #B392F0\">Serialize<\/span><span style=\"color: #E1E4E8\">(paymentData);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">var<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">content<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">new<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">StringContent<\/span><span style=\"color: #E1E4E8\">(json, Encoding.UTF8, <\/span><span style=\"color: #9ECBFF\">&quot;application\/json&quot;<\/span><span style=\"color: #E1E4E8\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">var<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">client<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">new<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">HttpClient<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            client.DefaultRequestHeaders.Authorization <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">new<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">AuthenticationHeaderValue<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;Basic&quot;<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #9ECBFF\">&quot;ZTM2ZWI0MGY1ZWM4N2ZhMjo3YjkxYTNiOWUxYjc0NTI0YzJlOWZjMjgyZjhhYzhjZA==&quot;<\/span><span style=\"color: #E1E4E8\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">var<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">response<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">await<\/span><span style=\"color: #E1E4E8\"> client.<\/span><span style=\"color: #B392F0\">PostAsync<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;https:\/\/igw-demo.every-pay.com\/api\/v4\/payments\/oneoff&quot;<\/span><span style=\"color: #E1E4E8\">, content);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">if<\/span><span style=\"color: #E1E4E8\"> (response.IsSuccessStatusCode)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                <\/span><span style=\"color: #F97583\">var<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">responseContent<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">await<\/span><span style=\"color: #E1E4E8\"> response.Content.<\/span><span style=\"color: #B392F0\">ReadAsStringAsync<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                <\/span><span style=\"color: #F97583\">var<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">jsonDoc<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> JsonDocument.<\/span><span style=\"color: #B392F0\">Parse<\/span><span style=\"color: #E1E4E8\">(responseContent);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                <\/span><span style=\"color: #F97583\">var<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">paymentLink<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> jsonDoc.RootElement.<\/span><span style=\"color: #B392F0\">GetProperty<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;payment_link&quot;<\/span><span style=\"color: #E1E4E8\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Ok<\/span><span style=\"color: #E1E4E8\">(paymentLink);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            <\/span><span style=\"color: #F97583\">else<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">                <\/span><span style=\"color: #F97583\">return<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">BadRequest<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">&quot;Payment failed.&quot;<\/span><span style=\"color: #E1E4E8\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">            }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>4.3.2. Mine Swagger UI-sse ja testi seda.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-38\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"315\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-12-1024x315.png\" alt=\"\" class=\"wp-image-2604\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-12-1024x315.png 1024w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-12-300x92.png 300w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-12-768x236.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-12-150x46.png 150w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-12.png 1241w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>See peaks andma sulle lingi.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-39\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"901\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-13-1024x901.png\" alt=\"\" class=\"wp-image-2606\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-13-1024x901.png 1024w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-13-300x264.png 300w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-13-768x675.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-13-150x132.png 150w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-13.png 1269w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-40\"><img loading=\"lazy\" decoding=\"async\" width=\"936\" height=\"1024\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-14-936x1024.png\" alt=\"\" class=\"wp-image-2609\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-14-936x1024.png 936w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-14-274x300.png 274w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-14-768x840.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-14-137x150.png 137w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-14.png 1269w\" sizes=\"auto, (max-width: 936px) 100vw, 936px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-41\"><img loading=\"lazy\" decoding=\"async\" width=\"936\" height=\"1024\" src=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-15-936x1024.png\" alt=\"\" class=\"wp-image-2610\" srcset=\"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-15-936x1024.png 936w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-15-274x300.png 274w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-15-768x840.png 768w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-15-137x150.png 137w, https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-content\/uploads\/2025\/10\/image-15.png 1269w\" sizes=\"auto, (max-width: 936px) 100vw, 936px\" \/><\/figure>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>1.1. Ava Visual Studio 1.2. Loo uus projekt 1.3. Vali ASP.NET Core Web API 1.4. Nimeta see, kuidas soovid 1.5. Sisesta need vanad seaded 2.1. Paremkl\u00f5psa kaustal Controllers, vali Add -> Controller&#8230; 2.2. Vali API Controller &#8211; Empty, nimeta see PrimitiividController.cs 2.3. Kirjuta see kood: 2.4. K\u00e4ivita see, mine oma localhost:[port]\/Primitiivid\/hello-world URL-ile 2.5. Kirjuta see [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2390","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-json\/wp\/v2\/pages\/2390","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-json\/wp\/v2\/comments?post=2390"}],"version-history":[{"count":103,"href":"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-json\/wp\/v2\/pages\/2390\/revisions"}],"predecessor-version":[{"id":2629,"href":"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-json\/wp\/v2\/pages\/2390\/revisions\/2629"}],"wp:attachment":[{"href":"https:\/\/vladislavkudriashev23.thkit.ee\/WP\/wp-json\/wp\/v2\/media?parent=2390"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}