<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>think2659 님의 블로그</title>
    <link>https://think2659.tistory.com/</link>
    <description>i code, therefore, i am
 그러나 마케팅를 곁들인..</description>
    <language>ko</language>
    <pubDate>Thu, 30 Jul 2026 02:12:04 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>think2659</managingEditor>
    <image>
      <title>think2659 님의 블로그</title>
      <url>https://tistory1.daumcdn.net/tistory/7322176/attach/c918b7f7993846049f4f0ac8a366d449</url>
      <link>https://think2659.tistory.com</link>
    </image>
    <item>
      <title>&amp;ldquo;쿼리 스트링 쉽게 이해하기! URL에 정보를 쏙쏙 담는 법&amp;rdquo;</title>
      <link>https://think2659.tistory.com/80</link>
      <description>&lt;h2 data-end=&quot;123&quot; data-start=&quot;96&quot; data-ke-size=&quot;size26&quot;&gt;  상세 배경 설명: 쿼리 스트링이란?&lt;/h2&gt;
&lt;p data-end=&quot;257&quot; data-start=&quot;124&quot; data-ke-size=&quot;size16&quot;&gt;웹에서 데이터를 서버에 요청할 때, URL 끝에 붙는 ?와 &amp;amp;로 구분된 &amp;lsquo;키=값&amp;rsquo; 쌍들을 쿼리 스트링(Query String)이라고 해요.&lt;br /&gt;예를 들어, 검색어, 페이지 번호, 필터 조건 등을 서버에 전달할 때 많이 사용하죠.&lt;/p&gt;
&lt;p data-end=&quot;318&quot; data-start=&quot;259&quot; data-ke-size=&quot;size16&quot;&gt;쿼리 스트링은 GET 요청에 자주 쓰이고, 서버는 이 값을 읽어 사용자가 원하는 데이터를 반환해줍니다.&lt;/p&gt;
&lt;hr data-end=&quot;323&quot; data-start=&quot;320&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;353&quot; data-start=&quot;325&quot; data-ke-size=&quot;size26&quot;&gt;  실무 예제 코드: 쿼리 스트링 사용법&lt;/h2&gt;
&lt;pre id=&quot;code_1748404787250&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 검색어와 페이지 번호를 쿼리 스트링으로 전달
const searchTerm = 'coffee';
const page = 2;

const url = `https://api.example.com/products?search=${encodeURIComponent(searchTerm)}&amp;amp;page=${page}`;

fetch(url)
  .then(res =&amp;gt; res.json())
  .then(data =&amp;gt; console.log(data))
  .catch(err =&amp;gt; console.error('Error:', err));&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;744&quot; data-start=&quot;671&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;744&quot; data-start=&quot;671&quot;&gt;encodeURIComponent()는 특수문자(공백, &amp;amp;, = 등)를 URL에 안전하게 포함시키기 위해 꼭 써야 해요.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;749&quot; data-start=&quot;746&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;772&quot; data-start=&quot;751&quot; data-ke-size=&quot;size26&quot;&gt;⚠️ 자주 하는 실수와 해결법&lt;/h2&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;772&quot; data-origin-height=&quot;215&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmltfe/btsOgNxe7li/jmNKRpj2GTFwd1FVNzre1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmltfe/btsOgNxe7li/jmNKRpj2GTFwd1FVNzre1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmltfe/btsOgNxe7li/jmNKRpj2GTFwd1FVNzre1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbmltfe%2FbtsOgNxe7li%2FjmNKRpj2GTFwd1FVNzre1k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;772&quot; height=&quot;215&quot; data-origin-width=&quot;772&quot; data-origin-height=&quot;215&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;1235&quot; data-start=&quot;1221&quot; data-ke-size=&quot;size26&quot;&gt;  초보자 팁!&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1375&quot; data-start=&quot;1236&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1281&quot; data-start=&quot;1236&quot;&gt;쿼리 스트링은 URL에 데이터를 담아 서버에 전달하는 가장 기본적인 방법!&lt;/li&gt;
&lt;li data-end=&quot;1330&quot; data-start=&quot;1282&quot;&gt;값을 직접 넣을 때는 항상 encodeURIComponent로 인코딩 필수!&lt;/li&gt;
&lt;li data-end=&quot;1375&quot; data-start=&quot;1331&quot;&gt;주소창에 붙여서 확인하면 어떤 데이터가 전달되는지 한눈에 알 수 있어요.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1380&quot; data-start=&quot;1377&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1396&quot; data-start=&quot;1382&quot; data-ke-size=&quot;size26&quot;&gt;  실력자 팁!&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1550&quot; data-start=&quot;1397&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1441&quot; data-start=&quot;1397&quot;&gt;복잡한 쿼리 스트링은 URLSearchParams API 사용하면 편리!&lt;/li&gt;
&lt;li data-end=&quot;1497&quot; data-start=&quot;1442&quot;&gt;서버에서 쿼리 스트링 파싱 라이브러리(예: qs, query-string)로 쉽게 처리 가능&lt;/li&gt;
&lt;li data-end=&quot;1550&quot; data-start=&quot;1498&quot;&gt;RESTful API에서 필터링, 정렬, 페이징 기능 구현 시 쿼리 스트링 활용 극대화&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>국비지원 - 실버마케팅(코딩) 250206~</category>
      <author>think2659</author>
      <guid isPermaLink="true">https://think2659.tistory.com/80</guid>
      <comments>https://think2659.tistory.com/80#entry80comment</comments>
      <pubDate>Wed, 28 May 2025 13:00:19 +0900</pubDate>
    </item>
    <item>
      <title>&amp;ldquo;RESTful API 사용법: 잘 지키면 팀도 사용자도 행복해지는 규칙들!&amp;rdquo;</title>
      <link>https://think2659.tistory.com/79</link>
      <description>&lt;h2 data-end=&quot;131&quot; data-start=&quot;100&quot; data-ke-size=&quot;size26&quot;&gt;  상세 배경 설명: RESTful API란?&lt;/h2&gt;
&lt;p data-end=&quot;261&quot; data-start=&quot;132&quot; data-ke-size=&quot;size16&quot;&gt;&amp;lsquo;RESTful&amp;rsquo;이라는 말은 &amp;lsquo;REST의 규칙(원칙)을 잘 지킨 API&amp;rsquo;를 뜻해요.&lt;br /&gt;즉, REST API를 설계할 때 자원(Resource)을 명확히 구분하고, HTTP 메서드와 상태 코드를 제대로 활용하는 API를 말하죠.&lt;/p&gt;
&lt;p data-end=&quot;324&quot; data-start=&quot;263&quot; data-ke-size=&quot;size16&quot;&gt;RESTful API는 서버와 클라이언트 간에 명확한 소통 방식을 제공해, 유지보수성과 확장성이 좋아져요.&lt;/p&gt;
&lt;hr data-end=&quot;329&quot; data-start=&quot;326&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;363&quot; data-start=&quot;331&quot; data-ke-size=&quot;size26&quot;&gt;  실무 예제: RESTful API의 좋은 사용법&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;javascript&lt;/div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1748404706826&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// GET - 사용자 리스트 요청 (자원은 /users)
fetch('https://api.example.com/users')
  .then(res =&amp;gt; res.json())
  .then(data =&amp;gt; console.log(data));

// GET - 특정 사용자 상세 요청 (ID 포함)
fetch('https://api.example.com/users/123')
  .then(res =&amp;gt; res.json())
  .then(data =&amp;gt; console.log(data));

