{"componentChunkName":"component---src-templates-blog-post-js","path":"/vue/vue-js-axios-및-rest-api-를-활용한-crud-구현/","result":{"data":{"site":{"siteMetadata":{"title":"Bottlehs Tech Blog","description":"웹·앱·AI 개발자 전병훈(bottlehs)의 기술 블로그. AI·LLM, JavaScript·Vue, Spring Boot, 알고리즘, 블록체인 실무 가이드를 다룹니다","siteUrl":"https://www.bottlehs.dev","author":{"name":"Jeon Byung Hun","summary":"개발을 즐기는 bottlehs - Engineer, MS, AI, FE, BE, OS, IOT, Blockchain, 설계, 테스트"},"social":{"github":"bottlehs","codepen":"bottlehs"}}},"markdownRemark":{"id":"268f9230-46a3-5011-b601-90393bfec606","excerpt":"Vue Js Axios 및 Rest Api 를 활용한 CRUD 구현 Aajx AJAX (Asynchronous Javascript And XML)\nAJAX란, Javascript의 라이브러리중 하나이며 Asynchronous Javascript And Xml…","html":"<p><img src=\"/assets/vue-logo.png\" alt=\"Vue Js Axios 및 Rest Api 를 활용한 CRUD 구현\" title=\"Vue Js Axios 및 Rest Api 를 활용한 CRUD 구현\"></p>\n<h2 id=\"aajx\" style=\"position:relative;\"><a href=\"#aajx\" aria-label=\"aajx permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Aajx</h2>\n<p>AJAX (Asynchronous Javascript And XML)\nAJAX란, Javascript의 라이브러리중 하나이며 Asynchronous Javascript And Xml(비동기식 자바스크립트와 xml)의 약자이다. 브라우저가 가지고있는 XMLHttpRequest 객체를 이용해서 전체 페이지를 새로 고치지 않고도 페이지의 일부만을 위한 데이터를 로드하는 기법 이며, avaScript를 사용한 비동기 통신, 클라이언트와 서버간에 XML 데이터를 주고받는 기술이다. 정리하자면, 자바스크립트를 통해서 서버에 데이터를 요청하는 것이다.</p>\n<h3 id=\"비동기-방식이란\" style=\"position:relative;\"><a href=\"#%EB%B9%84%EB%8F%99%EA%B8%B0-%EB%B0%A9%EC%8B%9D%EC%9D%B4%EB%9E%80\" aria-label=\"비동기 방식이란 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>비동기 방식이란?</h3>\n<p>비동기 방식은 웹페이지를 리로드하지 않고 데이터를 불러오는 방식이며,Ajax를 통해서 서버에 요청을 한 후 멈추어 있는 것이 아니라 그 프로그램은 계속 돌아간다는 의미를 내포하고 있다.</p>\n<h3 id=\"비동기-방식의-장점\" style=\"position:relative;\"><a href=\"#%EB%B9%84%EB%8F%99%EA%B8%B0-%EB%B0%A9%EC%8B%9D%EC%9D%98-%EC%9E%A5%EC%A0%90\" aria-label=\"비동기 방식의 장점 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>비동기 방식의 장점</h3>\n<p>페이지 리로드의 경우 전체 리소스를 다시 불러와야하는데 이미지, 스크립트 , 기타 코드등을 모두 재요청할 경우 불필요한 리소스 낭비가 발생하게 되지만 비동기식 방식을 이용할 경우 필요한 부분만 불러와 사용할 수 있으므로 매우 큰 장점이 있다.</p>\n<h2 id=\"axios\" style=\"position:relative;\"><a href=\"#axios\" aria-label=\"axios permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Axios</h2>\n<p>Axios는 브라우저, Node.js를 위한 Promise API를 활용하는 HTTP 비동기 통신 라이브러리이다.</p>\n<h3 id=\"axios-특징\" style=\"position:relative;\"><a href=\"#axios-%ED%8A%B9%EC%A7%95\" aria-label=\"axios 특징 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Axios 특징</h3>\n<ul>\n<li>운영 환경에 따라 브라우저의 XMLHttpRequest 객체 또는 Node.js의 HTTP API 사용</li>\n<li>Promise(ES6) API 사용</li>\n<li>요청과 응답 데이터의 변형</li>\n<li>HTTP 요청 취소 및 요청과 응답을 JSON 형태로 자동 변경</li>\n</ul>\n<p><img src=\"/assets/synchronous-asynchronous.png\" alt=\"Synchronous Asynchronous\" title=\"Synchronous Asynchronous\"></p>\n<h3 id=\"axios-설치-및-등록\" style=\"position:relative;\"><a href=\"#axios-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EB%93%B1%EB%A1%9D\" aria-label=\"axios 설치 및 등록 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Axios 설치 및 등록</h3>\n<div class=\"gatsby-highlight\" data-language=\"npm\"><pre class=\"language-npm\"><code class=\"language-npm\">npm install axios</code></pre></div>\n<p><img src=\"/assets/vue-axios-install.png\" alt=\"Vue Js Axios Install\" title=\"Vue Axios Install\"></p>\n<p>Axios 를 등록할 자바스크립트 파일을 하나 새로 생성합니다. 이름은 http/index.js 로 합니다.</p>\n<p><img src=\"/assets/vue-vuex-install-dir.png\" alt=\"Vue Js Axios Dir\" title=\"Vue Js Axios Dir\"></p>\n<p>axios 를 등록 하여 사용할 컴포넌트 <code class=\"language-text\">views/Sample.vue</code> 를 생성후 Axios (http) Instance 를 import 합니다.</p>\n<p><img src=\"/assets/vue-axios-sample-instance.png\" alt=\"Vue Js Axios Dir\" title=\"Vue Js Axios Dir\"></p>\n<h2 id=\"rest-api\" style=\"position:relative;\"><a href=\"#rest-api\" aria-label=\"rest api permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>REST API</h2>\n<p>제공되는 sample api 를 활용하여 crud 를 개발 해보도록 하겠습니다. crud 란 create, read, update, delete 의 약어 이다.\nREST API 를 활용한 CRUD 개발에 앞서 HTTP 와 REST API 에 대해 알아 보도록 하낟.</p>\n<h3 id=\"http\" style=\"position:relative;\"><a href=\"#http\" aria-label=\"http permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>HTTP</h3>\n<p>HTTP는 Hyper Text Transfer Protocol의 두문자어로, 인터넷에서 데이터를 주고받을 수 있는 프로토콜입니다.</p>\n<h3 id=\"rest-api-1\" style=\"position:relative;\"><a href=\"#rest-api-1\" aria-label=\"rest api 1 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>REST API</h3>\n<h4 id=\"rest의-정의\" style=\"position:relative;\"><a href=\"#rest%EC%9D%98-%EC%A0%95%EC%9D%98\" aria-label=\"rest의 정의 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>REST의 정의</h4>\n<p>“Representational State Transfer” 의 약자 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다. 즉, 자원(resource)의 표현(representation) 에 의한 상태 전달</p>\n<ul>\n<li>\n<p>자원(resource)의 표현(representation)</p>\n<ul>\n<li>자원: 해당 소프트웨어가 관리하는 모든 것</li>\n<li>자원의 표현: 그 자원을 표현하기 위한 이름</li>\n</ul>\n</li>\n<li>\n<p>상태(정보) 전달</p>\n<ul>\n<li>데이터가 요청되어지는 시점에서 자원의 상태(정보)를 전달한다.</li>\n<li>JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적이다.</li>\n</ul>\n</li>\n</ul>\n<p>REST는 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나이다.</p>\n<h4 id=\"rest의-구체적인-개념\" style=\"position:relative;\"><a href=\"#rest%EC%9D%98-%EA%B5%AC%EC%B2%B4%EC%A0%81%EC%9D%B8-%EA%B0%9C%EB%85%90\" aria-label=\"rest의 구체적인 개념 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>REST의 구체적인 개념</h4>\n<p>HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.\n즉, REST는 자원 기반의 구조(ROA, Resource Oriented Architecture) 설계의 중심에 Resource가 있고 HTTP Method를 통해 Resource를 처리하도록 설계된 아키텍쳐를 의미한다.\n웹 사이트의 이미지, 텍스트, DB 내용 등의 모든 자원에 고유한 ID인 HTTP URI를 부여한다.</p>\n<h5 id=\"crud-operation\" style=\"position:relative;\"><a href=\"#crud-operation\" aria-label=\"crud operation permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>CRUD Operation</h5>\n<ul>\n<li>Create : 생성(POST)</li>\n<li>Read : 조회(GET)</li>\n<li>Update : 수정(PUT)</li>\n<li>Delete : 삭제(DELETE)</li>\n<li>HEAD: header 정보 조회(HEAD)</li>\n</ul>\n<h2 id=\"rest-api-요청-및-응답-예시-와-http-상태-설명\" style=\"position:relative;\"><a href=\"#rest-api-%EC%9A%94%EC%B2%AD-%EB%B0%8F-%EC%9D%91%EB%8B%B5-%EC%98%88%EC%8B%9C-%EC%99%80-http-%EC%83%81%ED%83%9C-%EC%84%A4%EB%AA%85\" aria-label=\"rest api 요청 및 응답 예시 와 http 상태 설명 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>REST API 요청 및 응답 예시 와 HTTP 상태 설명</h2>\n<p><code class=\"language-text\">views/Sample.vue</code> 에서 입력,수정,삭제,조회 기능을 구할 것이다. 각 CRUD 예시는 아래와 같으며 HTTP 응답은 아래와 같이 구성 했다.</p>\n<h3 id=\"http-응답\" style=\"position:relative;\"><a href=\"#http-%EC%9D%91%EB%8B%B5\" aria-label=\"http 응답 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>HTTP 응답</h3>\n<table>\n<thead>\n<tr>\n<th>Status Code</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>200 (성공)</td>\n<td>서버가 요청을 제대로 처리했다는 뜻이다. 이는 주로 서버가 요청한 페이지를 제공했다는 의미로 쓰인다.</td>\n</tr>\n<tr>\n<td>204 (콘텐츠 없음)</td>\n<td>서버가 요청을 성공적으로 처리했지만 콘텐츠를 제공하지 않는다.</td>\n</tr>\n<tr>\n<td>400 (잘못된 요청)</td>\n<td>서버가 요청의 구문을 인식하지 못했다.</td>\n</tr>\n<tr>\n<td>401 (권한 없음)</td>\n<td>이 요청은 인증이 필요하다. 서버는 로그인이 필요한 페이지에 대해 이 요청을 제공할 수 있다. 상태 코드 이름이 권한 없음(Unauthorized)으로 되어 있지만 실제 뜻은 인증 안됨(Unauthenticated)에 더 가깝다.</td>\n</tr>\n<tr>\n<td>403 (Forbidden, 금지됨)</td>\n<td>서버가 요청을 거부하고 있다. 예를 들자면, 사용자가 리소스에 대한 필요 권한을 갖고 있지 않다. (401은 인증 실패, 403은 인가 실패라고 볼 수 있음)</td>\n</tr>\n<tr>\n<td>410 (사라짐)</td>\n<td>서버는 요청한 리소스가 영구적으로 삭제되었을 때 이 응답을 표시한다. 404(찾을 수 없음) 코드와 비슷하며 이전에 있었지만 더 이상 존재하지 않는 리소스에 대해 404 대신 사용하기도 한다. 리소스가 영구적으로 이동된 경우 301을 사용하여 리소스의 새 위치를 지정해야 한다.</td>\n</tr>\n<tr>\n<td>412 (사전조건 실패)</td>\n<td>서버가 요청자가 요청 시 부과한 사전조건을 만족하지 않는다.</td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"입력\" style=\"position:relative;\"><a href=\"#%EC%9E%85%EB%A0%A5\" aria-label=\"입력 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>입력</h3>\n<p><img src=\"/assets/vue-axios-rest-api-create.png\" alt=\"Vue Js Axios REST API 입력\" title=\"Vue Js Axios REST API 입력\"></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">URL: https://testrestapi.cafe24.com/api/sample/sample\nMethod: POST\n\nbody\n{\n  \"name\": \"name edit\",\n  \"description\": \"description edit\"\n}</code></pre></div>\n<h3 id=\"조회\" style=\"position:relative;\"><a href=\"#%EC%A1%B0%ED%9A%8C\" aria-label=\"조회 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>조회</h3>\n<p><img src=\"/assets/vue-axios-rest-api-read.png\" alt=\"Vue Js Axios REST API 조회\" title=\"Vue Js Axios REST API 조회\"></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">URL: https://testrestapi.cafe24.com/api/sample/sample\nMethod: GET</code></pre></div>\n<h3 id=\"단건-조회\" style=\"position:relative;\"><a href=\"#%EB%8B%A8%EA%B1%B4-%EC%A1%B0%ED%9A%8C\" aria-label=\"단건 조회 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>단건 조회</h3>\n<p><img src=\"/assets/vue-axios-rest-api-read-single.png\" alt=\"Vue Js Axios REST API 단건 조회\" title=\"Vue Js Axios REST API 단건 조회\"></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">URL: https://testrestapi.cafe24.com/api/sample/sample/{id}\nMethod: GET</code></pre></div>\n<h3 id=\"단건-수정\" style=\"position:relative;\"><a href=\"#%EB%8B%A8%EA%B1%B4-%EC%88%98%EC%A0%95\" aria-label=\"단건 수정 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>단건 수정</h3>\n<p><img src=\"/assets/vue-axios-rest-api-update.png\" alt=\"Vue Js Axios REST API 단건 수정\" title=\"Vue Js Axios REST API 단건 수정\"></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">URL: https://testrestapi.cafe24.com/api/sample/sample/{id}\nMethod: PUT\n\nbody\n{\n  \"name\": \"name edit\",\n  \"description\": \"description edit\"\n}</code></pre></div>\n<h3 id=\"단건-삭제\" style=\"position:relative;\"><a href=\"#%EB%8B%A8%EA%B1%B4-%EC%82%AD%EC%A0%9C\" aria-label=\"단건 삭제 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>단건 삭제</h3>\n<p><img src=\"/assets/vue-axios-rest-api-delete.png\" alt=\"Vue Js Axios REST API 단건 삭제\" title=\"Vue Js Axios REST API 단건 삭제\"></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">URL: https://testrestapi.cafe24.com/api/sample/sample/{id}\nMethod: DELETE</code></pre></div>\n<h2 id=\"axios-를-활용한-rest-api-연동\" style=\"position:relative;\"><a href=\"#axios-%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-rest-api-%EC%97%B0%EB%8F%99\" aria-label=\"axios 를 활용한 rest api 연동 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Axios 를 활용한 REST API 연동</h2>\n<h3 id=\"적용-화면\" style=\"position:relative;\"><a href=\"#%EC%A0%81%EC%9A%A9-%ED%99%94%EB%A9%B4\" aria-label=\"적용 화면 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>적용 화면</h3>\n<p><img src=\"/assets/vue-axios-rest-sample.png\" alt=\"Vue Js Axios REST API 조회 적용 화면\" title=\"Vue Js Axios REST API 조회 적용 화면\"></p>\n<h3 id=\"코드\" style=\"position:relative;\"><a href=\"#%EC%BD%94%EB%93%9C\" aria-label=\"코드 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>코드</h3>\n<p>아래 코드 로직은 아래와 같다.</p>\n<ol>\n<li>http 를 import 한다.</li>\n<li>data 에 items, totalItems, totalPages 를 초기화 한다.</li>\n<li><code class=\"language-text\">created</code> 에서 <code class=\"language-text\">read()</code> 함수를 호출 한다.</li>\n<li><code class=\"language-text\">read()</code> 함수에서 axios 를 활용하여 sample api 를 GET 으로 호출 한다.</li>\n<li>응답값 <code class=\"language-text\">response</code> 에서 items, totalItems, totalPages 를 각각 Vue data 변수에 대입해 준다.</li>\n</ol>\n<div class=\"gatsby-highlight\" data-language=\"html\"><pre class=\"language-html\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>template</span><span class=\"token punctuation\">></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>vuex<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>h1</span><span class=\"token punctuation\">></span></span>Sample 화면 입니다.<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>h1</span><span class=\"token punctuation\">></span></span>\n    totalItems : {{ totalItems }} <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>br</span> <span class=\"token punctuation\">/></span></span>\n    totalPages : {{ totalPages }} <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>br</span> <span class=\"token punctuation\">/></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>ul</span><span class=\"token punctuation\">></span></span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>li</span> <span class=\"token attr-name\">v-for</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>(row, i) in items<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">:key</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span><span class=\"token punctuation\">'</span>result_table_' + i<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>{{ row }}<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>li</span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>ul</span><span class=\"token punctuation\">></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>template</span><span class=\"token punctuation\">></span></span>\n\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span><span class=\"token punctuation\">></span></span><span class=\"token script\"><span class=\"token language-javascript\">\n  <span class=\"token keyword\">import</span> http <span class=\"token keyword\">from</span> <span class=\"token string\">\"../http\"</span>\n\n  <span class=\"token keyword\">export</span> <span class=\"token keyword\">default</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token literal-property property\">name</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Vuex\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token literal-property property\">components</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token function\">data</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token keyword\">return</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token literal-property property\">items</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token literal-property property\">totalItems</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n        <span class=\"token literal-property property\">totalPages</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n      <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token literal-property property\">methods</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token keyword\">delete</span><span class=\"token punctuation\">(</span>id<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        http\n          <span class=\"token punctuation\">.</span><span class=\"token function\">delete</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"/api/sample/sample/\"</span> <span class=\"token operator\">+</span> id<span class=\"token punctuation\">)</span>\n          <span class=\"token punctuation\">.</span><span class=\"token function\">then</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">response</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n            <span class=\"token keyword\">const</span> <span class=\"token punctuation\">{</span> data <span class=\"token punctuation\">}</span> <span class=\"token operator\">=</span> response\n            console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>data<span class=\"token punctuation\">)</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span>\n          <span class=\"token punctuation\">.</span><span class=\"token function\">catch</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">error</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n            <span class=\"token function\">alert</span><span class=\"token punctuation\">(</span>error<span class=\"token punctuation\">)</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span>\n      <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n      <span class=\"token function\">create</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">id<span class=\"token punctuation\">,</span> params</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        http\n          <span class=\"token punctuation\">.</span><span class=\"token function\">post</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"/api/sample/sample/\"</span><span class=\"token punctuation\">,</span> params<span class=\"token punctuation\">)</span>\n          <span class=\"token punctuation\">.</span><span class=\"token function\">then</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">response</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n            <span class=\"token keyword\">const</span> <span class=\"token punctuation\">{</span> data <span class=\"token punctuation\">}</span> <span class=\"token operator\">=</span> response\n            console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>data<span class=\"token punctuation\">)</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span>\n          <span class=\"token punctuation\">.</span><span class=\"token function\">catch</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">error</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n            <span class=\"token function\">alert</span><span class=\"token punctuation\">(</span>error<span class=\"token punctuation\">)</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span>\n      <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n      <span class=\"token function\">update</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">id<span class=\"token punctuation\">,</span> params</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        http\n          <span class=\"token punctuation\">.</span><span class=\"token function\">put</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"/api/sample/sample/\"</span> <span class=\"token operator\">+</span> id<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">{</span>\n            <span class=\"token literal-property property\">params</span><span class=\"token operator\">:</span> params<span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span>\n          <span class=\"token punctuation\">.</span><span class=\"token function\">then</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">response</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n            <span class=\"token keyword\">const</span> <span class=\"token punctuation\">{</span> data <span class=\"token punctuation\">}</span> <span class=\"token operator\">=</span> response\n            console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>data<span class=\"token punctuation\">)</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span>\n          <span class=\"token punctuation\">.</span><span class=\"token function\">catch</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">error</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n            <span class=\"token function\">alert</span><span class=\"token punctuation\">(</span>error<span class=\"token punctuation\">)</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span>\n      <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n      <span class=\"token function\">read</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">let</span> params <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span>\n        http\n          <span class=\"token punctuation\">.</span><span class=\"token function\">get</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"/api/sample/sample\"</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">{</span>\n            <span class=\"token literal-property property\">params</span><span class=\"token operator\">:</span> params<span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span>\n          <span class=\"token punctuation\">.</span><span class=\"token function\">then</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">response</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n            <span class=\"token keyword\">const</span> <span class=\"token punctuation\">{</span> data <span class=\"token punctuation\">}</span> <span class=\"token operator\">=</span> response\n            console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>data<span class=\"token punctuation\">)</span>\n            <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>items <span class=\"token operator\">=</span> data<span class=\"token punctuation\">.</span>items\n            <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>totalItems <span class=\"token operator\">=</span> data<span class=\"token punctuation\">.</span>totalItems\n            <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>totalPages <span class=\"token operator\">=</span> data<span class=\"token punctuation\">.</span>totalPages\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span>\n          <span class=\"token punctuation\">.</span><span class=\"token function\">catch</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">error</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n            <span class=\"token function\">alert</span><span class=\"token punctuation\">(</span>error<span class=\"token punctuation\">)</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span>\n      <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token function\">created</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n      console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>http<span class=\"token punctuation\">)</span>\n      <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token function\">read</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n  <span class=\"token punctuation\">}</span>\n</span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span>\n\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>style</span> <span class=\"token attr-name\">scoped</span><span class=\"token punctuation\">></span></span><span class=\"token style\"><span class=\"token language-css\">\n  <span class=\"token selector\">.main</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">border</span><span class=\"token punctuation\">:</span> solid 5px #000<span class=\"token punctuation\">;</span>\n    <span class=\"token property\">padding</span><span class=\"token punctuation\">:</span> 100px<span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n</span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>style</span><span class=\"token punctuation\">></span></span></code></pre></div>","tableOfContents":"<ul>\n<li>\n<p><a href=\"/vue/vue-js-axios-%EB%B0%8F-rest-api-%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-crud-%EA%B5%AC%ED%98%84/#aajx\">Aajx</a></p>\n<ul>\n<li><a href=\"/vue/vue-js-axios-%EB%B0%8F-rest-api-%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-crud-%EA%B5%AC%ED%98%84/#%EB%B9%84%EB%8F%99%EA%B8%B0-%EB%B0%A9%EC%8B%9D%EC%9D%B4%EB%9E%80\">비동기 방식이란?</a></li>\n<li><a href=\"/vue/vue-js-axios-%EB%B0%8F-rest-api-%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-crud-%EA%B5%AC%ED%98%84/#%EB%B9%84%EB%8F%99%EA%B8%B0-%EB%B0%A9%EC%8B%9D%EC%9D%98-%EC%9E%A5%EC%A0%90\">비동기 방식의 장점</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/vue/vue-js-axios-%EB%B0%8F-rest-api-%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-crud-%EA%B5%AC%ED%98%84/#axios\">Axios</a></p>\n<ul>\n<li><a href=\"/vue/vue-js-axios-%EB%B0%8F-rest-api-%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-crud-%EA%B5%AC%ED%98%84/#axios-%ED%8A%B9%EC%A7%95\">Axios 특징</a></li>\n<li><a href=\"/vue/vue-js-axios-%EB%B0%8F-rest-api-%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-crud-%EA%B5%AC%ED%98%84/#axios-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EB%93%B1%EB%A1%9D\">Axios 설치 및 등록</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/vue/vue-js-axios-%EB%B0%8F-rest-api-%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-crud-%EA%B5%AC%ED%98%84/#rest-api\">REST API</a></p>\n<ul>\n<li><a href=\"/vue/vue-js-axios-%EB%B0%8F-rest-api-%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-crud-%EA%B5%AC%ED%98%84/#http\">HTTP</a></li>\n<li>\n<p><a href=\"/vue/vue-js-axios-%EB%B0%8F-rest-api-%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-crud-%EA%B5%AC%ED%98%84/#rest-api-1\">REST API</a></p>\n<ul>\n<li><a href=\"/vue/vue-js-axios-%EB%B0%8F-rest-api-%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-crud-%EA%B5%AC%ED%98%84/#rest%EC%9D%98-%EC%A0%95%EC%9D%98\">REST의 정의</a></li>\n<li>\n<p><a href=\"/vue/vue-js-axios-%EB%B0%8F-rest-api-%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-crud-%EA%B5%AC%ED%98%84/#rest%EC%9D%98-%EA%B5%AC%EC%B2%B4%EC%A0%81%EC%9D%B8-%EA%B0%9C%EB%85%90\">REST의 구체적인 개념</a></p>\n<ul>\n<li><a href=\"/vue/vue-js-axios-%EB%B0%8F-rest-api-%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-crud-%EA%B5%AC%ED%98%84/#crud-operation\">CRUD Operation</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>\n<p><a href=\"/vue/vue-js-axios-%EB%B0%8F-rest-api-%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-crud-%EA%B5%AC%ED%98%84/#rest-api-%EC%9A%94%EC%B2%AD-%EB%B0%8F-%EC%9D%91%EB%8B%B5-%EC%98%88%EC%8B%9C-%EC%99%80-http-%EC%83%81%ED%83%9C-%EC%84%A4%EB%AA%85\">REST API 요청 및 응답 예시 와 HTTP 상태 설명</a></p>\n<ul>\n<li><a href=\"/vue/vue-js-axios-%EB%B0%8F-rest-api-%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-crud-%EA%B5%AC%ED%98%84/#http-%EC%9D%91%EB%8B%B5\">HTTP 응답</a></li>\n<li><a href=\"/vue/vue-js-axios-%EB%B0%8F-rest-api-%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-crud-%EA%B5%AC%ED%98%84/#%EC%9E%85%EB%A0%A5\">입력</a></li>\n<li><a href=\"/vue/vue-js-axios-%EB%B0%8F-rest-api-%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-crud-%EA%B5%AC%ED%98%84/#%EC%A1%B0%ED%9A%8C\">조회</a></li>\n<li><a href=\"/vue/vue-js-axios-%EB%B0%8F-rest-api-%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-crud-%EA%B5%AC%ED%98%84/#%EB%8B%A8%EA%B1%B4-%EC%A1%B0%ED%9A%8C\">단건 조회</a></li>\n<li><a href=\"/vue/vue-js-axios-%EB%B0%8F-rest-api-%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-crud-%EA%B5%AC%ED%98%84/#%EB%8B%A8%EA%B1%B4-%EC%88%98%EC%A0%95\">단건 수정</a></li>\n<li><a href=\"/vue/vue-js-axios-%EB%B0%8F-rest-api-%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-crud-%EA%B5%AC%ED%98%84/#%EB%8B%A8%EA%B1%B4-%EC%82%AD%EC%A0%9C\">단건 삭제</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/vue/vue-js-axios-%EB%B0%8F-rest-api-%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-crud-%EA%B5%AC%ED%98%84/#axios-%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-rest-api-%EC%97%B0%EB%8F%99\">Axios 를 활용한 REST API 연동</a></p>\n<ul>\n<li><a href=\"/vue/vue-js-axios-%EB%B0%8F-rest-api-%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-crud-%EA%B5%AC%ED%98%84/#%EC%A0%81%EC%9A%A9-%ED%99%94%EB%A9%B4\">적용 화면</a></li>\n<li><a href=\"/vue/vue-js-axios-%EB%B0%8F-rest-api-%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-crud-%EA%B5%AC%ED%98%84/#%EC%BD%94%EB%93%9C\">코드</a></li>\n</ul>\n</li>\n</ul>","wordCount":{"words":564},"fields":{"slug":"/vue/vue-js-axios-및-rest-api-를-활용한-crud-구현/","image":"/assets/vue-logo.png","faq":[]},"frontmatter":{"title":"Vue Js Axios 및 Rest Api 를 활용한 CRUD 구현","date":"2021년 4월 11일","dateISO":"2021-04-11T23:11:34.709Z","updatedISO":null,"category":"vue","description":"Axios는 브라우저, Node.js를 위한 Promise API를 활용하는 HTTP 비동기 통신 라이브러리이다. 비동기 방식은 웹페이지를 리로드하지 않고 데이터를 불러오는 방식이며,Ajax를 통해서 서버에 요청을 한 후 멈추어 있는 것이 아니라 그 프로그램은 계속 돌아간다는 의미를 내포하고 있다.","tags":["vue","javascript","framework","frontend","web","axios","ajax","crud"]}}},"pageContext":{"slug":"/vue/vue-js-axios-및-rest-api-를-활용한-crud-구현/","previous":{"fields":{"slug":"/vue/vue-js-vuex-저장소-store-속성-및-모듈화/"},"frontmatter":{"title":"Vue Js Vuex 저장소(store) 속성 및 모듈화","tags":["vue","javascript","framework","frontend","web","vuex","modules"]}},"next":{"fields":{"slug":"/etc/mac-에서-node-js-npm-업데이트-하기-2021/"},"frontmatter":{"title":"Mac 에서 Node.js, NPM 업데이트 하기 (2021)","tags":["javascript","nodejs","npm","update","mac"]}}}},"staticQueryHashes":["213619243","3262363727"]}