Jungmin Park

Add getting API detail

Showing 1 changed file with 50 additions and 48 deletions
......@@ -22,7 +22,7 @@
## **About the Project**
기존에 축제나 행사를 검색하기 위해서는 행사가 언제 어디서 열리는지 파악하고, 그 날짜에 맞춰서 날씨를 또 검색해 보아야 하는 번거로움이 있었다. 이러한 일련의 번거로운 과정들을 한 데 묶어 몇 번의 클릭으로 사용자가 원하는 행사 및 축제 정보를 디스플레이 함으로써 사용자의 편의 증대라는 효과를 가져올 수 있을 것으로 예상된다.
기존에 축제나 행사를 검색하기 위해서는 행사가 언제 어디서 열리는지 파악하고, 그 날짜에 맞춰서 날씨를 또 검색해 보아야 하는 번거로움이 있었다. 이러한 일련의 번거로운 과정들을 한 데 묶어 몇 번의 클릭으로 사용자가 원하는 행사 및 축제 정보를 디스플레이 함으로써 사용자의 편의 증대라는 효과를 가져올 수 있을 것으로 예상된다. 또한 시민들의 활발한 행사 참여로 인해 지역 경제 활성화에 이바지할 수 있을 것으로 예상된다.
본 서비스는 지자체에서 개최하는 행사 정보와 날씨 데이터를 API를 통하여 받아온 후 그를 조합하여 사용자에게 친숙한 인터페이스(svelte 활용)를 통해 지역 / 행사별로 날씨 정보를 한눈에 볼 수 있는 서비스를 제공한다.
......@@ -42,19 +42,12 @@ Built With
### **Prerequisites**
1. Docker를 사용하는 경우 (**권장**)
* [도커 공식 홈페이지](https://www.docker.com/)에 접속하여 docker 및 docker-compose 설치
* [Docker 다운로드 페이지](https://docs.docker.com/engine/install/)에 접속하여 docker 및 docker-compose 설치
1. Docker를 사용하지 않는 경우
* [Node.js 공식 홈페이지](https://nodejs.org/ko/download/)에 접속하여 Node.js 설치
* [MongoDB 공식 홈페이지](https://www.mongodb.com/)에 접속하여 MongoDB 설치
* [Mongoexport 사용을 위한 tool](https://www.mongodb.com/try/download/database-tools?tck=docs_databasetools)에 접속하여 mongoexport 추가 기능 설치
* `Program files/mongodb/bin` 경로 안에 설치된 파일들 추가하여 확장 기능을 위한 설치 완료
* API 키를 획득하기 위해, Free API Key를 [기상청 API](https://data.kma.go.kr/api/selectApiList.do?pgmNo=42)에서 단기예보 서비스에 대한 API Key를, [관광공사 API](https://api.visitkorea.or.kr/main.do)에서 국문 관광정보 서비스에 대한 API Key를, [카카오 지도 API](https://apis.map.kakao.com/) Key를 획득
### **Installation**
* Free API Key를 [기상청 API](https://data.kma.go.kr/api/selectApiList.do?pgmNo=42), [관광공사 API](https://api.visitkorea.or.kr/main.do), [카카오 지도 API](https://apis.map.kakao.com/) 공식 사이트에서 받아온다
* Windows의 경우 설치하고자 하는 폴더에 들어가서 우클릭한 후 `git bash` 를 클릭하여 터미널 창을 연다
* MacOs의 경우 터미널창을 연 후 Command Line Interface를 통하여 설치하고자 하는 폴더로 이동한다
......@@ -64,7 +57,7 @@ Built With
git clone http://khuhub.khu.ac.kr/2018102190/TFT.git
```
* ServiceKey 폴더 안의 text 파일에 발급받은 API 키를 입력한다
* API 키 적용 방법 -> ServiceKey 폴더 안의 `festival.txt`, `weather.txt` 파일에 국문 관광정보 서비스 API키와 기상청 단기예보 서비스 API를 각각 입력하고, `TFT/TFT_WEB/public/index.html` 안의 `dapi.kakao.com/v2/maps/sdk.js?appkey=########`의 # 부분에 카카오 지도 API를 입력한다
## **프로젝트 구조 / 동작 방식**
......@@ -75,27 +68,48 @@ Built With
1. Backend Server
1. MongoDB Atlas와 서버를 연동하여 Database와 Node.js 연결
1. DB에서 json 형태의 데이터를 불러 온 후 Frontend에서 유저에 의한 요청 발생 시 Frontend로 전송
1. Service 2 - DB
2. Service 2 - DB
1. API로부터 받아온 정보를 관리하고 MongoDB Atlas를 활용하여 Server에 제공
1. Service 3 - API Handler
1. [관광공사 API](https://api.visitkorea.or.kr/main.do)를 호출하여 Database에 Write함
1. [기상청 API](https://data.kma.go.kr/api/selectApiList.do?pgmNo=42)를 호출하여 날씨 및 기상 관련 정보 가져옴
* DB 설정 방법 : 한국관광공사 API와 날씨 API를 json 형태로 가져와서 스키마에 맞는 정보들을 선정해서 추출한 후 저장한다. docker-compose 실행에 따라서 자동으로 database가 설정된다.
* DB Schema
title : 축제명
addr : 축제 개최주소
tel : 축제 문의 전화번호
mapx : 축제 지역 경도값
mapy : 축제 지역 위도값
overview : 축제에 관한 간략한 설명
firstimage : 축제 관련 사진 정보
homepage : 축제 홈페이지
eventstartdate : 축제 시작일
evemtenddate : 축제 종료일
weather : 축제 시작일 기준 3일분의 온도와 날씨 정보를 json 형태로 저장
3. Service 3 - API Handler
1. [국문 관광정보 API](https://api.visitkorea.or.kr/main.do)를 호출하여 Database에 Write함
1. [기상청 단기예보 API](https://data.kma.go.kr/api/selectApiList.do?pgmNo=42)를 호출하여 날씨 및 기상 관련 정보 가져옴
## **Usage**
1. Docker를 사용하는 경우
1. `docker-compose.yml` file이 있는 폴더에서 terminal을 연다
1. `docker-compose up -d` 명령을 실행한다
1. 서버를 종료할 때에는 `docker-compose down` 명령을 실행한다
1. `docker-compose.yml` file이 있는 폴더에서 terminal을 연다
1. `docker-compose up -d` 명령을 실행한다
1. 서버를 종료할 때에는 `docker-compose down` 명령을 실행한다
1. Docker를 사용하지 않는 경우
1. MongoDB가 정상적으로 작동되는지 확인한다
1. TFT_API, TFT_WEB 각 폴더에서 `npm install` 명령을 실행한다
1. 각 폴더에서 `npm start` 명령을 실행한다
Service Overview
![serviceOverview](/uploads/06baa0ebea9fd11478b3c6c9595dc2ad/serviceOverview.PNG)
Select District
......@@ -115,21 +129,17 @@ Show total example
## **Roadmap**
- [v] Express 활용 서버 기본 베이스 구축 및 Dockerfile, README first commit 진행
- [v] Frontend 개발을 위한 template와 ApiHandler 개발을 위한 template 추가
- [v] 관광공사 API를 활용하여 DB에 축제 정보 저장하는 기능 추가
- [v] ApiHandler에서 원하지 않는 정보 걸러내는 기능 추가
- [v] 서버 개설 시 DB와 server connect하는 기능 추가
- [v] 기상청 API를 활용하여 DB에 기상 정보 저장하는 기능 추가
- [v] 카카오 지도 API를 활용하여 svelte와 연동, 인터페이스 구축
- [v] MongoDB Atlas에서 JSON 형식으로 정보 받아오는 기능 추가
- [v] Express와 svelte 연동
- [v] Express 활용 서버 기본 베이스 구축
- [v] Frontend 개발을 위한 template과 ApiHandler 개발을 위한 template 추가
- [v] 관광공사 API를 활용, DB에 축제 정보 저장 기능 추가
- [v] ApiHandler에서 원하지 정보 filter 기능 추가
- [v] 서버 개설 시 DB와 server connect 기능 추가
- [v] 기상청 API 활용, DB에 기상 정보 저장하는 기능 추가
- [v] 카카오 지도 API와 svelte 연동 및 인터페이스 구축
- [v] MongoDB Atlas에서 JSON 형식의 정보 받아오는 기능 추가
- [v] Frontend에 도, 시, 군, 구 등 구획 설정 및 축제 선택 기능 추가
- [v] 로고 제작 및 이미지 추가
- [v] Frontend와 Backend Merge 실행
- [v] ApiHandler 간소화 (불필요한 파일 제거)
- [v] ApiHandler와 server.js merge 실행
- [v] Docker 활용하여 서비스 실행 구축
- [v] ApiHandler 간소화
- [v] Docker 활용, 서비스 실행 구축
- [v] Amazon AWS에 프로젝트 업로드 및 실행 예시 이미지 업로드
......@@ -139,7 +149,7 @@ Show total example
만약 프로젝트 발전을 위한 더 좋은 방법이 있으시다면 저희의 프로젝트를 fork하신 후 pull request를 부탁드립니다.
1. 프로젝트 fork 해오기 (` git clone http://khuhub.khu.ac.kr/2018102190/TFT.git `)
1. 프로젝트 clone (` git clone http://khuhub.khu.ac.kr/2018102190/TFT.git `)
2. 새로운 기능을 위한 branch 생성 (` git checkout -b feature/newFeature `)
......@@ -151,15 +161,7 @@ Show total example
## **License**
* [Node.js License Page](https://raw.githubusercontent.com/nodejs/node/master/LICENSE)
* [svelte License Page](https://github.com/sveltejs/svelte/blob/master/LICENSE.md)
* [request js License Page](https://github.com/request/request/blob/master/LICENSE)
* [express js License Page](https://github.com/expressjs/express/blob/master/LICENSE)
* [MongoDB License Page](https://www.mongodb.com/community/licensing)
`LICENSE.txt` 파일에 명시되어 있습니다
## **Contact**
......