// POST - 사용자 생성
fetch('https://api.example.com/users', {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: JSON.stringify({name: 'Bob', age: 28})
})
.then(res =&amp;gt; res.json())
.then(data =&amp;gt; console.log(data));

// DELETE - 사용자 삭제
fetch('https://api.example.com/users/123', { method: 'DELETE' })
  .then(res =&amp;gt; {
    if(res.ok) console.log('삭제 성공!');
  });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;⚠️ &lt;b&gt;자주 하는 실수와 해결법&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;739&quot; data-origin-height=&quot;221&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQU0dK/btsOe5TuBy6/w9AXyr5rbklPtTdoiQ12HK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQU0dK/btsOe5TuBy6/w9AXyr5rbklPtTdoiQ12HK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQU0dK/btsOe5TuBy6/w9AXyr5rbklPtTdoiQ12HK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQU0dK%2FbtsOe5TuBy6%2Fw9AXyr5rbklPtTdoiQ12HK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;739&quot; height=&quot;221&quot; data-origin-width=&quot;739&quot; data-origin-height=&quot;221&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;1526&quot; data-start=&quot;1512&quot; data-ke-size=&quot;size26&quot;&gt;  초보자 팁!&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1652&quot; data-start=&quot;1527&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1575&quot; data-start=&quot;1527&quot;&gt;RESTful API는 URL과 HTTP 메서드를 &amp;lsquo;잘 조합&amp;rsquo;하는 것부터 시작!&lt;/li&gt;
&lt;li data-end=&quot;1616&quot; data-start=&quot;1576&quot;&gt;API 문서를 잘 보고, 요청/응답 구조를 이해하는 게 중요해요.&lt;/li&gt;
&lt;li data-end=&quot;1652&quot; data-start=&quot;1617&quot;&gt;상태 코드는 문제 발생 시 원인 찾기에 큰 도움을 줘요.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1657&quot; data-start=&quot;1654&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1673&quot; data-start=&quot;1659&quot; data-ke-size=&quot;size26&quot;&gt;  실력자 팁!&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1817&quot; data-start=&quot;1674&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1720&quot; data-start=&quot;1674&quot;&gt;RESTful 원칙을 지키면 캐싱, 인증, 로깅 등 부가 기능 적용도 쉽다!&lt;/li&gt;
&lt;li data-end=&quot;1768&quot; data-start=&quot;1721&quot;&gt;HATEOAS 같은 고급 REST 개념으로 API 사용성을 더 높일 수 있다.&lt;/li&gt;
&lt;li data-end=&quot;1817&quot; data-start=&quot;1769&quot;&gt;API 설계 시 버전 관리, 오류 메시지 표준화, 문서 자동화 도구 활용 추천!&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>국비지원 - 실버마케팅(코딩) 250206~</category>
      <author>think2659</author>
      <guid isPermaLink="true">https://think2659.tistory.com/79</guid>
      <comments>https://think2659.tistory.com/79#entry79comment</comments>
      <pubDate>Wed, 28 May 2025 12:59:24 +0900</pubDate>
    </item>
    <item>
      <title>&amp;ldquo;REST API 완전 정복! 초보도 이해하는 서버와의 약속, REST란 무엇인가?&amp;rdquo;</title>
      <link>https://think2659.tistory.com/78</link>
      <description>&lt;h2 data-end=&quot;137&quot; data-start=&quot;109&quot; data-ke-size=&quot;size26&quot;&gt;  상세 배경 설명: REST API란?&lt;/h2&gt;
&lt;p data-end=&quot;282&quot; data-start=&quot;138&quot; data-ke-size=&quot;size16&quot;&gt;REST(Representational State Transfer)는 웹에서 서버와 클라이언트가 데이터를 주고받는 &amp;lsquo;약속&amp;rsquo; 같은 거예요.&lt;br /&gt;쉽게 말하면, 서버의 자원(데이터)을 URL로 표현하고, HTTP 메서드를 써서 어떻게 다룰지 약속하는 규칙이죠.&lt;/p&gt;
&lt;p data-end=&quot;372&quot; data-start=&quot;284&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어, 사용자의 정보를 불러올 땐 GET, 새로 만들 땐 POST, 수정할 땐 PUT이나 PATCH, 삭제할 땐 DELETE 메서드를 써서 요청해요.&lt;/p&gt;
&lt;p data-end=&quot;408&quot; data-start=&quot;374&quot; data-ke-size=&quot;size16&quot;&gt;REST API는 이런 규칙을 따르는 웹 API를 뜻해요.&lt;/p&gt;
&lt;hr data-end=&quot;413&quot; data-start=&quot;410&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;445&quot; data-start=&quot;415&quot; data-ke-size=&quot;size26&quot;&gt;  실무 예제 코드: REST API 기본 요청&lt;/h2&gt;
&lt;pre id=&quot;code_1748404649130&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 사용자 목록 가져오기(GET)
fetch('https://api.example.com/users')
  .then(res =&amp;gt; res.json())
  .then(data =&amp;gt; console.log(data));

// 사용자 생성(POST)
fetch('https://api.example.com/users', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ name: 'Alice', age: 25 })
})
.then(res =&amp;gt; res.json())
.then(data =&amp;gt; console.log(data));&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;⚠️ &lt;b&gt;자주 하는 실수와 해결법&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;670&quot; data-origin-height=&quot;321&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ciJUwZ/btsOfiSwURE/t83QaFPzXXVQYb6QkK6PcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ciJUwZ/btsOfiSwURE/t83QaFPzXXVQYb6QkK6PcK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ciJUwZ/btsOfiSwURE/t83QaFPzXXVQYb6QkK6PcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FciJUwZ%2FbtsOfiSwURE%2Ft83QaFPzXXVQYb6QkK6PcK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;670&quot; height=&quot;321&quot; data-origin-width=&quot;670&quot; data-origin-height=&quot;321&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-end=&quot;1353&quot; data-start=&quot;1339&quot; data-ke-size=&quot;size26&quot;&gt;  초보자 팁!&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1492&quot; data-start=&quot;1354&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1414&quot; data-start=&quot;1354&quot;&gt;REST는 &amp;lsquo;자원(Resource)&amp;rsquo;을 &amp;lsquo;URL&amp;rsquo;로 표현하고 &amp;lsquo;HTTP 메서드&amp;rsquo;로 조작하는 약속이다!&lt;/li&gt;
&lt;li data-end=&quot;1459&quot; data-start=&quot;1415&quot;&gt;API 문서를 보면 어떤 URL에 어떤 메서드를 써야 하는지 꼭 확인하자&lt;/li&gt;
&lt;li data-end=&quot;1492&quot; data-start=&quot;1460&quot;&gt;JSON 형식이 기본 데이터 교환 형식임을 기억하자&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1497&quot; data-start=&quot;1494&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1513&quot; data-start=&quot;1499&quot; data-ke-size=&quot;size26&quot;&gt;  실력자 팁!&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1676&quot; data-start=&quot;1514&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1566&quot; data-start=&quot;1514&quot;&gt;REST API 설계 시 URI는 명사로, 메서드는 동사 역할을 한다고 생각하면 편하다&lt;/li&gt;
&lt;li data-end=&quot;1625&quot; data-start=&quot;1567&quot;&gt;무조건 REST만 고집하지 말고, 상황에 따라 GraphQL, gRPC 같은 다른 방식도 고려하자&lt;/li&gt;
&lt;li data-end=&quot;1676&quot; data-start=&quot;1626&quot;&gt;효율적인 REST API를 위해 캐싱, 인증, 페이징 등 부가 기능 설계도 중요하다&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>국비지원 - 실버마케팅(코딩) 250206~</category>
      <author>think2659</author>
      <guid isPermaLink="true">https://think2659.tistory.com/78</guid>
      <comments>https://think2659.tistory.com/78#entry78comment</comments>
      <pubDate>Wed, 28 May 2025 12:57:56 +0900</pubDate>
    </item>
    <item>
      <title>&amp;quot;fetch 완전 정복! POST부터 PUT까지, JavaScript로 서버랑 통신하는 꿀팁 대방출&amp;quot;</title>
      <link>https://think2659.tistory.com/77</link>
      <description>&lt;h2 data-end=&quot;146&quot; data-start=&quot;110&quot; data-ke-size=&quot;size26&quot;&gt;  상세 배경 설명: fetch와 HTTP Method&lt;/h2&gt;
