출퇴근하면서, 자기 전에 10분, 20분 시간을 내어 드디어 완성했다.
100% TypeScript로 작성이 되었다.
// ~/src/app.ts
import dataMake from "./dataMake";
import heritage from "./heritage";
heritage.run();
dataMake.run();
app.ts 파일이 실행 파일이다.
heritage.run()은 문화재청 API를 가지고 문화재 목록정보, 상세정보, 이미지정보, 동영상정보의 XML데이터를 가지고 온 후 JSON으로 변환하여 저장한다.
dataMake.run()은 heritage.run()을 통해 가져와서 변환한 JSON 데이터를 바탕으로 DB용 데이터를 만든다.
그래도 백엔드, 프론트엔드 통합 프로젝트인데 DB 테이블간 조인도 하고 그래야 하지 않나.
그래서 원데이터를 좀 가공해서 문화재 상세정보 기준으로 이미지 테이블, 동영상 테이블 등을 만들었다.
~/src/dataMake.ts.파일엔 여러 클래스들이 있는데 음... 좀 파일을 나눌걸 그랬나보다.
나중에 시간되면 수정해야겠다.
클래스들은 모두.DataMake 클래스를 상속받아 쓰며, DataMake 클래스를 나름 잘 만들어놓았다.
어쨌든 이걸로 데이터베이스에 밀어넣기 위한 데이터 준비가 끝났다.
한편 이 프로젝트를 진행하면서 가장 시간이 오래걸린 까다로운 문제가 있었는데...
// ~/src/helpers.ts
const xmlToJSON = (xml: string): any => {
return parser.parse(xml, {
parseNodeValue: false,
});
};
바로 문화재청 API를 통해 가져온 XML 데이터를 JSON으로 변환하는 이 코드 4줄이다.
이에 대해선 따로 포스트를 하고 포스트가 완료되면 여기에도 링크를 달아놓겠다.
728x90
'개발 > Project' 카테고리의 다른 글
문화재 조회 서비스 프로젝트(2) (0) | 2021.04.23 |
---|---|
문화재 조회 서비스 프로젝트(1) (0) | 2021.04.22 |