주제 : open api를 활용한 공공 데이터 분석 💡
1) server to server 통신은 axios 📌
import axios from "axios";
try {
const response = await axios({
url:
`http://openAPI.seoul.go.kr:8088/${req.key}/${req.type}/${req.service}/${req.start}/${req.end}/` +
encodeURI(req.region),
method: 'GET',
});
const result = response.data;
return result;
} catch (e) {
throw e;
}
2) 시간 계산은 moment.js 📌
import moment from 'moment';
const now_time = api 호출 당시의 시간
const received_time = 받은 data에 저장되어 있는 시간
const diff_time (시간 차이)
= moment.duration(now_time.diff(received_time)).asMinutes()
if (diff_time < 60 ) {
...
}
feedback
👉 기존에 작성했던 코드를 간단히 리팩토링했다. const 변수1, 변수2, 변수3 등 변수가 어떤 data를 담고 있는지 더 명확하게 표현하는 쪽이 좋겠다는 피드백을 반영했다.
3) 인터페이스 (interface) vs 타입 (type) 📌
interface IReq {
key: string;
service: string;
type: string;
start: number;
end: number;
region: string;
}
const req: IReq = {
key: process.env.RAINFALL_API_ACCESS_KEY,
service: 'ListRainfallService',
type: 'json',
start: 1,
end: 282,
region: regionName,
};
공통된 부분은 interface로 만들어 코드 중복을 최소화한다.
또 interface를 사용한 이유는 확장성이 좋기 때문이다.
type vs interface
type | interface | |
---|---|---|
타입 확장 | & 연산자 사용 | extends 사용 |
동일한 이름 사용 | 재 선언 불가 | 재 선언 가능 |
generic | 저장 가능 | 저장 불가 |
참고 자료
👉 typescript interface vs type
더 자세한 코드 참조
👉 public data analysis