&lt;p data-end=&quot;245&quot; data-start=&quot;147&quot; data-ke-size=&quot;size16&quot;&gt;fetch는 JavaScript에서 네트워크 요청을 보낼 때 가장 많이 쓰이는 함수예요.&lt;br /&gt;웹페이지가 서버랑 데이터를 주고받을 때 사용하는 기본 도구라고 보면 됩니다.&lt;/p&gt;
&lt;p data-end=&quot;333&quot; data-start=&quot;247&quot; data-ke-size=&quot;size16&quot;&gt;HTTP Method는 요청의 &amp;lsquo;목적&amp;rsquo;을 알려주는 역할을 하는데, fetch에서는 이 메서드를 옵션으로 지정해서 서버에 어떤 작업을 할지 알려줘요.&lt;/p&gt;
&lt;p data-end=&quot;405&quot; data-start=&quot;335&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어, POST 메서드는 &amp;ldquo;새 데이터를 서버에 만들어주세요&amp;rdquo; 요청이고, GET은 &amp;ldquo;데이터 좀 보여주세요&amp;rdquo; 요청이에요.&lt;/p&gt;
&lt;hr data-end=&quot;410&quot; data-start=&quot;407&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;466&quot; data-start=&quot;412&quot; data-ke-size=&quot;size26&quot;&gt;  실무 예제 코드: fetch 사용법 - POST, PUT, PATCH, DELETE&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;javascript&lt;/div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1748404592523&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// POST - 새 데이터 생성
fetch('https://api.example.com/users', {
  method: 'POST',  
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ name: 'John', age: 30 })
})
.then(response =&amp;gt; response.json())
.then(data =&amp;gt; console.log('Created:', data))
.catch(error =&amp;gt; console.error('Error:', error));


// PUT - 기존 데이터 전체 수정
fetch('https://api.example.com/users/123', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ name: 'John Doe', age: 31 })
})
.then(response =&amp;gt; response.json())
.then(data =&amp;gt; console.log('Updated:', data))
.catch(error =&amp;gt; console.error('Error:', error));


// PATCH - 기존 데이터 일부 수정
fetch('https://api.example.com/users/123', {
  method: 'PATCH',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ age: 32 })
})
.then(response =&amp;gt; response.json())
.then(data =&amp;gt; console.log('Partially Updated:', data))
.catch(error =&amp;gt; console.error('Error:', error));


// DELETE - 데이터 삭제
fetch('https://api.example.com/users/123', {
  method: 'DELETE'
})
.then(response =&amp;gt; {
  if (response.ok) {
    console.log('Deleted successfully');
  } else {
    console.error('Failed to delete');
  }
})
.catch(error =&amp;gt; console.error('Error:', error));&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;⚠️&lt;b&gt; 자주 하는 실수와 해결법&lt;/b&gt;&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;696&quot; data-origin-height=&quot;338&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAFcPN/btsOfMS8aMj/d1fhmEiZbhuREZXoSJGRGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAFcPN/btsOfMS8aMj/d1fhmEiZbhuREZXoSJGRGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAFcPN/btsOfMS8aMj/d1fhmEiZbhuREZXoSJGRGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAFcPN%2FbtsOfMS8aMj%2Fd1fhmEiZbhuREZXoSJGRGk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;696&quot; height=&quot;338&quot; data-origin-width=&quot;696&quot; data-origin-height=&quot;338&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;2385&quot; data-start=&quot;2371&quot; data-ke-size=&quot;size26&quot;&gt;  초보자 팁!&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2563&quot; data-start=&quot;2386&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2441&quot; data-start=&quot;2386&quot;&gt;fetch 기본 구조는 URL + 옵션 객체(method, headers, body 등)&lt;/li&gt;
&lt;li data-end=&quot;2499&quot; data-start=&quot;2442&quot;&gt;서버가 JSON 데이터를 받는다고 하면 headers와 body를 꼭 맞게 설정해야 해요&lt;/li&gt;
&lt;li data-end=&quot;2563&quot; data-start=&quot;2500&quot;&gt;비동기라 결과 받기 전엔 바로 콘솔에 찍히지 않으니 .then()이나 async/await 꼭 써요&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;2568&quot; data-start=&quot;2565&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2584&quot; data-start=&quot;2570&quot; data-ke-size=&quot;size26&quot;&gt;  실력자 팁!&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2760&quot; data-start=&quot;2585&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2623&quot; data-start=&quot;2585&quot;&gt;에러 핸들링을 강화하려면 HTTP 상태 코드별 분기 처리 추천&lt;/li&gt;
&lt;li data-end=&quot;2667&quot; data-start=&quot;2624&quot;&gt;async/await로 가독성 좋게 코드 작성하면 유지보수 편해져요&lt;/li&gt;
&lt;li data-end=&quot;2726&quot; data-start=&quot;2668&quot;&gt;대용량 POST 요청 시 body를 스트리밍 처리하거나, 여러 요청으로 나누는 것도 고려해 보세요&lt;/li&gt;
&lt;li data-end=&quot;2760&quot; data-start=&quot;2727&quot;&gt;CORS 정책 이해와 대응도 fetch 활용에 필수!&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>국비지원 - 실버마케팅(코딩) 250206~</category>
      <author>think2659</author>
      <guid isPermaLink="true">https://think2659.tistory.com/77</guid>
      <comments>https://think2659.tistory.com/77#entry77comment</comments>
      <pubDate>Wed, 28 May 2025 12:57:11 +0900</pubDate>
    </item>
    <item>
      <title>&amp;quot;비동기? 동기? 웹에서 일어나는 마법 같은 시간 차이 이해하기!&amp;quot;</title>
      <link>https://think2659.tistory.com/76</link>
      <description>&lt;h2 data-end=&quot;150&quot; data-start=&quot;124&quot; data-ke-size=&quot;size26&quot;&gt;⏳ 비동기(Asynchronous)란?&lt;/h2&gt;
