5일차
- 오늘 계획 : 웹개발 2주차 강의, SQL 강의
- 배운 것 :
01.Fetch
어떤 데이터를 주는 URL에서 데이터를 가지고 오는 역할
-Fetch 기본 골격
fetch("여기에 URL을 입력").then(res => res.json()).then(data => {
console.log(data)
})
fetch("여기에 URL을 입력") <- 이 URL로 웹 통신요청을 보냄. 이 괄호 안에 URL밖에 들어있지 않다면 기본상태인 GET!
.then() ← 통신 요청을 받은 다음 진행할 동작
res ⇒ res.json()
← 통신 요청을 받은 데이터는 res 라는 이름을 붙인다는 의미 (변경 가능)
← res는 JSON 형태로 바꿔서 조작할 수 있게 ..
.then(data ⇒ {}) ←JSON 형태로 바뀐 데이터를 data 라는 이름으로 붙일거야
- Fetch
Javascript에서 사용하는 함수, 서버로 요청보내고 응답 값을 받을 수 있다.
비동기 방식, 새로고침 없이 특정영역을 다시 그려줄 수 있어 사용자 입장에서 실시간 결과 확인 가능
어떤 데이터를 주는 URL에서 데이터를 가지고 오는 역할
- Fetch 기본골격 : fetch("여기에 URL을 입력").then(res => res.json()).then(data => {
console.log(data)
})
[ Fetch 통신 결과 값을 이용하기 ]
미세먼지 데이터 API
http://openapi.seoul.go.kr:8088/6d4d776b466c656533356a4b4b5872/json/RealtimeCityAir/1/99
(1) 이 URL로 통신요청을 보내고, JSON형태로 바꿔서 조작할 수 있게 한다. 또 JSON형태로 바뀐 데이터를 data라는 이름을 붙여준다.
또 이 API에선 RealtimeCityAir > row에 데이터가 들어 있으므로
fetch("http://openapi.seoul.go.kr:8088/6d4d776b466c656533356a4b4b5872/json/RealtimeCityAir/1/99").then(res => res.json()).then(data => {
console.log(data['RealtimeCityAir']['row'][1])
})
(2) 콘솔을 이용해 데이터가 잘나오는지 찍어보고,
리스트형식으로 되어 있기 때문에 row의 값을
let rows = data['RealtimeCityAir']['row']과 같이 담아준다.
(3) rows.forEach((a) => {
console.log(a)
}) // 미세먼지 데이터 리스트 길이만큼 반복하여 콘솔에서 찍어봄
(4) API 데이터에서 구 키값인 'MSRSTE_NM', 미세먼치 수치 값 'IDEX_MVL' 콘솔 출력해보기
rows.forEach((a) => {
console.log(a['MSRSTE_NM'], a['IDEX_MVL'])
})
(5) API 데이터 키 값들을 변수에 담고 웹에 붙일 temp_html 만들기
let rows = data['RealtimeCityAir']['row']
rows.forEach((a) => {
let gu_name = a['MSRSTE_NM']
let gu_mise = a['IDEX_MVL']
console.log(gu_name, gu_mise)
let temp_html = `<li>중구 : 82</li>`
$('#names-q1').append(temp_html)
})
=> 어디에 들어갈 지 확인, id값 지정 후 append(temp_html)
(6) 가져올 데이터를 temp_html에 넣고, empty를 이용해 처음 정보를 지우기
let rows = data['RealtimeCityAir']['row']
$('#names-q1').empty()
rows.forEach((a) => {
let gu_name = a[]
let gu_mise = a[]
console.log(gu_name, gu_mise)
let temp_html = `<li>${gu_name} : ${gu_mise}</li>`
$('#names-q1').append(temp_html)
})
+) 조건문 활용
if (gu_mise > 40) {
temp_html = `<li class="bad">${gu_name} : ${gu_mise}</li>`
} else {
temp_html = `<li>${gu_name} : ${gu_mise}</li>`
}
<!doctype html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>미세먼지 API로Fetch 연습하고 가기!</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<style type="text/css">
div.question-box {
margin: 10px 0 20px 0;
}
.bad{
color: red;
}
</style>
<script>
function q1() {
fetch("http://spartacodingclub.shop/sparta_api/seoulair").then(res => res.json()).then(data => {
let rows = data['RealtimeCityAir']['row']
$('#names-q1').empty()
rows.forEach((a) => {
let gu_name = a['MSRSTE_NM']
let gu_mise = a['IDEX_MVL']
let temp_html = ``
if (gu_mise > 40){
temp_html = `<li class='bad'>${gu_name} : ${gu_mise}</li>`
} else {
temp_html = `<li>${gu_name} : ${gu_mise}</li>`
}
$('#names-q1').append(temp_html)
})
})
}
</script>
</head>
<body>
<h1>Fetch 연습하자!</h1>
<hr />
<div class="question-box">
<h2>1. 서울시 OpenAPI(실시간 미세먼지 상태)를 이용하기</h2>
<p>모든 구의 미세먼지를 표기해주세요</p>
<p>업데이트 버튼을 누를 때마다 지웠다 새로 씌여져야 합니다.</p>
<button onclick="q1()">업데이트</button>
<ul id="names-q1">
<li>중구 : 82</li>
<li>종로구 : 87</li>
<li>용산구 : 84</li>
<li>은평구 : 82</li>
</ul>
</div>
</body>
</html>
6일차
-오늘 공부 : 웹개발 종합반 3주차 수강
01. Python
<python 설치>
-확장자 (.py)
터미널 -> 새터미널 (실행 시 우클릭 -> 터미널에서 python실행)
1) python 변수선언&기본연산
a = 2 // a변수에 2값을 넣음
b = 3
print(a+b) // 5
📣python 문법은 직관적 특징
2) 자료형
변수에는
fruit = 'apple' // 문자열
num = 15 // 숫자
is_number = True 또는 False 처럼 "Boolean"형이 들어갈 수 있다.
+)
- Python 리스트 자료형
a=['사과','배','감']
print(a[0]) // 사과 (js 배열과 동일) - Python 딕셔너리 형
a = { }
a = {'name' : '철수', 'age' : 25} (js Dictionary형과 동일)
-> a['name']의 값 : 철수, a['age']의 값 : 25
3-1) 함수
- def : 함수 선언 시작
def hey( ) :
print('헤이!') // *주의사항 : python은 함수 작성 시 콜론+엔터 후
Tab을 해줘야 함수의 내용물이라고 인식함!
3-2) 변수를 받는 함수
def sum(a,b,c):
return a+b+c
result = sum(1,2,3)
print(result)
=> sum 함수 호출 시 변수에 들어간 값을 함수에서 계산해서 결과같으로 return
4) 조건문
age = 18
if age > 2 :
print('성인입니다')
else:
print('청소년입니다')
// 출력 : 청소년입니다. *조건문도 엔터 후 Tab!
5) 반복문
ages = [5,10,13,24,25,9]
for a in ages:
print(a)
-> 배열 ages의 요소들을 하나씩 가져와 a로 넣는다
// 출력 : 5 10 13 24 25 9
5-1) 반복+조건문
ages = [5,10,13,24,25,9]
for a in ages:
if a > 20:
print('성인입니다')
else:
print('청소년입니다')
02. Python 패키지(=라이브러리) 설치
가상환경 venv - 라이브러리(패키지)를 담아두는 폴더(프로젝트 별 공구함 개념)
: 같은 시스템에서 실행되는 다른 파이썬 응용 프로그램 동작에 영향을 주지 않기 위해서 파이썬 배포 패키지 설치 또는 업그레이드를 가능하게 하는 격리된 실행 환경입니다.
1-1) 가상환경 설치
설치 할 폴더 클릭 -> 인터프리터 -> 추천경로
터미널 실행(Ctrl + ) $ python -m venv venv 입력 -> 라이브러리를 담아 둘 venv 폴더 자동 생성 -> 3.9.13 64-bit 에서 venv있는 경로로 변경 -> 새터미널 // 라이브러리를 venv 폴더에 설치한다는 의미 1-2)가상환경 활성화( Ctrl + )
- 터미널환경에서 projects 폴더가 마지막인지 확인 후 코드 입력
윈도우는 ./venv/Scripts/activate
맥은 source venv/bin/activate
터미널에서 (venv) 라고 뜨게 된다면 가상환경이 활성화
2) 라이브러리 설치
(venv) 활성화 터미널에
pip install requests 입력 하면 라이브러리 설치
*requests 라이브러리 : 서버에서 데이터가져오는 역할(fetch와 비슷)
3) 패키지 사용
*사용 시 requests python docs 또는 requests python 사용법과 같
검색을 이용하자!
import requests // requests 라이브러리 설치 필요
r = requests.get('http://spartacodingclub.shop/sparta_api/seoulair')
rjson = r.json()
rows = rjson['RealtimeCityAir']['row'] // 리스트
for a in rows: // 반복문
gu_name = a['MSRSTE_NM']
gu_mise = a['IDEX_MVL']
print(gu_name, gu_mise)
'내일배움캠프 > 내일배움단' 카테고리의 다른 글
내일배움단 -개발일지 2주차 (3) (0) | 2023.03.08 |
---|---|
내일배움단 -개발일지 2주차 (2) (0) | 2023.03.08 |
내일배움단 -개발일지 2주차 (1) (0) | 2023.03.08 |
내일배움단 - 개발일지 1주차(2) (0) | 2023.03.08 |
내일배움단 개발일지 1주차(1) (0) | 2023.03.08 |