Jason View 설치후 다음을 확인하면 서울시 미세먼지와 관련된 open api를 확인해 볼 수 있다
http://openapi.seoul.go.kr:8088/6d4d776b466c656533356a4b4b5872/json/RealtimeCityAir/1/99
TMI: GET과 POST요청에서 수행하는 작업을 묶어서 CRUD라고 하며 이에 최적화된 프레임워크 중 하나가 나중에 배우게될 Django이다
?: 여기서 부터 전달할 데이터가 작성된다는 의미
&: 전달할 데이터가 더 남아있음을 뜻함
ex) google.com/search?q=아이폰&sourceid=chrome&ie=UTF-8
q = 아이폰 (검색어) #q는 query를 뜻하는 건가..?
sourceid=chrome (브라우저 정보)
ie=UTF-8 (인코딩 정보) 를 의미한다
$.ajax({
type: "GET",
url: "http://spartacodingclub.shop/sparta_api/seoulair",
data: {},
success: function (response) {
let rows = response['RealtimeCityAir']['row']
for (let i = 0; i < rows.length; i++) {
let gu_name = rows[i]['MSRSTE_NM']
let gu_mise = rows[i]['IDEX_MVL']
console.log(gu_name,gu_mise)
}
}
})
#API 들어가서 직접 확인해보면 인덱싱 명들이 무엇을 가리키고 있는지 알 수 있음
#이전 연습과정과 마찬가지로 이전에 콘솔을 통해 확인했던 JSON 데이터들을 직접 html상의 동작을 바탕으로 화면에 띄워주는 연습을 해보자
#영상에선 $('#names-q1).empty()를 Ajax 호출 이전에 넣는걸로 보여주셨지만, 개인적인 생각에는 호출에 실패했을경우 이전 데이터라도 보여줄 수 있는 상태로 남는것이 좀더 좋지 않을까 해서 success: function (response) 구문 밑에 추가해 보았다
#기본 메커니즘은 3-1과 같지만 반복문을 돌면서 각 데이터를 불러올 때 조건문을 삽입하여 gu_mise가 n보다 크면 빨간색으로 표시되게끔만 해주면 된다 (작성 시점을 기준으로 미세먼지 수치가 그리 높지않아 영상처럼 120을 기준으로 잡으면 결과값의 차이를 확인할 수 없어 부득히 하게 51로 잡았다)
#조건부에 따라 표기방법만 바꿔줄뿐 부모 데이터는 동일하기 때문에 굳이 여러 변수를 둘 필요가 없다고 판단하여 temp_html 뒤 백틱을 공란으로 두고 조건문에서는 값만 넣어준 것이다
#좀 더 확연히 구분하고 싶다면, 반복문 내에서 미세먼지 수치가 높을때/낮을때를 나타내는 변수를 따로 지정하고 각각을 조건문에 대입해도 상관없다
#서울시 자전거 거치대 현황 API
http://spartacodingclub.shop/sparta_api/seoulbike
#API를 확인해보면 우리에게 필요한 데이터는 크게 3가지 정도로, 거치대 위치명/전체 거치대의 수/현재 남은 거치대의 수 정도가 될 것이다
#위와같은 방식으로 필요한 데이터를 전부 불러올 수 있는 것을 확인한다음
#연습때와 완전히 동일한 방식이라 추가적으로 덧붙일 건 없지만, 표기 방식을 좀 더 연습해보기위해, 이번에는 반복문 안에서 temp_red(이용가능 거치대 수 10개 미만인경우)와 temp_green으로 나누어 정의하며 실행해 보았다
#텍스트는 이전과같은 방법으로 받아오되, 이미지를 받아올때는 $('#id').attr('src', url) 형식으로 정의해야 한다.(url 부분은 사전에 먼저 정의해 둘것)
#이렇게 '르탄이 나와' 버튼을 누를때마다 API에서 제공하는 랜덤 이미지 url과 msg를 호출하여 html에 그려주는 것을 확인 할 수 있었다