&lt;p data-end=&quot;230&quot; data-start=&quot;151&quot; data-ke-size=&quot;size16&quot;&gt;비동기는 &amp;lsquo;일을 시키고 기다리지 않고 다른 일을 하는 방식&amp;rsquo;이에요.&lt;br /&gt;쉽게 말해, 커피를 주문하고 기다리는 대신 바로 일하러 가는 거죠!&lt;/p&gt;
&lt;p data-end=&quot;292&quot; data-start=&quot;232&quot; data-ke-size=&quot;size16&quot;&gt;웹에서 비동기는 서버에 요청을 보내고 답을 기다리는 동안, 화면이 멈추지 않고 계속 작동하도록 도와줘요.&lt;/p&gt;
&lt;hr data-end=&quot;297&quot; data-start=&quot;294&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;330&quot; data-start=&quot;299&quot; data-ke-size=&quot;size26&quot;&gt;  동기(Synchronous)와 비동기 차이&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;485&quot; data-start=&quot;332&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;406&quot; data-start=&quot;332&quot;&gt;&lt;b&gt;동기(Sync):&lt;/b&gt;&lt;br /&gt;요청을 보내고 답이 올 때까지 멈춰서 기다려요.&lt;br /&gt;(예: 커피 주문하고 받기 전까지 가만히 기다림)&lt;/li&gt;
&lt;li data-end=&quot;485&quot; data-start=&quot;408&quot;&gt;&lt;b&gt;비동기(Async):&lt;/b&gt;&lt;br /&gt;요청을 보내고 답을 기다리면서도 다른 일을 해요.&lt;br /&gt;(예: 커피 주문하고 다른 일 하다가 커피 받음)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;490&quot; data-start=&quot;487&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;512&quot; data-start=&quot;492&quot; data-ke-size=&quot;size26&quot;&gt;  웹에서 비동기의 중요성&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;619&quot; data-start=&quot;513&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;543&quot; data-start=&quot;513&quot;&gt;페이지가 멈추지 않아서 사용자 경험이 좋아져요.&lt;/li&gt;
&lt;li data-end=&quot;575&quot; data-start=&quot;544&quot;&gt;여러 작업을 동시에 처리할 수 있어 효율적이에요.&lt;/li&gt;
&lt;li data-end=&quot;619&quot; data-start=&quot;576&quot;&gt;특히 API 호출, 데이터 불러오기, 파일 업로드 등에 많이 사용돼요.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;624&quot; data-start=&quot;621&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;650&quot; data-start=&quot;626&quot; data-ke-size=&quot;size26&quot;&gt;예시: 자바스크립트에서 비동기 처리&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;javascript&lt;/div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1748404476148&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;console.log(&quot;커피 주문 중...&quot;);

setTimeout(() =&amp;gt; {
  console.log(&quot;커피 받음! 이제 일 시작&quot;);
}, 3000);  // 3초 후에 실행되는 비동기 함수

console.log(&quot;다른 일 처리 중...&quot;);&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출력 결과:&lt;/p&gt;
&lt;pre id=&quot;code_1748404484245&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;커피 주문 중...  
다른 일 처리 중...  
(3초 후) 커피 받음! 이제 일 시작&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-end=&quot;884&quot; data-start=&quot;881&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;900&quot; data-start=&quot;886&quot; data-ke-size=&quot;size26&quot;&gt;  초보자 팁!&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1021&quot; data-start=&quot;901&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;972&quot; data-start=&quot;901&quot;&gt;자바스크립트에서 setTimeout, Promise, async/await가 비동기를 처리하는 주요 도구에요.&lt;/li&gt;
&lt;li data-end=&quot;1021&quot; data-start=&quot;973&quot;&gt;비동기를 이해하면 페이지가 멈추지 않고 부드럽게 작동하는 원리를 알 수 있어요.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1026&quot; data-start=&quot;1023&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1042&quot; data-start=&quot;1028&quot; data-ke-size=&quot;size26&quot;&gt;  실력자 팁!&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1240&quot; data-start=&quot;1043&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1113&quot; data-start=&quot;1043&quot;&gt;비동기 코드를 체계적으로 관리하려면 Promise chaining 또는 async/await 패턴을 사용하세요.&lt;/li&gt;
&lt;li data-end=&quot;1170&quot; data-start=&quot;1114&quot;&gt;API 호출 시 비동기 처리 덕분에 사용자 인터페이스가 느려지지 않도록 설계하는 게 중요해요.&lt;/li&gt;
&lt;li data-end=&quot;1240&quot; data-start=&quot;1171&quot;&gt;이벤트 루프(Event Loop)와 콜백 큐(Call Stack)의 동작 원리를 공부하면 더 깊이 이해할 수 있어요.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>국비지원 - 실버마케팅(코딩) 250206~</category>
      <author>think2659</author>
      <guid isPermaLink="true">https://think2659.tistory.com/76</guid>
      <comments>https://think2659.tistory.com/76#entry76comment</comments>
      <pubDate>Wed, 28 May 2025 12:54:58 +0900</pubDate>
    </item>
    <item>
      <title>&amp;quot;HTTP 메서드? 뭘까? GET부터 DELETE까지, 웹 요청의 비밀 무기 대공개!&amp;quot;</title>
      <link>https://think2659.tistory.com/75</link>
      <description>&lt;h2 data-end=&quot;244&quot; data-start=&quot;222&quot; data-ke-size=&quot;size26&quot;&gt; ️ Method(메서드)란?&lt;/h2&gt;
