1. api ํค
์คํ api ๋ ํค๊ฐ ์์, ๊ตฌ๊ธ api ํค๋ฅผ ๋ฐ์์ผ ์ธ์ฆ ์ ๋ณด๋ฅผ ๋ฃ์ด์ผ์ง๋ง ์ฌ์ฉ๊ฐ๋ฅ
๊ตฌ๊ธ api : https://console.cloud.google.com/apis/dashboard?pli=1 ๊ตฌ๊ธ api console
- ์ธ์ฆํค๋ฅผ ๋ฐ์ ์ ์๋ ๊ณณ
- ํ๋ก์ ํธ ๋ง๋ค๊ธฐ→์ด๋ฆ→์์ฑ
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๊ฐ์ youtube data api v3 ์ฌ์ฉ ๋ฒํผ ๋๋ฅด๊ธฐ
- ๊ทธ๋ผ ์ฒซํ๋ฉด์ผ๋ก ๋์ด๊ฐ
- ์๋จ ์ค๋ฅธ์ชฝ์ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด ๋ง๋ค๊ธฐ ๋ฒํผ ๋๋ฅด๊ธฐ
- ๊ณต๊ฐ ๋ฐ์ดํฐ๋ก ์ฒดํฌ, ๋ค์ ๋ฒํผ
- ๊ทธ๋ผ api ํค ๋ผ๊ณ ๋์ฌ ํ ๋ฐ ๊ทธ ํค๋ฅผ ์ด์ฉํด์ ๊ฐ์ ธ์ฌ ์ ์์, ์๊ธฐ ํค ๋ณต๋ถํด๋๊ธฐ
- youtube data api ๋ค์ด๊ฐ๋ณด๋ฉด ๊ฐ์ ธ์ฌ ์ ์๋ ๋ฐฉ๋ฒ ๋ฑ ์ฌ๋ฌ๊ฐ์ง ์ ํ์์
- ํ๊ตญ์ด์ ๊ฒฝ์ฐ ์๋๋ ๊ฒ๋ค์ด ์์ ์์ด๋ก ๋ฐ๊ฟ ๊ฒ
- API Reference → videos → list ๋ก ๋ค์ด๊ฐ๊ธฐ
- part ๋ snippet, chart ๋ mostPopular(์ธ๊ธฐ์), maxResults(์ต๋ ๋ช ๊ฐ) ๋ 30, regionCode ๋ kr, oauth ๋ ์ฒดํฌ ํ๊ธฐ
- ๊ทธ๋ฌ๋ฉด ๊ฒฐ๊ณผ๋ฌผ์ด ๋์ด, show code ๋ค์ด๊ฐ์ http ๋๋ฅด๋ฉด ์๋จ์ ์ฃผ์๊ฐ ๋์ค๋๋ฐ ๊ทธ๊ฑธ ๋ณต๋ถํด์ ์ฐ๋ฉด ๋ด๊ฐ ์์์ ์ ํํ๋๋ก ์ค์ ๊ฐ์ ๊ฐ์ ธ์ด
→ accept ์ ์๋ฒ์ ์์ฒญํ ๋ ์ด๋ฐ ๋ฐ์ดํฐ ํ์ ์ ํ์ฉํด์ค ๊ฒ์ด๋ผ ์๋ ค์ฃผ๋ฉด ์๋ฒ์์ ๊ทธ์ ๋ง๋ ์๋ต์ ํด์ค
→ [YOUR_API_KEY] HTTP/1.1
Authorization: Bearer [YOUR_ACCESS_TOKEN]
Accept: application/json ์ด๊ฑด ํ์ ์๊ณ ์๊น ๋ฐ์์จ ํค๋ฅผ key ๋ค๋ก ๋ถ์ฌ๋ฃ๊ธฐ
- ์์ get ์ด์ฉ๊ตฌ๋ฅผ ๋ธ๋ผ์ฐ์ ์ฃผ์์ฐฝ์ ๋ฃ์ด๋ณด๊ธฐ
- ์ฐ๋ฆฌ๊ฐ ํ์ํ ์ ๋ณด๋ snippet ์์ ๋ค ์์
2. app.js ๋ก ๋์์์ ์ฃผ์๋ฅผ fetch ๋ก ๋ฟ๋ฆฌ๊ธฐ?
- import {useState,useEffect} from 'react';
const [videos, setVideos] =useState([])
useEffect(()=>{
getMostPopularVideos();
},[])
const getMostPopularVideos = async()=>{
const url=`https://youtube.googleapis.com/youtube/v3/videos?part=snippet&chart=mostPopular&maxResults=30®ionCode=kr&key= ๋ณธ์ธํค`
const res = await fetch(url);
const data = await res.json();
console.log('์ธ๊ธฐ๋์์๋ชฉ๋ก', data)
}
→ api ์ ๋ณด ๋ถ๋ฌ์์ฃผ๊ธฐ
→ ๊ทธ๋ผ ์ฝ์์ : ์ธ๊ธฐ๋์์๋ชฉ๋ก {kind: 'youtube#videoListResponse', etag: 'ctotuwi6huGd-Q_Z-Ya1OPPCQis', items: Array(30), nextPageToken: 'CB4QAA', pageInfo: {…}} ์ด๋ ๊ฒ ๋ค์ด์ ์๋ ๊ฑธ ๋ณผ ์ ์์
- getMostPopularVideos ์์ setVideos(data.items) ํด์ค์ items ๋ง ๋ค์ด์ค๋๋ก
- return ๋ฌธ ์์
{
videos.map(item=><div key={item.id}>{item.snippet.title}</div>)
}
→ ์ด๋ ๊ฒ ํด์ฃผ๋ฉด title ์ด ์ฃผ๋ฃจ๋ฃฉ ๋ค ๋์ด๋จ
- ๊ฐ๋ฐ์ ๊ฒ์ฌ์ ๋คํธ์ํฌ ๋ค์ด๊ฐ๋ณด๋ฉด ์์ฒญ์ด ์ด๋ป๊ฒ ๋ค์ด๊ฐ ์๋์ง ๋์์์
- ์์ฒญํค๋, ์๋ตํค๋์ ๋์ ์๋ ๊ฑด ๋ค์ ๊ฒ์ํด๋ณด๊ธฐ, origin ์ด ๊ณ์ ๋์ค๋๋ฐ ๊ทธ๊ฑด ๋ฆฌ์์ค ์ถ์ฒ๋ฅผ ๋ปํจ(์ดํ ๋ค์ ์ค๋ช )
- scheme ์ ํ๋กํ ์ฝ์ด ์ด๋ค ๊ฑธ๋ก ์กํ์๋์ง ๋์ด
3. ๋ ์จapi ๋ถ๋ฌ์๋ณด๊ธฐ
- weather api https://openweathermap.org/api
- ์๋จ ์ค๋ฅธ์ชฝ์ ๋ณธ์ธ ์ด๋ฆ ๋๋ฅด๊ณ my api keys ๋ค์ด๊ฐ๋ณด๋ฉด key ๊ฐ ๋์ด
- api ํค : e87e991da99c74ba6aad50150b10c85c
- api ๋ฉ๋ด๋ก ๋ค์ด๊ฐ๋ณด๋ฉด Current Weather Data ์ api doc ๋ฒํผ ๋๋ฅด๊ธฐ
- API call ์ https://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}&appid={API key} ๋ณต๋ถ
- ์ฃผ์์ {api key} ๋ถ๋ถ์ ๋ณธ์ธ ํค ๋ถ์ฌ๋ฃ๊ธฐ
- ๊ตฌ๊ธ ์ง๋์ ๋ค์ด๊ฐ์ ์๋ ๊ฒฝ๋ ๋ฐ์์ค๊ธฐ
- {lat} ๋ถ๋ถ์ ์๋๊ฒฝ๋ ๋ฃ์ด์ฃผ๊ธฐ : ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ํด๋ฆญ ์ฃผ๋ณ ๊ฒ์ ๋๋ฅด๋ฉด ๊ฒ์์ฐฝ์ ํ์๋จ
- https://api.openweathermap.org/data/2.5/weather?lat=37.543365&lon={lon}&appid=e87e991da99c74ba6aad50150b10c85c
4. app.js ๋์์์ ๋ฐ์ดํฐ ๋ฟ๋ ค์ฃผ๊ธฐ
const [weather, setWeather] =useState(null)
useEffect(()=>{
getCurrentWeatherData();
},[])
const getCurrentWeatherData = async() =>{
const response = await fetch(url);
const data = await response.json();
console.log('๋ ์จ๋ฐ์ดํฐ', data)
setWeather(data)
}
→ ์ด๋ ๊ฒ ํด์ฃผ๋ฉด ์ฝ์ : ๋ ์จ๋ฐ์ดํฐ {coord: {…}, weather: Array(1), base: 'stations', main: {…}, visibility: 10000, …}
- ๋ ์จ ์ญ์จ๋ก ๋ฐ๊ฟ์ฃผ๊ธฐ : weather api ํํ์ด์ง→ api → Current Weather Data ์ api doc ๋ฒํผ → celsius ์ฐพ๊ธฐ → units=metric ๋ฃ์ด์ฃผ๋ฉด ๋๋ค๊ณ ๋ธ → app.js ์ url ์ฃผ์ ๋งจ ๋ค์ &units=metric ๋ถ์ฌ์ฃผ๋ฉด ๋จ
- ์ง์ญ ์ด๋ฆ์ด๋ ์จ๋ ์ถ๋ ฅํ๊ธฐ :
<h1>{weather && weather.name}</h1>
<h2>{weather && weather.main.temp}๋</h2>
5. ๋ทํ๋ฆญ์ค๋ ์์ฑ ํด๋ก ํ ๋ ์ฐ๋ api
movie database api : https://www.themoviedb.org/
์ด๊ฒ๋ ํ๋ฒ ๋ถ๋ฌ์๋ณด๊ธฐ
'๐ฑ SeSac > ๊ณต๋ถ ๊ธฐ๋ก (๋ณต์ตํ๋ฉฐ ์ ๋ฐ์ดํธ ์ค)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[220721] ์ ํ๋ธ ํด๋ก ์ฝ๋ฉ 3 (0) | 2022.09.15 |
---|---|
[220720~220721] ์ ํ๋ธ ํด๋ก ์ฝ๋ฉ 2 (0) | 2022.09.15 |
[220711 / Day 40] ์ผํ๋ชฐ ๋ง๋ค๊ธฐ 2 (0) | 2022.07.11 |
[220708 / Day 39] ์ผํ๋ชฐ ๋ง๋ค๊ธฐ (0) | 2022.07.08 |
[220707 / Day 38] React-Redux (0) | 2022.07.07 |