{"id":174,"date":"2026-06-26T13:33:09","date_gmt":"2026-06-26T13:33:09","guid":{"rendered":"https:\/\/aabbee.cafe24.com\/?p=174"},"modified":"2026-06-26T13:33:09","modified_gmt":"2026-06-26T13:33:09","slug":"api%ed%99%9c%ec%9a%a9","status":"publish","type":"post","link":"https:\/\/coalacoding.com\/?p=174","title":{"rendered":"api\ud65c\uc6a9"},"content":{"rendered":"<h3><strong>1. \uc2dc\uc791\ud30c\uc77c<\/strong><\/h3>\n<p><a href=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/7\/#%ED%8C%8C%EC%9D%BC%EB%8B%A4%EC%9A%B4%EB%A1%9C%EB%93%9C\"><strong>\ud30c\uc77c\ub2e4\uc6b4\ub85c\ub4dc<\/strong><\/a><br \/>\n<a href=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/7\/#%ED%8C%8C%EC%9D%BC%ED%99%9C%EC%9A%A9%EB%B0%A9%EB%B2%95\"><strong>\ud30c\uc77c\ud65c\uc6a9\ubc29\ubc95<\/strong><\/a><br \/>\n\ub9cc\uc57d \uc774\uc804 \ud30c\uc77c\uc774 \uc5c6\uc744 \uacbd\uc6b0 \uc544\ub798\uc758 \ud30c\uc77c\uc744 \ub2e4\uc6b4\ub85c\ub4dc \ud558\uc5ec \uc9c4\ud589\ud55c\ub2e4<br \/>\n<a href=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/assets\/07\/start.zip\"><strong>\uc2dc\uc791 \ud30c\uc77c<\/strong><\/a><\/p>\n<h3><a href=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/7\/#2-%EC%97%B0%EA%B4%80%EB%A7%81%ED%81%AC\"><strong>#<\/strong><\/a><strong>2. \uc5f0\uad00\ub9c1\ud06c<\/strong><\/h3>\n<p>\ud83d\udd17<br \/>\n\uc5f0\uad00\ub9c1\ud06c<\/p>\n<hr>\n<p><a href=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/assets\/07\/api.pdf\">API\ub780?<\/a><\/p>\n<hr>\n<p><a href=\"https:\/\/qwerewqwerew.github.io\/book01\/docs\/javascript\/docs\/fetch\/#fetch\">fetch\uc640 promise \uc608\uc81c<\/a><\/p>\n<hr>\n<p><a href=\"https:\/\/developer.mozilla.org\/ko\/docs\/Web\/API\/Fetch_API\/Using_Fetch\">MDN fetch<\/a><\/p>\n<hr>\n<p><a href=\"https:\/\/developer.mozilla.org\/ko\/docs\/Web\/JavaScript\/Guide\/Control_flow_and_error_handling#try...catch_%EB%AC%B8\">MDN try&#8230;catch \ubb38<\/a><\/p>\n<hr>\n<p><a href=\"https:\/\/axios-http.com\/kr\/docs\/intro\">axios \uacf5\uc2dd\ud648<\/a><\/p>\n<hr>\n<h3><a href=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/7\/#3-fetch\"><strong>#<\/strong><\/a><strong>3. fetch<\/strong><\/h3>\n<h2><strong>fetch()<\/strong><\/h2>\n<p>fetch \ud568\uc218\ub294 \uc6f9\uc5d0\uc11c \ub370\uc774\ud130\ub97c \uc694\uccad\ud558\uace0 \ubc1b\uc544\uc624\ub294 \uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8 \uae30\ub2a5\uc774\ub2e4.<br \/>\n\uac04\ub2e8\ud558\uac8c\ub294 fetch(&#39;\uc8fc\uc18c&#39;)\ub97c \uc0ac\uc6a9\ud574 \ub370\uc774\ud130\ub97c \uc694\uccad\ud558\uace0, .then()\uc744 \ud1b5\ud574 \ubc1b\uc740 \ub370\uc774\ud130\ub97c \ucc98\ub9ac\ud55c\ub2e4<br \/>\n\uc6b0\ub9ac\uc758 \ub808\uc2dc\ud53c \uc571\uc740 \uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8\uc758 fetch() \ud568\uc218\ub97c \uc0ac\uc6a9\ud558\ub294\uac83\uc774 \uc815\uc11d\uc774\uae34 \ud558\uc9c0\ub9cc \uc5b4\ub824\uc6b0\ubbc0\ub85c axios \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc0ac\uc6a9\ud574\uc11c \uc81c\uc791 \ud560 \uac83\uc774\ub2e4.<br \/>\n\ud558\uc9c0\ub9cc fetch \ub97c \uc804\ud600 \ubaa8\ub974\uba74 \uc548\ub418\ubbc0\ub85c \uae30\ubcf8\uc801\uc778 \ubb38\ubc95\uc740 \uc54c\uc544\ubcf4\ub3c4\ub85d \ud558\uc790<br \/>\n<a href=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/7\/#31-fetch-%ED%95%A8%EC%88%98-%EA%B0%84%EB%8B%A8%EB%A7%9B%EB%B3%B4%EA%B8%B0\"><strong>#<\/strong><\/a><strong>3.1. fetch \ud568\uc218 \uac04\ub2e8\ub9db\ubcf4\uae30<\/strong><\/p>\n<ol>\n<li><a href=\"https:\/\/jsonplaceholder.typicode.com\/posts\"><strong>\ud83d\udd17\ub354\ubbf8\ub370\uc774\ud130 \uc0ac\uc774\ud2b8<\/strong><\/a>\u00a0\ub85c \uc774\ub3d9\ud55c\ub2e4.<\/li>\n<li>json \ub370\uc774\ud130\ub97c \ud655\uc778\ud55c\ub2e4. \ub370\uc774\ud130\uc758 \uac00\ub3c5\uc131\uc774 \uc548 \uc88b\uc744 \uacbd\uc6b0 \uc774\ubbf8\uc9c0\uc758 \ud45c\uc2dc\ub41c \ubd80\ubd84\uc744 \ud074\ub9ad\ud55c\ub2e4.<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/assets\/05-10_661.jpg\" alt=\"\"><\/p>\n<ol>\n<li>vscode \uc5d0\uc11c fatch.js \ud30c\uc77c\uc744 \uc0dd\uc131\ud6c4 \ucf54\ub4dc\ub97c \uc791\uc131\ud55c\ub2e4.<br \/>\n  src\/fetch.js<\/li>\n<\/ol>\n<pre><code class=\"language-javascript\">let response = fetch(&#39;https:\/\/jsonplaceholder.typicode.com\/posts&#39;).then((res) =&gt; {\n\tconsole.log(res);\n});\n<\/code><\/pre>\n<p>  1<br \/>\n  2<br \/>\n  3<br \/>\npromise \uac1d\uccb4\ub97c \uc0ac\uc6a9\ud574\uc11c \ubc18\ud658\ub418\ub294 \ud568\uc218\ub4e4\uc740 then\uc744 \ud1b5\ud574\uc11c \ud638\ucd9c\ud560\uc218 \uc788\ub2e4.<\/p>\n<ol>\n<li>\ucf58\uc194\ud655\uc778<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/assets\/05-10_662.jpg\" alt=\"\"><\/p>\n<ol>\n<li>fetch \ub97c \ud1b5\ud574 \ubc18\ud658\ub418\ub294 \uac12\uc740 \uc6b0\ub9ac\uac00 \uc6d0\ud558\ub294 \uacb0\uacfc\uac12\uc774 \uc544\ub2cc \uc131\uacf5\uac1d\uccb4 \uc790\uccb4 \ub97c \ubc18\ud658\ud558\ubbc0\ub85c \uc6b0\ub9ac\uac00 \uc6d0\ud558\ub294 \ud615\ud0dc\uc640 \ub2e4\ub974\ub2e4.\ud3b8\uc9c0\ub97c \ubcf4\ub0b4\uace0 \ub2f5\uc7a5\uc744 \ubc1b\uc744\ub54c \ubd09\ud22c\uc5d0 \ub2f4\uaca8 \uc788\ub294\uac83\uacfc \uac19\ub2e4<\/li>\n<li>\ubd09\ud22c\uc548\uc758 \ud3b8\uc9c0\ub97c \uaebc\ub0b4\ub4ef \ub370\uc774\ud130 \uaebc\ub0b4\uc5b4 \ucd9c\ub825 \ud574\uc57c \ud55c\ub2e4.async await \ub294 then\uc744 \uac04\uacb0\ud788 \uc791\uc131\ud560\uc218 \uc788\uac8c\ud55c\ub2e4<br \/>\n  src\/fetch.js<\/li>\n<\/ol>\n<pre><code class=\"language-javascript\">async function getData() {\n let rawResponse = await fetch(&#39;https:\/\/jsonplaceholder.typicode.com\/posts&#39;);\n let jsonResponse = await rawResponse.json();\n console.log(jsonResponse);\n}\ngetData();\n<\/code><\/pre>\n<p>  1<br \/>\n  2<br \/>\n  3<br \/>\n  4<br \/>\n  5<br \/>\n  6<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/assets\/05-10_663.jpg\" alt=\"\"><\/p>\n<p><a href=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/7\/#32-%EC%95%B1%EC%97%90-fetch-%EC%A0%81%EC%9A%A9%ED%95%B4%EB%B3%B4%EA%B8%B0\"><strong>#<\/strong><\/a><strong>3.2. \uc571\uc5d0 fetch \uc801\uc6a9\ud574\ubcf4\uae30<\/strong><\/p>\n<ol>\n<li>\uc774\ubc88\uc5d0\ub294 \uc6b0\ub9ac\uc758 \uc571\uc5d0 \uc2e4\uc81c \ub124\ud2b8\uc6cc\ud06c \ud1b5\uc2e0\uc774 \ub418\ub294 \ub370\uc774\ud130\ub97c \uc5f0\uacb0\ud574\ubcf4\uc790<br \/>\n  src \ud3f4\ub354\uc5d0 fetch.js \ud30c\uc77c\uc5d0 fetchDB \ubaa8\ub4c8\uc744 \ucd94\uac00\ud558\uace0 \ub0b4\uc6a9\uc744 \uc544\ub798\uc640 \uac19\uc774 \uc791\uc131\ud55c\ub2e4.<br \/>\n  fetch.js<\/li>\n<\/ol>\n<pre><code class=\"language-javascript\">export const fetchDB = async () =&gt; {\n try {\n \tlet res = await fetch(&#39;https:\/\/jsonplaceholder.typicode.com\/posts&#39;);\n \tlet db = await res.json();\n \treturn db;\n } catch (error) {\n \tconsole.error(error);\n }\n};\n<\/code><\/pre>\n<p>  1<br \/>\n  2<br \/>\n  3<br \/>\n  4<br \/>\n  5<br \/>\n  6<br \/>\n  7<br \/>\n  8<br \/>\n  9<\/p>\n<ol>\n<li>App.js \uc5d0 fetchDB \ub97c \uc784\ud3ec\ud2b8\ud55c\ub2e4<br \/>\n  App.js<\/li>\n<\/ol>\n<pre><code class=\"language-javascript\">import { useState, useEffect } from &#39;react&#39;;\nimport { fetchDB } from &#39;.\/fetch&#39;;\n\nfunction App() {\n const [loading, setLoading] = useState(true);\n const [data, setData] = useState([]);\n useEffect(() =&gt; {\n \tconst loadDB = async () =&gt; {\n \t\tconst db = await fetchDB();\n \t\tsetLoading(false);\n \t\tsetData(db);\n \t\tconsole.log(db);\n \t};\n \tloadDB();\n \t\/\/\uc0ad\uc81c\tsetTimeout(() =&gt; {\n \t\/\/\t}, 500);\n }, []);\n\n return (\n \t&lt;div className=&#39;App&#39;&gt;\n \t\treturn &lt;div className=&#39;App&#39;&gt;{loading ? &lt;h1&gt;\ub85c\ub529\uc911\uc785\ub2c8\ub2e4...&lt;\/h1&gt; : &lt;h1&gt;\ub3c4\ub808\ubbf8\ub808\uc2dc\ud53c&lt;\/h1&gt;}&lt;\/div&gt;;\n \t&lt;\/div&gt;\n );\n}\n\nexport default App;\n<\/code><\/pre>\n<p>  1<br \/>\n  2<br \/>\n  3<br \/>\n  4<br \/>\n  5<br \/>\n  6<br \/>\n  7<br \/>\n  8<br \/>\n  9<br \/>\n  10<br \/>\n  11<br \/>\n  12<br \/>\n  13<br \/>\n  14<br \/>\n  15<br \/>\n  16<br \/>\n  17<br \/>\n  18<br \/>\n  19<br \/>\n  20<br \/>\n  21<br \/>\n  22<br \/>\n  23<br \/>\n  24<br \/>\n  25<br \/>\n  26<\/p>\n<ol>\n<li>\ucf58\uc194\ub85c\uadf8\ub97c \ud655\uc778\ud574\ubcf4\uc790<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/assets\/05-12_669.jpg\" alt=\"\"><\/p>\n<p>  100\uac1c\uc758 \ub370\uc774\ud130\uac00 \ud655\uc778\ub41c\ub2e4 \uc774 \ub370\uc774\ud130\ub294 fetchDB\uc5d0\uc11c \uc804\ub2ec\ubc1b\uc740 \uac83\uc774\ub2e4.<\/p>\n<ol>\n<li>\ucf54\ub4dc\uc124\uba85<\/li>\n<\/ol>\n<table>\n<thead>\n<tr>\n<th><strong>\uc904\ubc88\ud638<\/strong><\/th>\n<th><strong>\ucf54\ub4dc\uc124\uba85<\/strong><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>8<\/td>\n<td>loadDB \ud568\uc218\uc5d0 \uc11c\ubc84\uc640 \ube44\ub3d9\uae30 \ud1b5\uc2e0\uc744 \ud558\uace0 \ucef4\ud3ec\ub10c\ud2b8\uc758 \uc0c1\ud0dc\ud50c \ubcc0\uacbd\ud558\ub294 \uae30\ub2a5\uc744 \uc608\uc5d1\ud55c\ub2e4.<\/td>\n<\/tr>\n<tr>\n<td>9<\/td>\n<td>\uc11c\ubc84\uc640 \ud1b5\uc2e0\uc2dc \uc11c\ubc84 \uc0c1\ud669\uc5d0 \ub530\ub77c \uc751\ub2f5\uc18d\ub3c4\uc758 \ucc28\uc774\uac00 \uc788\uc744\uc218 \uc788\uc73c\ubbc0\ub85c \ub370\uc774\ud130\ub97c \uc694\uccad\ud558\ub294 \ud568\uc218\ub294 \ube44\ub3d9\uae30\ub85c \uc791\uc131\ud55c\ub2e4.<\/td>\n<\/tr>\n<tr>\n<td>10-11<\/td>\n<td>\ucef4\ud3ec\ub10c\ud2b8\uc758 \ub85c\ub529\uacfc \ub370\uc774\ud130\uc758 \uc0c1\ud0dc\ub97c \uad00\ub9ac\ud558\ub294 \ud568\uc218\uc774\ub2e4.<\/td>\n<\/tr>\n<tr>\n<td>12<\/td>\n<td>9\ubc88\uc5d0\uc11c \uc751\ub2f5\ubc1b\uc740 \uacb0\uacfc\ub97c \ud655\uc778\ud55c\ub2e4.<\/td>\n<\/tr>\n<tr>\n<td>14<\/td>\n<td>8\ubc88\uc5d0\uc11c \uc608\uc57d\ud55c \ud568\uc218\ub97c \ud638\ucd9c\ud55c\ub2e4.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<ol>\n<li><code>data<\/code>\u00a0\ub97c \ud654\uba74\uc5d0 \ud45c\uc2dc\ud558\uae30<\/li>\n<\/ol>\n<pre><code class=\"language-javascript\">return (\n\t&lt;div className=&#39;App&#39;&gt;\n\t\t{loading ? (\n\t\t\t&lt;h1&gt;\ub85c\ub529\uc911\uc785\ub2c8\ub2e4...&lt;\/h1&gt;\n\t\t) : (\n\t\t\tdata.map((el) =&gt; {\n\t\t\t\treturn (\n\t\t\t\t\t&lt;ul key={el.id}&gt;\n\t\t\t\t\t\t&lt;li style=red&gt;{el.userId}&lt;\/li&gt;\n\t\t\t\t\t\t&lt;li&gt;{el.title}&lt;\/li&gt;\n\t\t\t\t\t\t&lt;li&gt;{el.body}&lt;\/li&gt;\n\t\t\t\t\t&lt;\/ul&gt;\n\t\t\t\t);\n\t\t\t})\n\t\t)}\n\t&lt;\/div&gt;\n);\n<\/code><\/pre>\n<p>1<br \/>\n2<br \/>\n3<br \/>\n4<br \/>\n5<br \/>\n6<br \/>\n7<br \/>\n8<br \/>\n9<br \/>\n10<br \/>\n11<br \/>\n12<br \/>\n13<br \/>\n14<br \/>\n15<br \/>\n16<br \/>\n17<\/p>\n<h3><a href=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/7\/#4-%EA%B3%B5%EA%B3%B5-api-%EC%8B%A0%EC%B2%AD\"><strong>#<\/strong><\/a><strong>4. \uacf5\uacf5 API \uc2e0\uccad<\/strong><\/h3>\n<ol>\n<li><a href=\"https:\/\/www.foodsafetykorea.go.kr\/api\/loginNew.do?menu_no=3817&#038;menu_grp=MENU_NEW07\"><strong>\ud83d\udd17\uc2dd\ud488\uc548\uc804\ub098\ub77c<\/strong><\/a>\u00a0\ud68c\uc6d0\uac00\uc785\uc744 \ud55c\ub2e4.<\/li>\n<li>\uac80\uc0c9\ucc3d\uc5d0 \ub808\uc2dc\ud53c \uc785\ub825\ud6c4 \ud574\ub2f9 \ub9ac\uc2a4\ud2b8 \ud074\ub9ad<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/assets\/05-12_670.jpg\" alt=\"\"><\/p>\n<ol>\n<li>OPEN-API \ud0ed \ud074\ub9ad<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/assets\/05-12_671.jpg\" alt=\"\"><\/p>\n<ol>\n<li>\uc778\uc99d\ud0a4\ubc1c\uae09\uc2e0\uccad \ud074\ub9ad<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/assets\/05-12_672.jpg\" alt=\"\"><\/p>\n<ol>\n<li>\uc57d\uad00\ub3d9\uc758 \ud6c4 \ud65c\uc6a9\ubaa9\uc801\uc744 \uac04\ub2e8\ud788 \uae30\uc7ac\ud55c\ub2e4.<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/assets\/05-12_673.jpg\" alt=\"\"><\/p>\n<ol>\n<li>1~2\uc77c \uc774\ud6c4 \ud68c\uc6d0 \uac00\uc785\uc2dc \uc791\uc131\ud55c \uc774\uba54\uc77c\uc774\ub098 \uc2dd\ud488\uc548\uc804\ub098\ub77c\uc758 \uc778\uc99d\ud0a4 \uc2e0\uccad\ud604\ud669\uc5d0\uc11c \ubc1c\uae09\ub41c \ud0a4\ub97c \ud655\uc778\ud55c\ub2e4.<\/li>\n<\/ol>\n<h3><a href=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/7\/#5-axios\"><strong>#<\/strong><\/a><strong>5. Axios<\/strong><\/h3>\n<p><a href=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/7\/#51-api-%EC%97%B0%EA%B2%B0%ED%95%98%EA%B8%B0\"><strong>#<\/strong><\/a><strong>5.1. API \uc5f0\uacb0\ud558\uae30<\/strong><\/p>\n<ol>\n<li>API \uc694\uccad\uc8fc\uc18c \uc0b4\ud3b4\ubcf4\uae30<br \/>\n  API\uc694\uccad\uc8fc\uc18c\ub294 \ub85c\uadf8\uc778\uc2dc\uc5d0\ub9cc \uacf5\uac1c\ub418\ubbc0\ub85c \ud558\ub2e8\uc758 \ub9c1\ud06c\ub97c \uc774\uc6a9\ud558\uc5ec \ud655\uc778\ud55c\ub2e4.<br \/>\n  <strong>\uc694\uccad\uc8fc\uc18c\ud655\uc778\ud558\uae30<\/strong><\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/assets\/api-document.png\" alt=\"\"><\/p>\n<ol>\n<li>\uc694\uccad\uc8fc\uc18c\uc758 \uc0d8\ud50c\uc8fc\uc18c\ub97c \ubcf5\uc0ac\ud558\uc5ec \uc8fc\uc18c\ucc3d\uc5d0 \ub123\uc73c\uba74 \ub370\uc774\ud130\uac00 \ud655\uc778\ub41c\ub2e4.<\/li>\n<li>URL\ub4a4\uc5d0 \uc6d0\ud558\ub294 \ub370\uc774\ud130\ub97c \uc694\uccad\uc778\uc790\ud45c\ub97c \ubcf4\uace0 \ud30c\ub77c\ubbf8\ud130\ub85c \uc804\ub2ec\ud558\uba74 \uc6d0\ud558\ub294 \ub370\uc774\ud130\ub97c \uace8\ub77c\uc11c \ubc1b\uc744\uc218 \uc788\ub2e4.<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/assets\/05-12_675.jpg\" alt=\"\"><\/p>\n<ol>\n<li>\ub370\uc774\ud130 \ud655\uc778\ud574\ubcf4\uae30<br \/>\n  \uc815\ub9d0 \uadf8\ub7f0\uc9c0 API\ub97c \ubc14\ub85c \uc0ac\uc6a9\ud574 \ubcf4\uc790.<br \/>\n  fetch.js\uc5d0 \uc791\uc131\ud55c\ub2e4.<br \/>\n  fetch.js<\/li>\n<\/ol>\n<pre><code class=\"language-javascript\">\/\/let res = await fetch(&#39;https:\/\/jsonplaceholder.typicode.com\/posts&#39;);\n\/\/ \uc778\uc99d\ud0a4=\ubc1c\uae09\ubc1b\uc740api\ud0a4 \/ \uc11c\ube44\uc2a4\uba85=COOKRCP01 \/ \uc694\uccad\ud30c\uc77c\ud0c0\uc785=json \/ \uc694\uccad\uc2dc\uc791\uc704\uce58=1 \/ \uc694\uccad\uc885\ub8cc\uc704\uce58=100\nlet res = await fetch(&#39;http:\/\/openapi.foodsafetykorea.go.kr\/api\/\uc778\uc99d\ud0a4\/COOKRCP01\/json\/1\/100&#39;);\n<\/code><\/pre>\n<p>  1<br \/>\n  2<br \/>\n  3<\/p>\n<ol>\n<li>\uc2e4\ud589\ud654\uba74 \ubcf4\uae30<br \/>\n  \ucef4\ud3ec\ub10c\ud2b8\uc5d0\ub294 \ub370\uc774\ud130\uc758 \ud0a4\uac00 \ub9de\uc9c0 \uc54a\uc544 \ub2f9\uc5f0\ud788 \uc624\ub958\uac00 \ub09c\ub2e4.<br \/>\n  \ucf58\uc194\ucc3d\uc744 \ud655\uc778\ud558\uba74 \ud1b5\uc2e0\uacb0\uacfc\ub294 \uc131\uacf5\uc73c\ub85c \ud655\uc778\ub418\uba70 100\uac1c\uc758 \ub808\uc2dc\ud53c \ub370\uc774\ud130\uac00 \ud655\uc778\ub41c\ub2e4.<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/assets\/05-12_676.jpg\" alt=\"\"><\/p>\n<p><a href=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/7\/#52-axios-%EC%84%A4%EC%B9%98\"><strong>#<\/strong><\/a><strong>5.2. Axios \uc124\uce58<\/strong><br \/>\nAxios\ub780 \ube0c\ub77c\uc6b0\uc800\uc640 Node.js \ud658\uacbd\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \ube44\ub3d9\uae30 HTTP \ud1b5\uc2e0 \ub77c\uc774\ube0c\ub7ec\ub9ac.<br \/>\nAxios\ub97c \uc0ac\uc6a9\ud558\uba74 HTTP \uc694\uccad\uc744 \uc27d\uac8c \ubcf4\ub0b4\uace0 \uc751\ub2f5\uc744 \ucc98\ub9ac\ud560 \uc218 \uc788\uc73c\uba70, Promise API\ub97c \uae30\ubc18\uc73c\ub85c \ube44\ub3d9\uae30 \uc791\uc5c5\uc744 \uc6a9\uc774\ud558\uac8c \ud55c\ub2e4.<br \/>\nAxios\ub294 GET, POST, PUT, DELETE \ub4f1\uc758 HTTP \uba54\uc11c\ub4dc\ub97c \ubaa8\ub450 \uc9c0\uc6d0\ud558\uba70, \uc694\uccad\uacfc \uc751\ub2f5\uc744 JSON \ud615\ud0dc\ub85c \uc790\ub3d9 \ubcc0\ud658\ud574\uc900\ub2e4.<\/p>\n<ol>\n<li>axios \uc124\uce58\ud558\uae30\uc2e4\ud589\uc911\uc778 \uac1c\ubc1c\uc11c\ubc84\ub97c \ub2eb\uace0 \ub77c\uc774\ube0c\ub7ec\ub9ac \uc124\uce58\ud6c4 \uc7ac\uc2e4\ud589\ud55c\ub2e4.<\/li>\n<\/ol>\n<pre><code class=\"language-shell\">npm i axios\nnpm start\n<\/code><\/pre>\n<ol>\n<li>\uc544\ub798\uc758 \ucf54\ub4dc\ub97c \uc791\uc131\ud558\uc5ec \ub370\uc774\ud130\ub97c axios\ub97c \uc784\ud3ec\ud2b8 \ud55c\ub2e4.3\ubc88\ub77c\uc778 \uc0ad\uc81c.<br \/>\n  App.js<\/li>\n<\/ol>\n<pre><code class=\"language-javascript\">import axios from &#39;axios&#39;;\nimport { useState, useEffect } from &#39;react&#39;;\n\/\/import { fetchDB } from &#39;.\/fetch&#39;;\n<\/code><\/pre>\n<p>  1<br \/>\n  2<br \/>\n  3<br \/>\n<a href=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/7\/#53-%EB%A0%88%EC%8B%9C%ED%94%BC%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B0%9B%EC%95%84%EC%98%A4%EA%B8%B0\"><strong>#<\/strong><\/a><strong>5.3. \ub808\uc2dc\ud53c\ub370\uc774\ud130 \ubc1b\uc544\uc624\uae30<\/strong><br \/>\n\uc704\uc5d0\uc11c \uc5b8\uae09\ud588\ub4ef \uc11c\ubc84\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 \ub370\uc774\ud130\ub97c \ubc1b\uc544\uc624\ub294 \uc791\uc5c5\uc740 \ucef4\ud3ec\ub10c\ud2b8\ub97c \ub80c\ub354\ub9c1 \ud558\ub294 \uc791\uc5c5\uc5d0 \ube44\ud574 \uc2dc\uac04\uc774 \uc624\ub798 \uac78\ub9ac\ubbc0\ub85c \ube44\ub3d9\uae30\uc2dd\uc73c\ub85c \uc791\uc131\ud55c\ub2e4.<\/p>\n<ol>\n<li>\ub370\uc774\ud130\ub97c \ubc1b\uc544\uc624\ub294 \ud568\uc218 getDB \uc5d0 async\ub97c \ud560\ub2f9\ud55c\ub2e4.\uc11c\ubc84\uc640\uc758 \ud1b5\uc2e0\uc911 \uc624\ub958\uc0c1\ud669\uc5d0 \ub300\ube44\ud558\uc5ec try~catch \ubb38 \uc73c\ub85c \uc608\uc678\ucc98\ub9ac\ub97c \uc791\uc131\ud55c\ub2e4.<br \/>\n  App.js<\/li>\n<\/ol>\n<pre><code class=\"language-javascript\"> ...\n function App() {\n const [loading, setLoading] = useState(true);\n const [data, setData] = useState([]);\nconst getDB = async () =&gt; {\n try {\n \tconst DB = await axios.get(&#39;http:\/\/openapi.foodsafetykorea.go.kr\/api\/\ubc1c\uae09\ubc1b\uc740 \uc11c\ube44\uc2a4\ud0a4\/COOKRCP01\/json\/1\/100&#39;);\n \tconsole.log(DB); \/\/ \uc751\ub2f5 \ub370\uc774\ud130 \ud655\uc778.\n } catch (error) {\n \tconsole.error(&#39;\ub370\uc774\ud130\ub97c \ubd88\ub7ec\uc624\ub294\ub370 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.&#39;, error);\n }\n};\n\/\/useEffect\ub85c \ucef4\ud3ec\ub10c\ud2b8 \ub9c8\uc6b4\ud2b8\uc2dc getDB\ud568\uc218\ub97c \ud638\ucd9c\ud55c\ub2e4.\nuseEffect(() =&gt; {\n getDB();\n setLoading(false);\n}, []);\n<\/code><\/pre>\n<p>  1<br \/>\n  2<br \/>\n  3<br \/>\n  4<br \/>\n  5<br \/>\n  6<br \/>\n  7<br \/>\n  8<br \/>\n  9<br \/>\n  10<br \/>\n  11<br \/>\n  12<br \/>\n  13<br \/>\n  14<br \/>\n  15<br \/>\n  16<br \/>\n  17<\/p>\n<ol>\n<li>\uacb0\uacfc\ud655\uc778\uc11c\ubc84\uc5d0\uc11c \ub2e4\uc591\ud55c \ub370\uc774\ud130\ub97c \uc804\ub2ec\ud558\uace0 \uc788\ub294\uac83\uc774 \ud655\uc778\ub41c\ub2e4.\uc774\uc911 \uc6b0\ub9ac\uac00 \uc6d0\ud558\ub294 \uac12\uc740 data.COOKRCP01.row\uc5d0 \ubc30\uc5f4\ud615\ud0dc\ub85c \ubc18\ud658\ub418\uc5c8\ub2e4.<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/assets\/05-12_677.jpg\" alt=\"\"><\/p>\n<h3><a href=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/7\/#6-%EB%A0%88%EC%8B%9C%ED%94%BC-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%99%94%EB%A9%B4%EC%97%90-%EA%B7%B8%EB%A6%AC%EA%B8%B0\"><strong>#<\/strong><\/a><strong>6. \ub808\uc2dc\ud53c \ub370\uc774\ud130 \ud654\uba74\uc5d0 \uadf8\ub9ac\uae30<\/strong><\/h3>\n<p><a href=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/7\/#61-%EA%B0%9D%EC%B2%B4%EC%97%90-%EC%9E%88%EB%8A%94-%ED%82%A4%EC%97%90-%EC%A1%B0%EA%B8%88-%EB%8D%94-%EB%98%91%EB%98%91%ED%95%98%EA%B2%8C-%EC%A0%91%EA%B7%BC%ED%95%98%EA%B8%B0\"><strong>#<\/strong><\/a><strong>6.1. \uac1d\uccb4\uc5d0 \uc788\ub294 \ud0a4\uc5d0 \uc870\uae08 \ub354 \ub611\ub611\ud558\uac8c \uc811\uadfc\ud558\uae30<\/strong><\/p>\n<ol>\n<li><code>data.COOKRCP01.row<\/code>\u00a0\uc5d0\uc11c \uc77c\ub2e8\u00a0<code>data<\/code>\u00a0\uae4c\uc9c0 \uad6c\uc870\ubd84\ud574\ud560\ub2f9\uc73c\ub85c \uaebc\ub0b4\ubcf4\uc790<br \/>\n  App.js<\/li>\n<\/ol>\n<pre><code class=\"language-javascript\">...\nfunction App() {\n const [loading, setLoading] = useState(true);\n const [data, setData] = useState([]);\n const getDB = async () =&gt; {\n \ttry {\n \t\tconst { data } = await axios.get(&#39;http:\/\/openapi.foodsafetykorea.go.kr\/api\/08cc9b42270a4439b1b5\/COOKRCP01\/json\/1\/100&#39;);\n \t\tconsole.log(data);\n...\n<\/code><\/pre>\n<p>  1<br \/>\n  2<br \/>\n  3<br \/>\n  4<br \/>\n  5<br \/>\n  6<br \/>\n  7<br \/>\n  8<br \/>\n  9<\/p>\n<ol>\n<li>\ucf58\uc194\uba54\uc2dc\uc9c0\ub294 1\ucd08 \uc815\ub3c4 \uae30\ub2e4\ub9ac\uba74 \ud655\uc778\ub41c\ub2e4.<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/assets\/05-12_678.jpg\" alt=\"\"><\/p>\n<ol>\n<li>\uc0c1\ud0dc\uad00\ub9ac\ub97c \uc5ec\ub7ec\uac1c \ud560 \uacbd\uc6b0 \uac1d\uccb4\ub97c \ud65c\uc6a9\ud558\uc5ec \uac04\ub2e8\ud788 \uad00\ub9ac\ud560\uc218 \uc788\ub2e4.\u00a0\ub450\uac1c\uc758 \uc2a4\uc704\uce58\ub85c \uac01\uac01 \uc81c\uc5b4\ud558\ub358 \uc804\ub4f1\uc744\u00a0\ud558\ub098\uc758 \uba40\ud2f0 \uc2a4\uc704\uce58\ub85c \uad00\ub9ac\ud55c\ub2e4\uace0 \uc774\ud574\ud558\uba74 \uc27d\ub2e4. \uc774\ub54c \uc0ac\uc6a9\ud558\ub294 \uc790\ub8cc\ud615\uc774 \uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8\uc758 \uac1d\uccb4\ud615\uc774\ub2e4.<br \/>\n  loading,setLoadng\uc758 \ucd08\uae30\uac12\uc744 \uac1d\uccb4\ub85c \uad00\ub9ac\ud55c\ub2e4.<br \/>\n  App.js<\/li>\n<\/ol>\n<pre><code class=\"language-javascript\">const [loading, setLoading] = useState({ state: true, data: [] });\n<\/code><\/pre>\n<p>  1<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/assets\/byby01.jpg\" alt=\"\"><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/assets\/byby02.jpg\" alt=\"\"><\/p>\n<ol>\n<li>\ucef4\ud3ec\ub10c\ud2b8\uc5d0 \uadf8\ub9ac\uae30<br \/>\n  App.js<\/li>\n<\/ol>\n<pre><code class=\"language-javascript\">...\nconst getDB = async () =&gt; {\n try {\n \tconst { data } = await axios.get(&#39;http:\/\/openapi.foodsafetykorea.go.kr\/api\/\ubc1c\uae09\ubc1b\uc740 \uc11c\ube44\uc2a4\ud0a4\/COOKRCP01\/json\/1\/100&#39;);\n \tsetLoading({ state: false, data: data.COOKRCP01.row });\n \tconsole.log(data);\n } catch (error) {\n \tconsole.error(&#39;\ub370\uc774\ud130\ub97c \ubd88\ub7ec\uc624\ub294\ub370 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.&#39;, error);\n }\n};\nuseEffect(() =&gt; {\n getDB();\n}, []);\nreturn (\n&lt;div className=&#39;App&#39;&gt;\n {loading.state ? (\n \t&lt;h1&gt;\ub85c\ub529\uc911\uc785\ub2c8\ub2e4...&lt;\/h1&gt;\n ) : (\n \tloading.data.map((a) =&gt; (\n \t\t&lt;div key={a.RCP_SEQ}&gt;\n \t\t\t&lt;span style=red&gt;{a.RCP_NM}&lt;\/span&gt;\n \t\t\t&lt;span&gt;{a.RCP_WAY2}&lt;\/span&gt;\n \t\t&lt;\/div&gt;\n \t))\n )}\n&lt;\/div&gt;\n...\n<\/code><\/pre>\n<p>  1<br \/>\n  2<br \/>\n  3<br \/>\n  4<br \/>\n  5<br \/>\n  6<br \/>\n  7<br \/>\n  8<br \/>\n  9<br \/>\n  10<br \/>\n  11<br \/>\n  12<br \/>\n  13<br \/>\n  14<br \/>\n  15<br \/>\n  16<br \/>\n  17<br \/>\n  18<br \/>\n  19<br \/>\n  20<br \/>\n  21<br \/>\n  22<br \/>\n  23<br \/>\n  24<br \/>\n  25<br \/>\n  26<br \/>\n  27<\/p>\n<ol>\n<li>\uacb0\uacfc\ud655\uc778<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/assets\/05-12_679.jpg\" alt=\"\"><\/p>\n<p><a href=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/7\/#62-%EC%BD%94%EB%93%9C%EA%B0%9C%EC%84%A0%ED%95%98%EA%B8%B0refactoring\"><strong>#<\/strong><\/a><strong>6.2. \ucf54\ub4dc\uac1c\uc120\ud558\uae30(Refactoring)<\/strong><\/p>\n<ol>\n<li><code>setLoading({ state: false, data: data.COOKRCP01.row });<\/code>\u00a0\uc774 \ubd80\ubd84\uc744 \uad6c\uc870\ubd84\ud574\ud560\ub2f9\uc73c\ub85c \uc904\uc5ec\ubcf4\uc790.data \ub97c \ud55c\ubc88\ub354 \ubd84\ud574\ud574\uc11c row\ud0a4\uc758 \ub370\uc774\ud130\ub9cc \ucd94\ucd9c\ud558\uba74 \ub354\uc6b1 \uac04\uacb0\ud55c \ucf54\ub4dc\ub97c \uad6c\ud604\ud560\uc218 \uc788\ub2e4.<br \/>\n  App.js<\/li>\n<\/ol>\n<pre><code class=\"language-javascript\">function App() {\n\tconst [loading, setLoading] = useState({ state: true, data: [] });\n\tconst getDB = async () =&gt; {\n\t\ttry {\n\t\t\tconst {data} = await axios.get(&#39;http:\/\/openapi.foodsafetykorea.go.kr\/api\/\ubc1c\uae09\ubc1b\uc740 \uc11c\ube44\uc2a4\ud0a4\/COOKRCP01\/json\/1\/100&#39;);\n\t\t\tconst {\tCOOKRCP01: { row } } = data;\n\t\t\tsetLoading({ state: false, data: row });\n\t\t} catch (error) {\n\t\t\tconsole.error(&#39;\ub370\uc774\ud130\ub97c \ubd88\ub7ec\uc624\ub294\ub370 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.&#39;, error);\n\t\t}\n\t};\n\tuseEffect(() =&gt; {\n\t\tgetDB();\n\t}, []);\n\treturn (\n\t&lt;div className=&#39;App&#39;&gt;\n\t\t{loading.state ? (\n\t\t\t&lt;h1&gt;\ub85c\ub529\uc911\uc785\ub2c8\ub2e4...&lt;\/h1&gt;\n\t\t) : (\n\t\t\tloading.data.map((el) =&gt; (\n\t\t\t\t&lt;div key={el.RCP_SEQ}&gt;\n\t\t\t\t\t&lt;span style=red&gt;{el.RCP_NM}&lt;\/span&gt;\n\t\t\t\t\t&lt;span&gt;{el.RCP_WAY2}&lt;\/span&gt;\n\t\t\t\t&lt;\/div&gt;\n\t\t\t))\n\t\t)}\n\t&lt;\/div&gt;\n);\n...\n<\/code><\/pre>\n<p>  1<br \/>\n  2<br \/>\n  3<br \/>\n  4<br \/>\n  5<br \/>\n  6<br \/>\n  7<br \/>\n  8<br \/>\n  9<br \/>\n  10<br \/>\n  11<br \/>\n  12<br \/>\n  13<br \/>\n  14<br \/>\n  15<br \/>\n  16<br \/>\n  17<br \/>\n  18<br \/>\n  19<br \/>\n  20<br \/>\n  21<br \/>\n  22<br \/>\n  23<br \/>\n  24<br \/>\n  25<br \/>\n  26<br \/>\n  27<br \/>\n  28<br \/>\n  29<br \/>\n<a href=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/7\/#63-%ED%95%84%EC%9A%94%ED%95%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A7%8C-%EC%B6%94%EC%B6%9C%ED%95%98%EC%97%AC-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8-%ED%95%98%EC%9E%90\"><strong>#<\/strong><\/a><strong>6.3. \ud544\uc694\ud55c \ub370\uc774\ud130\ub9cc \ucd94\ucd9c\ud558\uc5ec \uc5c5\ub370\uc774\ud2b8 \ud558\uc790<\/strong><\/p>\n<ol>\n<li>\uc751\ub2f5\ub370\uc774\ud130\uc758 \uad6c\uc870\ub97c \uc0b4\ud3b4\ubcf4\uace0 \uad6c\uc870\uc5d0 \ub9de\uac8c \ud0a4\ub97c \ub123\uc5b4 \ucef4\ud3ec\ub10c\ud2b8\uc5d0 \ub80c\ub354\ub9c1 \uc2dc\ucf1c\ubcf4\uc790.\ud0a4\uc5d0 \ud574\ub2f9\ud558\ub294 \ub0b4\uc6a9\uc740 OPEN-API \ud398\uc774\uc9c0 \ud558\ub2e8\uc758 \ucd9c\ub825\ud56d\ubaa9 \ud45c\uc5d0\uc11c \ud655\uc778\ud560\uc218 \uc788\ub2e4<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/assets\/05-12_680.jpg\" alt=\"\"><\/p>\n<p>  App.js<\/p>\n<pre><code class=\"language-javascript\">...\nconst {\tCOOKRCP01: { row } } = data;\nsetLoading({ state: false, data: row });\nconsole.log(&#39;data&#39;, loading.data);\n...\n loading.data.map((el) =&gt; (\n \t&lt;div key={el.RCP_SEQ}&gt;\n \t\t&lt;span style=red&gt;{el.RCP_NM}&lt;\/span&gt;\n \t\t&lt;span&gt;{el.RCP_WAY2}&lt;\/span&gt;\n \t\t&lt;div&gt;\n \t\t\t&lt;span&gt;{el.MANUAL01}&lt;\/span&gt;\n \t\t\t&lt;span&gt;{el.MANUAL02}&lt;\/span&gt;\n \t\t\t&lt;span&gt;{el.MANUAL03}&lt;\/span&gt;\n \t\t&lt;\/div&gt;\n \t&lt;\/div&gt;\n<\/code><\/pre>\n<p>  1<br \/>\n  2<br \/>\n  3<br \/>\n  4<br \/>\n  5<br \/>\n  6<br \/>\n  7<br \/>\n  8<br \/>\n  9<br \/>\n  10<br \/>\n  11<br \/>\n  12<br \/>\n  13<br \/>\n  14<br \/>\n  15<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/assets\/05-12_681.jpg\" alt=\"\"><\/p>\n<ol>\n<li>\uc571\uc744 \uc2e4\ud589\ud574 \ubcf4\uba74 \ucc98\uc74c\uc5d0\ub294 isLoading&#8230; \uc774 \ud654\uba74\uc5d0 \ub098\ud0c0\ub098\ub2e4\uac00, \ub370\uc774\ud130\uac00 \ud654\uba74\uc5d0 \ub80c\ub354\ub418\ub294\uac83\uc744 \ubcfc\uc218\uc788\ub2e4<br \/>\n  \uc8fc\uc758) \uac00\ub054 API\uac00 \uc624\uc791\ub3d9\ud558\uba70 axios.get()\uc774 \uc81c\ub300\ub85c \uc2e4\ud589\ub418\uc9c0 \uc54a\uc744 \uc218\ub3c4 \uc788\ub2e4. \uadf8\ub7f0 \uacbd\uc6b0\uc5d0\ub294 1~2\ubd84 \uc815\ub3c4 \uae30\ub2e4\ub838\ub2e4\uac00 \ub2e4\uc2dc \ub9ac\uc561\ud2b8 \uc571\uc744 \uc2e4\ud589\ud574 \ubcf4\uc790.<\/li>\n<\/ol>\n<h3><a href=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/7\/#7-%EC%97%AC%EA%B8%B0%EA%B9%8C%EC%A7%80-%EA%B9%83%ED%97%88%EB%B8%8C%EC%97%90-%EC%98%AC%EB%A6%AC%EA%B8%B0\"><strong>#<\/strong><\/a><strong>7. \uc5ec\uae30\uae4c\uc9c0 \uae43\ud5c8\ube0c\uc5d0 \uc62c\ub9ac\uae30<\/strong><\/h3>\n<pre><code class=\"language-shell\">git add .\ngit commit -m &quot;07 api \uc5f0\uacb0&quot;\ngit push origin main\n<\/code><\/pre>\n<p>1<br \/>\n2<br \/>\n3<\/p>\n<h3><a href=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/7\/#8-%EC%99%84%EB%A3%8C%ED%8C%8C%EC%9D%BC-%EB%82%B4%EB%A0%A4%EB%B0%9B%EA%B8%B0\"><strong>#<\/strong><\/a><strong>8. \uc644\ub8cc\ud30c\uc77c \ub0b4\ub824\ubc1b\uae30<\/strong><\/h3>\n<p><a href=\"https:\/\/qwerewqwerew.github.io\/retype-react\/%EB%A0%88%EC%8B%9C%ED%94%BC%EC%95%B1\/assets\/07\/07_fin.zip\"><strong>\uc644\ub8cc \ud30c\uc77c<\/strong><\/a><br \/>\n<a href=\"https:\/\/qwerewqwerew.github.io\/retype-react\/tags\/%EB%A6%AC%EC%95%A1%ED%8A%B8\/\"><strong>\ub9ac\uc561\ud2b8<\/strong><\/a><a href=\"https:\/\/qwerewqwerew.github.io\/retype-react\/tags\/react\/\"><strong>react<\/strong><\/a><a href=\"https:\/\/qwerewqwerew.github.io\/retype-react\/tags\/nodejs\/\"><strong>nodejs<\/strong><\/a><a href=\"https:\/\/qwerewqwerew.github.io\/retype-react\/tags\/node\/\"><strong>node<\/strong><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>1. \uc2dc\uc791\ud30c\uc77c \ud30c\uc77c\ub2e4\uc6b4\ub85c\ub4dc \ud30c\uc77c\ud65c\uc6a9\ubc29\ubc95 \ub9cc\uc57d \uc774\uc804 \ud30c\uc77c\uc774 \uc5c6\uc744 \uacbd\uc6b0 \uc544\ub798\uc758 \ud30c\uc77c\uc744 \ub2e4\uc6b4\ub85c\ub4dc \ud558\uc5ec \uc9c4\ud589\ud55c\ub2e4 \uc2dc\uc791 \ud30c\uc77c #2. \uc5f0\uad00\ub9c1\ud06c \ud83d\udd17 \uc5f0\uad00\ub9c1\ud06c API\ub780? fetch\uc640 promise \uc608\uc81c MDN fetch MDN try&#8230;catch \ubb38 axios \uacf5\uc2dd\ud648 #3. fetch fetch() fetch \ud568\uc218\ub294 \uc6f9\uc5d0\uc11c \ub370\uc774\ud130\ub97c \uc694\uccad\ud558\uace0 \ubc1b\uc544\uc624\ub294 \uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8 \uae30\ub2a5\uc774\ub2e4. \uac04\ub2e8\ud558\uac8c\ub294 fetch(&#39;\uc8fc\uc18c&#39;)\ub97c \uc0ac\uc6a9\ud574 \ub370\uc774\ud130\ub97c \uc694\uccad\ud558\uace0, .then()\uc744 \ud1b5\ud574 \ubc1b\uc740 \ub370\uc774\ud130\ub97c \ucc98\ub9ac\ud55c\ub2e4 \uc6b0\ub9ac\uc758 \ub808\uc2dc\ud53c \uc571\uc740 &#8230; <a title=\"api\ud65c\uc6a9\" class=\"read-more\" href=\"https:\/\/coalacoding.com\/?p=174\" aria-label=\"api\ud65c\uc6a9\uc5d0 \ub300\ud574 \ub354 \uc790\uc138\ud788 \uc54c\uc544\ubcf4\uc138\uc694\">\ub354 \uc77d\uae30<\/a><\/p>\n","protected":false},"author":0,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"class_list":["post-174","post","type-post","status-publish","format-standard","hentry","category-react-api"],"_links":{"self":[{"href":"https:\/\/coalacoding.com\/index.php?rest_route=\/wp\/v2\/posts\/174","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/coalacoding.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/coalacoding.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/coalacoding.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=174"}],"version-history":[{"count":0,"href":"https:\/\/coalacoding.com\/index.php?rest_route=\/wp\/v2\/posts\/174\/revisions"}],"wp:attachment":[{"href":"https:\/\/coalacoding.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=174"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/coalacoding.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=174"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/coalacoding.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=174"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}