&lt;p data-end=&quot;348&quot; data-start=&quot;245&quot; data-ke-size=&quot;size16&quot;&gt;웹에서 &amp;lsquo;Method&amp;rsquo;는 서버에 보내는 요청의 &amp;lsquo;행동 종류&amp;rsquo;를 뜻해요.&lt;br /&gt;즉, 내가 서버에 &quot;어떤 작업을 해주세요!&quot; 하고 요청할 때 그 작업의 종류를 알려주는 신호 같은 거예요.&lt;/p&gt;
&lt;p data-end=&quot;415&quot; data-start=&quot;350&quot; data-ke-size=&quot;size16&quot;&gt;가장 흔한 HTTP Method에는 대표적으로 GET, POST, PUT, PATCH, DELETE 등이 있어요.&lt;/p&gt;
&lt;hr data-end=&quot;420&quot; data-start=&quot;417&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;444&quot; data-start=&quot;422&quot; data-ke-size=&quot;size26&quot;&gt;  Method의 종류와 역할&lt;/h2&gt;
&lt;div&gt;&lt;br /&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;997&quot; data-start=&quot;446&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;997&quot; data-start=&quot;601&quot;&gt;
&lt;tr&gt;
&lt;td&gt;Method&lt;/td&gt;
&lt;td&gt;&lt;b&gt;역할&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;677&quot; data-start=&quot;601&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;611&quot; data-start=&quot;601&quot;&gt;GET&lt;/td&gt;
&lt;td data-end=&quot;642&quot; data-start=&quot;611&quot; data-col-size=&quot;sm&quot;&gt;&lt;b&gt;가져오기&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;677&quot; data-start=&quot;642&quot; data-col-size=&quot;md&quot;&gt;서버에서 데이터를 가져와요. 예: 웹페이지, 리스트 조회&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;763&quot; data-start=&quot;678&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;688&quot; data-start=&quot;678&quot;&gt;POST&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;719&quot; data-start=&quot;688&quot;&gt;&lt;b&gt;생성하기&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;763&quot; data-start=&quot;719&quot; data-col-size=&quot;md&quot;&gt;서버에 새 데이터를 만들어 달라고 요청해요. 예: 회원가입, 게시글 작성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;848&quot; data-start=&quot;764&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;774&quot; data-start=&quot;764&quot;&gt;PUT&lt;/td&gt;
&lt;td data-end=&quot;803&quot; data-start=&quot;774&quot; data-col-size=&quot;sm&quot;&gt;&lt;b&gt;전체 수정하기&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;848&quot; data-start=&quot;803&quot; data-col-size=&quot;md&quot;&gt;서버에 있는 데이터를 통째로 바꿔 달라고 요청해요. 예: 게시글 전체 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;927&quot; data-start=&quot;849&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;859&quot; data-start=&quot;849&quot;&gt;PATCH&lt;/td&gt;
&lt;td data-end=&quot;888&quot; data-start=&quot;859&quot; data-col-size=&quot;sm&quot;&gt;&lt;b&gt;일부 수정하기&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;927&quot; data-start=&quot;888&quot; data-col-size=&quot;md&quot;&gt;데이터의 일부만 바꿔 달라고 요청해요. 예: 게시글 제목만 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;997&quot; data-start=&quot;928&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;938&quot; data-start=&quot;928&quot;&gt;DELETE&lt;/td&gt;
&lt;td data-end=&quot;968&quot; data-start=&quot;938&quot; data-col-size=&quot;sm&quot;&gt;&lt;b&gt;삭제하기&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;997&quot; data-start=&quot;968&quot; data-col-size=&quot;md&quot;&gt;서버에 있는 데이터를 삭제해 달라고 요청해요.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;1002&quot; data-start=&quot;999&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1011&quot; data-start=&quot;1004&quot; data-ke-size=&quot;size26&quot;&gt;예시&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1193&quot; data-start=&quot;1012&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1051&quot; data-start=&quot;1012&quot;&gt;&lt;b&gt;GET&lt;/b&gt;: &quot;이 페이지에 있는 모든 게시글 목록 보여줘!&quot;&lt;/li&gt;
&lt;li data-end=&quot;1082&quot; data-start=&quot;1052&quot;&gt;&lt;b&gt;POST&lt;/b&gt;: &quot;새 게시글 하나 만들어줘!&quot;&lt;/li&gt;
&lt;li data-end=&quot;1123&quot; data-start=&quot;1083&quot;&gt;&lt;b&gt;PUT&lt;/b&gt;: &quot;기존 게시글 전체 내용을 이 내용으로 바꿔줘!&quot;&lt;/li&gt;
&lt;li data-end=&quot;1165&quot; data-start=&quot;1124&quot;&gt;&lt;b&gt;PATCH&lt;/b&gt;: &quot;기존 게시글 제목만 &amp;lsquo;새 제목&amp;rsquo;으로 바꿔줘!&quot;&lt;/li&gt;
&lt;li data-end=&quot;1193&quot; data-start=&quot;1166&quot;&gt;&lt;b&gt;DELETE&lt;/b&gt;: &quot;이 게시글 삭제해줘!&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1198&quot; data-start=&quot;1195&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1214&quot; data-start=&quot;1200&quot; data-ke-size=&quot;size26&quot;&gt;  초보자 팁!&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1371&quot; data-start=&quot;1215&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1261&quot; data-start=&quot;1215&quot;&gt;&lt;b&gt;GET은 데이터를 읽을 때만 사용&lt;/b&gt;하세요. 데이터를 변경하면 안 돼요!&lt;/li&gt;
&lt;li data-end=&quot;1322&quot; data-start=&quot;1262&quot;&gt;&lt;b&gt;POST, PUT, PATCH, DELETE는 서버 데이터 변경에 사용&lt;/b&gt;되므로 주의가 필요해요.&lt;/li&gt;
&lt;li data-end=&quot;1371&quot; data-start=&quot;1323&quot;&gt;URL만으로 어떤 작업인지 알 수 없고, HTTP Method를 보고 판단해요.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1376&quot; data-start=&quot;1373&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1392&quot; data-start=&quot;1378&quot; data-ke-size=&quot;size26&quot;&gt;  실력자 팁!&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1655&quot; data-start=&quot;1393&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1451&quot; data-start=&quot;1393&quot;&gt;REST API 설계 시, Method를 적절히 구분해 명확한 의미를 주면 유지보수에 유리합니다.&lt;/li&gt;
&lt;li data-end=&quot;1518&quot; data-start=&quot;1452&quot;&gt;PUT은 리소스를 통째로 교체하므로, 필드 누락 시 삭제 효과가 있을 수 있어 PATCH보다 주의가 필요합니다.&lt;/li&gt;
&lt;li data-end=&quot;1579&quot; data-start=&quot;1519&quot;&gt;DELETE 요청에는 일반적으로 요청 본문(body)을 포함하지 않지만, 필요시 설계할 수 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;1655&quot; data-start=&quot;1580&quot;&gt;Idempotent(멱등) 개념을 고려해 GET, PUT, DELETE는 여러 번 호출해도 결과가 같도록 설계하는 게 좋습니다.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>국비지원 - 실버마케팅(코딩) 250206~</category>
      <author>think2659</author>
      <guid isPermaLink="true">https://think2659.tistory.com/75</guid>
      <comments>https://think2659.tistory.com/75#entry75comment</comments>
      <pubDate>Wed, 28 May 2025 12:54:09 +0900</pubDate>
    </item>
    <item>
      <title>&amp;ldquo;웹에서 내 데이터는 어디로 갈까? base URL, endpoint, full URL 쉽게 이해하기&amp;rdquo;</title>
      <link>https://think2659.tistory.com/74</link>
      <description>&lt;h2 data-end=&quot;148&quot; data-start=&quot;129&quot; data-ke-size=&quot;size26&quot;&gt;  Base URL이란?&lt;/h2&gt;
