서버-클라이언트 통신 이해하기
- 1) 서버→클라이언트: “JSON”을 이해하기
- 서울시 OpenAPI에 접속해보기
-
[코드스니펫] 서울시 OpenAPI
http://openapi.seoul.go.kr:8088/6d4d776b466c656533356a4b4b5872/json/RealtimeCityAir/1/99
-
- 크롬 익스텐션 JSONView를 설치.
-
Jsonview
https://chrome.google.com/webstore/detail/jsonview/chklaanhfefbnpoihckbnefhakgolnmc?hl=ko
-
-
JSON은, Key:Value로 이루어져 있다. (자료형 Dictionary와 유사)
- 서울시 OpenAPI에 접속해보기
-
2) 클라이언트→서버: GET 요청 이해하기
-
GET
https://movie.naver.com/movie/bi/mi/basic.nhn?code=161967 "?" 기준으로 앞부분이 <서버 주소>, 뒷부분이 [영화 번호] 입니다. * 서버 주소: https://movie.naver.com/movie/bi/mi/basic.nhn * 영화 정보: code=161967
-
Ajax 시작하기
-
1) Ajax 시작하기
-
미세먼지 OpenAPI
http://spartacodingclub.shop/sparta_api/seoulair
- Ajax 기본 골격
$.ajax({
type: "GET",
url: "여기에URL을입력",
data: {},
success: function(response){
console.log(response)
}
})
Ajax 코드 해설
$.ajax({
type: "GET", // GET 방식으로 요청한다.
url: "http://spartacodingclub.shop/sparta_api/seoulair",
data: {}, // 요청하면서 함께 줄 데이터 (GET 요청시엔 공란)
success: function(response){ // 서버에서 준 결과를 response라는 변수에 담음
console.log(response) // 서버에서 준 결과를 이용해서 나머지 코드를 작성
}
})
-
$ajax 코드 설명 - type: “GET” → GET 방식으로 요청한다. - url: 요청할 url - data: 요청하면서 함께 줄 데이터 (GET 요청시엔 공란)
<aside> 👉 리마인드 GET 요청은, url뒤에 아래와 같이 붙여서 데이터를 가져간다. http://naver.com?param=value¶m2=value2 POST 요청은, data : {} 에 넣어서 데이터를 가져간다. data: { param: 'value', param2: 'value2' }, </aside>
-
success: 성공하면, response 값에 서버의 결과 값을 담아서 함수를 실행!
success: function(response){ // 서버에서 준 결과를 response라는 변수에 담음
console.log(response)
}
- 2) Ajax 통신의 결과값을 이용해보기
$.ajax({
type: "GET", // GET 방식으로 요청한다.
url: "http://spartacodingclub.shop/sparta_api/seoulair",
data: {}, // 요청하면서 함께 줄 데이터 (GET 요청시엔 비워두세요)
success: function(response){ // 서버에서 준 결과를 response라는 변수에 담음
console.log(response) // 서버에서 준 결과를 이용해서 나머지 코드를 작성
}
})
- 개발자도구 콘솔에 찍어보기
$.ajax({
type: "GET",
url: "http://spartacodingclub.shop/sparta_api/seoulair",
data: {},
success: function(response){
// 값 중 도봉구의 미세먼지 값만 가져와보기
let dobong = response["RealtimeCityAir"]["row"][11];
let gu_name = dobong['MSRSTE_NM'];
let gu_mise = dobong['IDEX_MVL'];
console.log(gu_name, gu_mise);
}
})
- 모든 구의 미세먼지 값을 찍어보기
$.ajax({
type: "GET",
url: "http://spartacodingclub.shop/sparta_api/seoulair",
data: {},
success: function (response) {
let mise_list = response["RealtimeCityAir"]["row"];
for (let i = 0; i < mise_list.length; i++) {
let mise = mise_list[i];
let gu_name = mise["MSRSTE_NM"];
let gu_mise = mise["IDEX_MVL"];
console.log(gu_name, gu_mise);
}
}
});
-
복습할 때 참고! - 해설) 모든 구의 미세먼지 값을 찍어보기 1. 미세먼지 데이터가 어디에 있는지 찾기
![Untitle](https://teamsparta.notion.site/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fcf6e770d-9618-4c1d-beef-afb23b3cd2c9%2FUntitled.png?table=block&id=5a4d82fc-9704-44d0-8c82-6957b2259345&spaceId=83c75a39-3aba-4ba4-a792-7aefe4b07895&width=480&userId=&cache=v2) 위 그림과 같이 RealtimeCityAir > row 에 미세먼지 데이터가 들어있음. ```jsx $.ajax({ type: "GET", url: "http://spartacodingclub.shop/sparta_api/seoulair", data: {}, success: function(response){ let mise_list = response["RealtimeCityAir"]["row"]; // 꺼내는 부분! console.log(mise_list); } }) ``` 2. 반복문으로 구 데이터를 출력해보기 ![Untitle](https://teamsparta.notion.site/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fdc6ab951-95aa-4415-8977-fc988e04e3cc%2FUntitled.png?table=block&id=d8a50140-85db-4d2e-b3cc-799dcd4e37d0&spaceId=83c75a39-3aba-4ba4-a792-7aefe4b07895&width=480&userId=&cache=v2) row의 값을 mise_list에 담고 반복문 돌리기! ```jsx $.ajax({ type: "GET", url: "http://spartacodingclub.shop/sparta_api/seoulair", data: {}, success: function (response) { let mise_list = response["RealtimeCityAir"]["row"]; for (let i = 0; i < mise_list.length; i++) { let mise = mise_list[i]; console.log(mise); } }, }); ``` 3. 구 데이터에서 구 이름, 미세먼지 수치를 골라내어 출력하기 ![Untitle](https://teamsparta.notion.site/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F41a0dbc3-2ad1-458f-baeb-08961f950b25%2FUntitled.png?table=block&id=c5196d3f-1dcd-4370-9d4d-59e97cb6e900&spaceId=83c75a39-3aba-4ba4-a792-7aefe4b07895&width=480&userId=&cache=v2) 구 이름 키 값인 "MSRSTE_NM", 미세먼지 수치 키값인 "IDEX_MVL"의 밸류를 출력 ```jsx $.ajax({ type: "GET", url: "http://spartacodingclub.shop/sparta_api/seoulair", data: {}, success: function (response) { let mise_list = response["RealtimeCityAir"]["row"]; for (let i = 0; i < mise_list.length; i++) { let mise = mise_list[i]; let gu_name = mise["MSRSTE_NM"]; let gu_mise = mise["IDEX_MVL"]; console.log(gu_name, gu_mise); } } }); ```