오픈 API를 통하여 블로그 형식의 뉴스 사이트를
vue.js로 구현하는 예제(ver.2)입니다.
vue.js로 구현하는 예제(ver.2)입니다.
예제는 인프런의 캡틴판교, "장기효"님의 Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념을
들으면서 공부한 내용입니다.
axios 이용한 api 호출
해당 API 문서 주소: http://github.com/tastejs/hacker-news-pwas/blob/master/docs/api.md
axios 설치
npm i axios --s
axios에 대한 자세한 설명은 아래 포스트로 이동해주세요.
https://goddino.tistory.com/89
api 구조화
▶ 구조화 전
· 각 컴포넌트 안, script 내에 vue의 라이프 사이클, created 안에서 api 호출
· 처음 화면에 뿌려주는 것은 라이프 사이클에서 created 또는 beforeMount 사용
created() {
axios.get('https://api.hnpwa.com/v0/news/1.json')
.then(response =>
return this.array = response.data)
.error(error => console.log(error))
}
▶ 구조화
src 폴더 안에 api 폴더 생성 후 index.js 파일 생성
index.js
import axios from 'axios';
//1.HTTP request & response
const config = {
baseUrl: 'https://api.hnpwa.com/v0/'
}
//2. API 함수들을 정리
function fetchNewsList() {
return axios.get(`${config.baseUrl}news/1.json`)
}
function fetchAskList() {
return axios.get(`${config.baseUrl}ask/1.json`)
}
function fetchJobsList() {
return axios.get(`${config.baseUrl}jobs/1.json`)
}
export { //export default 아님
fetchNewsList,
fetchAskList,
fetchJobsList
}
각 하위 컴포넌트(NewsView.vue)
<script>
import { fetchNewsList } from "../api/index";
export default {
data() {
return {
news: [],
};
},
created() {
fetchNewsList()
.then((response) => (this.news = response.data))
.catch((error) => console.log(error));
},
};
</script>
반응형
'개발 > React' 카테고리의 다른 글
[vue] vue.js vue 동적 라우트(api 통해 뉴스 사이트 구현 ver.4) (0) | 2021.01.18 |
---|---|
[vue] vue vuex , store적용(api 통해 뉴스 사이트 구현 ver.3) (0) | 2021.01.14 |
[vue] vue.js 라우터 연결, nav 출력(api 통해 뉴스 사이트 구현 ver.1) (0) | 2021.01.13 |
[vue] vue.js computed 속성 (0) | 2021.01.08 |
[vue] v-if, v-else, v-show (ft. v-if와 v-show 차이점) (0) | 2021.01.08 |
댓글