&lt;p data-end=&quot;230&quot; data-start=&quot;149&quot; data-ke-size=&quot;size16&quot;&gt;Base URL은 웹 서비스나 API가 제공되는 기본 주소를 말해요.&lt;br /&gt;쉽게 말해 &amp;lsquo;집 주소&amp;rsquo;처럼, 전체 URL에서 변하지 않는 부분이에요.&lt;/p&gt;
&lt;p data-end=&quot;240&quot; data-start=&quot;232&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어,&lt;/p&gt;
&lt;pre id=&quot;code_1748404245381&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;https://api.example.com&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 주소가 Base URL이에요.&lt;/p&gt;
&lt;hr data-end=&quot;298&quot; data-start=&quot;295&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;319&quot; data-start=&quot;300&quot; data-ke-size=&quot;size26&quot;&gt; ️ Endpoint란?&lt;/h2&gt;
&lt;p data-end=&quot;430&quot; data-start=&quot;320&quot; data-ke-size=&quot;size16&quot;&gt;Endpoint는 Base URL 뒤에 붙는 추가 경로로, 실제 요청하고자 하는 &amp;lsquo;서비스&amp;rsquo;나 &amp;lsquo;기능&amp;rsquo;을 의미해요.&lt;br /&gt;즉, Base URL에서 특정 리소스나 기능을 가리키는 주소라고 보면 돼요.&lt;/p&gt;
&lt;p data-end=&quot;440&quot; data-start=&quot;432&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어,&lt;/p&gt;
&lt;pre id=&quot;code_1748404262189&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/users  
/posts/123/comments&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 게 Endpoint입니다.&lt;/p&gt;
&lt;hr data-end=&quot;502&quot; data-start=&quot;499&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;523&quot; data-start=&quot;504&quot; data-ke-size=&quot;size26&quot;&gt;  Full URL이란?&lt;/h2&gt;
&lt;p data-end=&quot;624&quot; data-start=&quot;524&quot; data-ke-size=&quot;size16&quot;&gt;Base URL과 Endpoint를 합친 전체 주소를 Full URL이라고 해요.&lt;br /&gt;이 주소를 통해 서버에 요청(request)을 보내고 데이터를 받습니다(response).&lt;/p&gt;
&lt;p data-end=&quot;634&quot; data-start=&quot;626&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어,&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;743&quot; data-start=&quot;635&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;674&quot; data-start=&quot;635&quot;&gt;Base URL: &lt;a href=&quot;https://api.example.com&quot;&gt;https://api.example.com&lt;/a&gt;&lt;/li&gt;
&lt;li data-end=&quot;697&quot; data-start=&quot;675&quot;&gt;Endpoint: /users&lt;/li&gt;
&lt;li data-end=&quot;743&quot; data-start=&quot;698&quot;&gt;Full URL: &lt;a href=&quot;https://api.example.com/users&quot;&gt;https://api.example.com/users&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;755&quot; data-start=&quot;745&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 됩니다.&lt;/p&gt;
&lt;hr data-end=&quot;760&quot; data-start=&quot;757&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  예시로 정리해 볼게요!&lt;/h2&gt;
&lt;pre id=&quot;code_1748404304717&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Base URL: https://mywebsite.com/api
Endpoint: /products/45
Full URL: https://mywebsite.com/api/products/45&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 Full URL을 통해 특정 상품(45번)을 요청하는 거예요.&lt;/p&gt;
&lt;hr data-end=&quot;952&quot; data-start=&quot;949&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;  초보자 팁!&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1087&quot; data-start=&quot;969&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1000&quot; data-start=&quot;969&quot;&gt;Base URL은 자주 바뀌지 않는 &amp;lsquo;기본 주소&amp;rsquo;&lt;/li&gt;
&lt;li data-end=&quot;1041&quot; data-start=&quot;1001&quot;&gt;Endpoint는 다양한 기능이나 리소스를 구분하는 &amp;lsquo;세부 경로&amp;rsquo;&lt;/li&gt;
&lt;li data-end=&quot;1087&quot; data-start=&quot;1042&quot;&gt;Full URL을 이해하면 API 요청이 어떻게 이루어지는지 감이 잡혀요!&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1092&quot; data-start=&quot;1089&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;  실력자 팁!&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1338&quot; data-start=&quot;1109&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1184&quot; data-start=&quot;1109&quot;&gt;여러 환경(dev, staging, production)마다 Base URL이 달라질 수 있으니, 환경변수를 활용해 관리하세요.&lt;/li&gt;
&lt;li data-end=&quot;1236&quot; data-start=&quot;1185&quot;&gt;Endpoint는 RESTful 규칙에 맞게 설계하면 유지보수와 확장성에 유리합니다.&lt;/li&gt;
&lt;li data-end=&quot;1278&quot; data-start=&quot;1237&quot;&gt;Full URL 생성 시, 슬래시(/) 중복이나 누락에 주의하세요.&lt;/li&gt;
&lt;li data-end=&quot;1338&quot; data-start=&quot;1279&quot;&gt;API 호출 시 쿼리 스트링이나 파라미터를 활용해 Endpoint를 더 유연하게 만들 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1343&quot; data-start=&quot;1340&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 Base URL, Endpoint, Full URL 개념은 웹과 API 개발의 기본이니 꼭 이해하고 넘어가면 좋아요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>국비지원 - 실버마케팅(코딩) 250206~</category>
      <author>think2659</author>
      <guid isPermaLink="true">https://think2659.tistory.com/74</guid>
      <comments>https://think2659.tistory.com/74#entry74comment</comments>
      <pubDate>Wed, 28 May 2025 12:52:16 +0900</pubDate>
    </item>
    <item>
      <title>&amp;ldquo;웹에서 내 데이터는 어떻게 지켜질까? HTTP와 HTTPS 이야기&amp;rdquo;</title>
      <link>https://think2659.tistory.com/73</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;HTTP와 HTTPS, 웹 통신의 기본 프로토콜입니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;128&quot; data-start=&quot;117&quot; data-ke-size=&quot;size26&quot;&gt;✅ HTTP란?&lt;/h2&gt;
&lt;p data-end=&quot;285&quot; data-start=&quot;130&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;HTTP&lt;/b&gt;(HyperText Transfer Protocol)는 웹에서 클라이언트와 서버가 데이터를 주고받기 위한 **통신 규칙(프로토콜)**입니다.&lt;br /&gt;쉽게 말해, 웹 브라우저가 서버에게 &amp;ldquo;이 페이지 보여줘&amp;rdquo;라고 요청하고, 서버가 페이지를 보내주는 약속 같은 규칙입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;367&quot; data-start=&quot;287&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;328&quot; data-start=&quot;287&quot;&gt;텍스트, 이미지, 영상 등 다양한 데이터를 주고받는 데 사용됩니다.&lt;/li&gt;
&lt;li data-end=&quot;367&quot; data-start=&quot;329&quot;&gt;주로 웹 페이지 접속 시 주소 앞에 http://가 붙습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;372&quot; data-start=&quot;369&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;386&quot; data-start=&quot;374&quot; data-ke-size=&quot;size26&quot;&gt;✅ HTTPS란?&lt;/h2&gt;
&lt;p data-end=&quot;492&quot; data-start=&quot;388&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;HTTPS&lt;/b&gt;는 HTTP에 보안(Secure)을 더한 프로토콜입니다.&lt;br /&gt;즉, 데이터가 오가는 길을 &lt;b&gt;암호화&lt;/b&gt;하여 중간에서 누군가가 내용을 훔쳐보거나 조작하지 못하도록 보호합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;586&quot; data-start=&quot;494&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;543&quot; data-start=&quot;494&quot;&gt;주소 앞에 https://가 붙고, 대부분의 사이트가 HTTPS를 사용합니다.&lt;/li&gt;
&lt;li data-end=&quot;586&quot; data-start=&quot;544&quot;&gt;은행, 쇼핑몰 등 개인정보가 중요한 사이트는 반드시 HTTPS를 씁니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;591&quot; data-start=&quot;588&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;614&quot; data-start=&quot;593&quot; data-ke-size=&quot;size26&quot;&gt; &lt;b&gt; HTTP와 HTTPS의 차이&lt;/b&gt;&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;218&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Kllcc/btsOe4GYoRL/N51jm8cZtyY8ihzOqVypF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Kllcc/btsOe4GYoRL/N51jm8cZtyY8ihzOqVypF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Kllcc/btsOe4GYoRL/N51jm8cZtyY8ihzOqVypF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKllcc%2FbtsOe4GYoRL%2FN51jm8cZtyY8ihzOqVypF1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;604&quot; height=&quot;218&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;218&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;802&quot; data-start=&quot;799&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;818&quot; data-start=&quot;804&quot; data-ke-size=&quot;size26&quot;&gt;  &lt;b&gt;실제 사용 예시&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;908&quot; data-start=&quot;820&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;858&quot; data-start=&quot;820&quot;&gt;웹 브라우저 주소창에서 보안 연결 여부를 확인할 수 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;908&quot; data-start=&quot;859&quot;&gt;HTTPS 사이트는 자물쇠 모양 아이콘이 표시되며, 보안 인증서가 적용되어 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;913&quot; data-start=&quot;910&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;923&quot; data-start=&quot;915&quot; data-ke-size=&quot;size26&quot;&gt;  &lt;b&gt;요약&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1041&quot; data-start=&quot;925&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;962&quot; data-start=&quot;925&quot;&gt;&lt;b&gt;HTTP&lt;/b&gt;는 웹에서 데이터를 주고받는 기본 규칙입니다.&lt;/li&gt;
&lt;li data-end=&quot;1001&quot; data-start=&quot;963&quot;&gt;&lt;b&gt;HTTPS&lt;/b&gt;는 HTTP에 보안 기능이 추가된 버전입니다.&lt;/li&gt;
&lt;li data-end=&quot;1041&quot; data-start=&quot;1002&quot;&gt;가능하면 항상 HTTPS를 사용해야 개인정보와 데이터가 안전합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1046&quot; data-start=&quot;1043&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1059&quot; data-start=&quot;1048&quot; data-ke-size=&quot;size26&quot;&gt;  보너스 팁&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1196&quot; data-start=&quot;1061&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1103&quot; data-start=&quot;1061&quot;&gt;HTTPS는 SSL/TLS 인증서를 통해 데이터 암호화를 실현합니다.&lt;/li&gt;
&lt;li data-end=&quot;1165&quot; data-start=&quot;1104&quot;&gt;요즘은 구글 크롬 같은 브라우저가 HTTPS가 아닌 사이트에 &amp;lsquo;안전하지 않음&amp;rsquo; 경고를 띄우기도 합니다.&lt;/li&gt;
&lt;li data-end=&quot;1196&quot; data-start=&quot;1166&quot;&gt;웹 개발 시 SSL 인증서 설정은 필수 사항입니다.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>국비지원 - 실버마케팅(코딩) 250206~</category>
      <author>think2659</author>
      <guid isPermaLink="true">https://think2659.tistory.com/73</guid>
      <comments>https://think2659.tistory.com/73#entry73comment</comments>
      <pubDate>Wed, 28 May 2025 12:46:56 +0900</pubDate>
    </item>
    <item>
      <title>fetch 함수, 자바스크립트로 서버와 대화하는 법입니다</title>
      <link>https://think2659.tistory.com/72</link>
      <description>&lt;h2 data-end=&quot;177&quot; data-start=&quot;165&quot; data-ke-size=&quot;size26&quot;&gt;✅ fetch란?&lt;/h2&gt;
