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 ๋ˆ„๋ฅด๋ฉด ์ƒ๋‹จ์— ์ฃผ์†Œ๊ฐ€ ๋‚˜์˜ค๋Š”๋ฐ ๊ทธ๊ฑธ ๋ณต๋ถ™ํ•ด์„œ ์“ฐ๋ฉด ๋‚ด๊ฐ€ ์œ„์—์„œ ์„ ํƒํ•œ๋Œ€๋กœ ์„ค์ •๊ฐ’์„ ๊ฐ€์ ธ์˜ด

 

GET https://youtube.googleapis.com/youtube/v3/videos?part=snippet&chart=mostPopular&maxResults=30®ionCode=kr&key=๋ณธ์ธํ‚ค

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 url=`https://api.openweathermap.org/data/2.5/weather?lat=37.5468&lon=126.9498&appid=e87e991da99c74ba6aad50150b10c85c`

    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/

์ด๊ฒƒ๋„ ํ•œ๋ฒˆ ๋ถˆ๋Ÿฌ์™€๋ณด๊ธฐ

+ Recent posts