&lt;p data-end=&quot;309&quot; data-start=&quot;179&quot; data-ke-size=&quot;size16&quot;&gt;fetch는 &lt;b&gt;JavaScript에서 서버에 요청(Request)을 보내고, 응답(Response)을 받기 위해 사용하는 함수&lt;/b&gt;입니다.&lt;br /&gt;예를 들어 뉴스 기사 목록을 받아오거나, 댓글을 서버에 저장하는 등의 작업에 쓰입니다.&lt;/p&gt;
&lt;hr data-end=&quot;314&quot; data-start=&quot;311&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;327&quot; data-start=&quot;316&quot; data-ke-size=&quot;size26&quot;&gt;  기본 문법&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;javascript&lt;/div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1748403609370&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fetch(요청할_URL)
  .then(response =&amp;gt; response.json())
  .then(data =&amp;gt; {
    // 받아온 데이터를 처리
    console.log(data);
  });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;606&quot; data-origin-height=&quot;204&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbUReg/btsOgOJBZye/0lr2b9kWgQTUZYn6ci32Zk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbUReg/btsOgOJBZye/0lr2b9kWgQTUZYn6ci32Zk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbUReg/btsOgOJBZye/0lr2b9kWgQTUZYn6ci32Zk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbUReg%2FbtsOgOJBZye%2F0lr2b9kWgQTUZYn6ci32Zk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;606&quot; height=&quot;204&quot; data-origin-width=&quot;606&quot; data-origin-height=&quot;204&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;629&quot; data-start=&quot;626&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;642&quot; data-start=&quot;631&quot; data-ke-size=&quot;size26&quot;&gt;  실제 예제&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;javascript&lt;/div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1748403724298&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fetch(&quot;https://jsonplaceholder.typicode.com/posts&quot;)
  .then(response =&amp;gt; response.json())
  .then(posts =&amp;gt; {
    console.log(&quot;받아온 글 목록:&quot;, posts);
  });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;888&quot; data-start=&quot;814&quot; data-ke-size=&quot;size16&quot;&gt;위 코드는 샘플 API에서 글 목록 데이터를 받아와 콘솔에 출력합니다.&lt;br /&gt;fetch는 기본적으로 &lt;b&gt;GET 요청&lt;/b&gt;을 보냅니다.&lt;/p&gt;
&lt;hr data-end=&quot;893&quot; data-start=&quot;890&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;925&quot; data-start=&quot;895&quot; data-ke-size=&quot;size26&quot;&gt;  &lt;b&gt;fetch에 옵션 추가하기 (POST 요청)&lt;/b&gt;&lt;/h2&gt;
&lt;p data-end=&quot;1007&quot; data-start=&quot;927&quot; data-ke-size=&quot;size16&quot;&gt;POST는 데이터를 서버에 보낼 때 사용하는 요청 방식입니다.&lt;br /&gt;이때는 fetch()에 **두 번째 인자(옵션 객체)**를 넣어야 합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;javascript&lt;/div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1748403809880&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fetch(&quot;https://jsonplaceholder.typicode.com/posts&quot;, {
  method: &quot;POST&quot;,
  headers: {
    &quot;Content-Type&quot;: &quot;application/json&quot;
  },
  body: JSON.stringify({
    title: &quot;테스트 제목&quot;,
    body: &quot;내용입니다&quot;,
    userId: 1
  })
})
  .then(response =&amp;gt; response.json())
  .then(data =&amp;gt; {
    console.log(&quot;서버에 저장된 결과:&quot;, data);
  });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;1352&quot; data-start=&quot;1343&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 옵션 설명&lt;/h3&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;624&quot; data-origin-height=&quot;199&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dGDGRl/btsOejkjiKV/veYpSW1TVw8ugmwT31kBx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dGDGRl/btsOejkjiKV/veYpSW1TVw8ugmwT31kBx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dGDGRl/btsOejkjiKV/veYpSW1TVw8ugmwT31kBx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdGDGRl%2FbtsOejkjiKV%2FveYpSW1TVw8ugmwT31kBx0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;624&quot; height=&quot;199&quot; data-origin-width=&quot;624&quot; data-origin-height=&quot;199&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;1499&quot; data-start=&quot;1496&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1518&quot; data-start=&quot;1501&quot; data-ke-size=&quot;size26&quot;&gt;  &lt;b&gt;에러 처리도 꼭 함께&lt;/b&gt;&lt;/h2&gt;
&lt;p data-end=&quot;1576&quot; data-start=&quot;1520&quot; data-ke-size=&quot;size16&quot;&gt;서버가 응답하지 않거나, 문제가 생겼을 때를 대비해 &lt;b&gt;에러 처리&lt;/b&gt;를 함께 작성하는 것이 좋습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;javascript&lt;/div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1748403888984&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fetch(&quot;https://api.example.com/data&quot;)
  .then(response =&amp;gt; {
    if (!response.ok) {
      throw new Error(&quot;서버 응답 오류&quot;);
    }
    return response.json();
  })
  .then(data =&amp;gt; {
    console.log(&quot;데이터:&quot;, data);
  })
  .catch(error =&amp;gt; {
    console.error(&quot;에러 발생:&quot;, error);
  });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;1874&quot; data-start=&quot;1871&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1884&quot; data-start=&quot;1876&quot; data-ke-size=&quot;size26&quot;&gt;  요약&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2027&quot; data-start=&quot;1886&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1925&quot; data-start=&quot;1886&quot;&gt;fetch()는 자바스크립트에서 서버와 통신하는 함수입니다.&lt;/li&gt;
&lt;li data-end=&quot;1974&quot; data-start=&quot;1926&quot;&gt;기본적으로 GET 요청을 보내며, POST 요청 등을 하려면 옵션을 추가합니다.&lt;/li&gt;
&lt;li data-end=&quot;2027&quot; data-start=&quot;1975&quot;&gt;응답을 처리할 때는 .then()과 .catch()를 함께 사용하는 것이 좋습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;2032&quot; data-start=&quot;2029&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2045&quot; data-start=&quot;2034&quot; data-ke-size=&quot;size26&quot;&gt;  보너스 팁&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2176&quot; data-start=&quot;2047&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2111&quot; data-start=&quot;2047&quot;&gt;실제 프로젝트에서는 async/await 문법을 함께 사용하면 더 직관적으로 코드를 작성할 수 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;2176&quot; data-start=&quot;2112&quot;&gt;fetch는 Promise 기반이므로, JavaScript의 비동기 흐름을 이해하는 데도 큰 도움이 됩니다.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>국비지원 - 실버마케팅(코딩) 250206~</category>
      <author>think2659</author>
      <guid isPermaLink="true">https://think2659.tistory.com/72</guid>
      <comments>https://think2659.tistory.com/72#entry72comment</comments>
      <pubDate>Wed, 28 May 2025 12:44:59 +0900</pubDate>
    </item>
    <item>
      <title>JSON이 뭔가요? &amp;ndash; 데이터를 주고받는 가장 널리 쓰이는 형식</title>
      <link>https://think2659.tistory.com/71</link>
      <description>&lt;h2 data-end=&quot;159&quot; data-start=&quot;147&quot; data-ke-size=&quot;size26&quot;&gt;✅ JSON이란?&lt;/h2&gt;
&lt;p data-end=&quot;257&quot; data-start=&quot;161&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;JSON&lt;/b&gt;(제이슨)은 &lt;b&gt;JavaScript Object Notation&lt;/b&gt;의 줄임말로,&lt;br /&gt;웹에서 데이터를 주고받을 때 가장 많이 사용하는 &lt;b&gt;데이터 포맷&lt;/b&gt;입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;296&quot; data-start=&quot;259&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;274&quot; data-start=&quot;259&quot;&gt;사람도 읽기 쉬우면서&lt;/li&gt;
&lt;li data-end=&quot;296&quot; data-start=&quot;275&quot;&gt;컴퓨터도 처리하기 쉬운 형식입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;343&quot; data-start=&quot;298&quot; data-ke-size=&quot;size16&quot;&gt;간단히 말하면, 정보를 텍스트로 정리해 놓은 구조화된 방식이라고 할 수 있습니다.&lt;/p&gt;
&lt;hr data-end=&quot;348&quot; data-start=&quot;345&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;365&quot; data-start=&quot;350&quot; data-ke-size=&quot;size26&quot;&gt;  JSON의 생김새&lt;/h2&gt;
&lt;p data-end=&quot;387&quot; data-start=&quot;367&quot; data-ke-size=&quot;size16&quot;&gt;다음은 JSON 데이터의 예시입니다:&lt;/p&gt;
&lt;pre id=&quot;code_1748403154110&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
  &quot;name&quot;: &quot;윤소정&quot;,
  &quot;age&quot;: 28,
  &quot;isStudent&quot;: false,
  &quot;skills&quot;: [&quot;JavaScript&quot;, &quot;Python&quot;, &quot;Figma&quot;]
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-end=&quot;530&quot; data-start=&quot;504&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-end=&quot;530&quot; data-start=&quot;504&quot; data-ke-size=&quot;size23&quot;&gt;  JSON의 규칙은 다음과 같습니다:&lt;/h3&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;219&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6iPgz/btsOgKUK33e/rMzcpdOPw50h3NA1IDF3Z1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6iPgz/btsOgKUK33e/rMzcpdOPw50h3NA1IDF3Z1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6iPgz/btsOgKUK33e/rMzcpdOPw50h3NA1IDF3Z1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6iPgz%2FbtsOgKUK33e%2FrMzcpdOPw50h3NA1IDF3Z1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;219&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;219&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;712&quot; data-start=&quot;709&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;734&quot; data-start=&quot;714&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;  JSON은 어디에 쓰일까?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-end=&quot;793&quot; data-start=&quot;736&quot; data-ke-size=&quot;size16&quot;&gt;웹에서 서버와 클라이언트가 데이터를 주고받을 때&lt;br /&gt;서버는 보통 JSON 형식으로 데이터를 응답합니다.&lt;/p&gt;
&lt;p data-end=&quot;814&quot; data-start=&quot;795&quot; data-ke-size=&quot;size16&quot;&gt;예: 서버가 유저 정보를 보내줄 때&lt;/p&gt;
&lt;pre id=&quot;code_1748403270453&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
  &quot;userId&quot;: 101,
  &quot;username&quot;: &quot;sojeong&quot;,
  &quot;email&quot;: &quot;sojeong@email.com&quot;
}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;div&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;프론트엔드(웹 화면)는 이 데이터를 받아 화면에 표시합니다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;944&quot; data-start=&quot;941&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;969&quot; data-start=&quot;946&quot; data-ke-size=&quot;size26&quot;&gt; &lt;b&gt; 자바스크립트에서 JSON 다루기&lt;/b&gt;&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;javascript&lt;/div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1748403288997&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// JSON 문자열
const jsonString = '{&quot;name&quot;:&quot;소정&quot;,&quot;age&quot;:28}';

// 문자열을 객체로 변환 (파싱)
const obj = JSON.parse(jsonString);
console.log(obj.name); // &quot;소정&quot;

// 객체를 JSON 문자열로 변환
const newJson = JSON.stringify(obj);
console.log(newJson); // {&quot;name&quot;:&quot;소정&quot;,&quot;age&quot;:28}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;562&quot; data-origin-height=&quot;162&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4KrCZ/btsOe4NGXLb/bohYE4Bd6mesY8VG7jDDWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4KrCZ/btsOe4NGXLb/bohYE4Bd6mesY8VG7jDDWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4KrCZ/btsOe4NGXLb/bohYE4Bd6mesY8VG7jDDWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4KrCZ%2FbtsOe4NGXLb%2FbohYE4Bd6mesY8VG7jDDWK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;562&quot; height=&quot;162&quot; data-origin-width=&quot;562&quot; data-origin-height=&quot;162&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-end=&quot;1364&quot; data-start=&quot;1361&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1374&quot; data-start=&quot;1366&quot; data-ke-size=&quot;size26&quot;&gt;  &lt;b&gt;요약&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1544&quot; data-start=&quot;1376&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1426&quot; data-start=&quot;1376&quot;&gt;&lt;b&gt;JSON&lt;/b&gt;은 데이터를 텍스트 형식으로 주고받기 위한 가장 일반적인 포맷입니다.&lt;/li&gt;
&lt;li data-end=&quot;1469&quot; data-start=&quot;1427&quot;&gt;중괄호 {}, 쌍따옴표 &quot; &quot; 등을 사용하는 규칙이 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;1544&quot; data-start=&quot;1470&quot;&gt;JavaScript에서는 JSON.parse()와 JSON.stringify()로 JSON을 자유롭게 변환할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1549&quot; data-start=&quot;1546&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1562&quot; data-start=&quot;1551&quot; data-ke-size=&quot;size26&quot;&gt;  &lt;b&gt;보너스 팁&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1709&quot; data-start=&quot;1564&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1626&quot; data-start=&quot;1564&quot;&gt;JSON은 백엔드, 프론트엔드, 모바일 앱, 심지어 AI API까지 거의 모든 데이터 교환에 사용됩니다.&lt;/li&gt;
&lt;li data-end=&quot;1709&quot; data-start=&quot;1627&quot;&gt;브라우저에서 F12 &amp;rarr; Network 탭 &amp;rarr; 응답(Response) 탭을 보면 실제로 JSON 형식의 데이터가 오가는 것을 확인할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>국비지원 - 실버마케팅(코딩) 250206~</category>
      <author>think2659</author>
      <guid isPermaLink="true">https://think2659.tistory.com/71</guid>
      <comments>https://think2659.tistory.com/71#entry71comment</comments>
      <pubDate>Wed, 28 May 2025 12:35:24 +0900</pubDate>
    </item>
  </channel>
</rss>