μ£Όμ΄μ§ APIλ₯Ό νμ©ν΄ 'μμ± μμ' μ²λΌ μμ λ‘κ² μν κ²μ κΈ°λ₯μ ꡬνν΄λ³΄μΈμ!
κ³Όμ μν λ° λ¦¬λ·° κΈ°κ°μ λ³λ 곡μ§λ₯Ό μ°Έκ³ νμΈμ!
KDTκΈ°μλ²νΈ_μ΄λ¦ | E.g, KDT0_ParkYoungWoong
- νμ¬ μ μ₯μλ₯Ό λ‘컬μ ν΄λ‘ (Clone)ν©λλ€.
- μμ μ λ³Έλͺ
μΌλ‘ λΈλμΉλ₯Ό μμ±ν©λλ€.(κ΅¬λΆ κ°λ₯νλλ‘ λ³Έλͺ
μ κΌ νμ€μΉΌμΌμ΄μ€λ‘ νμνμΈμ,
git branch KDT0_ParkYoungWoong
) - μμ μ λ³Έλͺ λΈλμΉμμ κ³Όμ λ₯Ό μνν©λλ€.
- κ³Όμ μνμ΄ μλ£λλ©΄, μμ μ λ³Έλͺ
λΈλμΉλ₯Ό μ격 μ μ₯μμ νΈμ(Push)ν©λλ€.(
main
λΈλμΉμ νΈμνμ§ μλλ‘ κΌ μ£ΌμνμΈμ,git push origin KDT0_ParkYoungWoong
) - μ μ₯μμμ
main
λΈλμΉλ₯Ό λμμΌλ‘ Pull Request μμ±νλ©΄, κ³Όμ μ μΆμ΄ μλ£λ©λλ€!(E.g,main
<==KDT0_ParkYoungWoong
)
main
νΉμ λ€λ₯Έ μ¬λμ λΈλμΉλ‘ μ λ λ³ν©νμ§ μλλ‘ μ£ΌμνμΈμ!- Pull Requestμμ 보μ΄λ μ€λͺ μ λ€λ₯Έ μ¬λλ€μ΄ μ΄ν΄νκΈ° μ½λλ‘ κΌΌκΌΌνκ² μμ±νμΈμ!
- Pull Requestμμ κ³Όμ μ μΆ ν μ λ λ³ν©(Merge)νμ§ μλλ‘ μ£ΌμνμΈμ!
- κ³Όμ μν λ° μ μΆ κ³Όμ μμ λ¬Έμ κ° λ°μν κ²½μ°, λ°λ‘ λ΄λΉ λ©ν λ κ°μ¬μμ μκΈ°νμΈμ!
νμ μꡬμ¬νμ κΌ λ¬μ±ν΄μΌ νλ λͺ©νλ‘, μμ /μμ λ λΆκ°νκ³ μΆκ°λ κ°λ₯ν©λλ€.
μ ν μꡬμ¬νμ λ¨μ μμλ‘, μμ λ‘κ² μΆκ°/μμ /μμ ν΄μ ꡬνν΄λ³΄μΈμ.
κ° μꡬμ¬νμ λ¬μ± ν λ§ν¬λ€μ΄μμ - [x]
λ‘ νμνμΈμ.
- μν μ λͺ©μΌλ‘ κ²μμ΄ κ°λ₯ν΄μΌ ν©λλ€!
- κ²μλ κ²°κ³Όμ μν λͺ©λ‘μ΄ μΆλ ₯λΌμΌ ν©λλ€!
- λ¨μΌ μνμ μμΈμ 보(μ λͺ©, κ°λ΄μ°λ, νμ , μ₯λ₯΄, κ°λ , λ°°μ°, μ€κ±°λ¦¬, ν¬μ€ν° λ±)λ₯Ό λ³Ό μ μμ΄μΌ ν©λλ€!
- μ€μ μλΉμ€λ‘ λ°°ν¬νκ³ μ κ·Ό κ°λ₯ν λ§ν¬λ₯Ό μΆκ°ν΄μΌ ν©λλ€.
- ν λ²μ κ²μμΌλ‘ μν λͺ©λ‘μ΄ 20κ° μ΄μ κ²μλλλ‘ λ§λ€μ΄λ³΄μΈμ.
- μν κ°λ΄μ°λλ‘ κ²μν μ μλλ‘ λ§λ€μ΄λ³΄μΈμ.
- μν λͺ©λ‘μ κ²μνλ λμ λ‘λ© μ λλ©μ΄μ μ΄ λ³΄μ΄λλ‘ λ§λ€μ΄λ³΄μΈμ.
- 무ν μ€ν¬λ‘€ κΈ°λ₯μ μΆκ°ν΄μ μΆκ° μν λͺ©λ‘μ λ³Ό μ μλλ‘ λ§λ€μ΄λ³΄μΈμ.
- μν ν¬μ€ν°κ° μμ κ²½μ° λ체 μ΄λ―Έμ§λ₯Ό μΆλ ₯νλλ‘ λ§λ€μ΄λ³΄μΈμ.
- μν μμΈμ λ³΄κ° μΆλ ₯λκΈ° μ μ λ‘λ© μ λλ©μ΄μ μ΄ λ³΄μ΄λλ‘ λ§λ€μ΄λ³΄μΈμ.
- μν μμΈμ 보 ν¬μ€ν°λ₯Ό κ³ ν΄μλλ‘ μΆλ ₯ν΄λ³΄μΈμ. (μ€μκ° μ΄λ―Έμ§ 리μ¬μ΄μ§)
- μ°¨λ³νκ° κ°λ₯νλλ‘ νλ‘μ νΈλ₯Ό μ΅λν μμκ² λ§λ€μ΄λ³΄μΈμ.
- μνμ κ΄λ ¨λ κΈ°ν κΈ°λ₯λ κ³ λ €ν΄λ³΄μΈμ.
curl https://omdbapi.com/?apikey=7035c60c
\ -X 'GET'
μν λͺ©λ‘μ ν λ²μ μ΅λ 10κ°κΉμ§ κ²μν μ μμ΅λλ€.
νλΌλ―Έν° | μ€λͺ | κΈ°λ³Έκ° |
---|---|---|
s |
κ²μν μν μ λͺ©(νμ!) | - |
y |
κ²μν κ°λ΄μ°λ, λΉ κ°μ μ 체 κ²μ | - |
page |
κ²μν νμ΄μ§ λ²νΈ | 1 |
μμ² μ½λ μμ:
async function getMovies(title, year = '', page = 1) {
const s = `&s=${title}`
const y = `&y=${year}`
const p = `&page=${page}`
try {
const res = await fetch(`https://omdbapi.com/?apikey=7035c60c${s}${y}${p}`)
const json = await res.json()
if (json.Response === 'True') {
const { Search: movies, totalResults } = json
return {
movies,
totalResults
}
}
return json.Error
} catch (error) {
console.log(error)
}
}
μλ΅ λ°μ΄ν° νμ λ° μμ:
interface ResponseValue {
Search: Movie[] // κ²μλ μν λͺ©λ‘, μ΅λ 10κ°
totalResults: string // κ²μλ μν κ°μ
Response: 'True' | 'False' // μμ² μ±κ³΅ μ¬λΆ
}
interface Movie {
Title: string // μν μ λͺ©
Year: string // μν κ°λ΄μ°λ
imdbID: string // μν κ³ μ ID
Type: string // μν νμ
Poster: string // μν ν¬μ€ν° μ΄λ―Έμ§ URL
}
{
"Search": [
{
"Title": "Frozen",
"Year": "2013",
"imdbID": "tt2294629",
"Type": "movie",
"Poster": "https://m.media-amazon.com/images/M/MV5BMTQ1MjQwMTE5OF5BMl5BanBnXkFtZTgwNjk3MTcyMDE@._V1_SX300.jpg"
},
{
"Title": "Frozen II",
"Year": "2019",
"imdbID": "tt4520988",
"Type": "movie",
"Poster": "https://m.media-amazon.com/images/M/MV5BMjA0YjYyZGMtN2U0Ni00YmY4LWJkZTItYTMyMjY3NGYyMTJkXkEyXkFqcGdeQXVyNDg4NjY5OTQ@._V1_SX300.jpg"
}
],
"totalResults": "338",
"Response": "True"
}
λ¨μΌ μνμ μμ μ 보λ₯Ό κ²μν©λλ€.
νλΌλ―Έν° | μ€λͺ | κΈ°λ³Έκ° |
---|---|---|
i |
κ²μν μν ID(νμ!) | |
plot |
μ€κ±°λ¦¬ κΈΈμ΄ | short |
μμ² μ½λ μμ:
async function getMovie(id) {
const res = await fetch(`https://omdbapi.com/?apikey=7035c60c&i=${id}&plot=full`)
const json = await res.json()
if (json.Response === 'True') {
return json
}
return json.Error
}
μλ΅ λ°μ΄ν° νμ λ° μμ:
interface ResponseValue {
Title: string // μν μ λͺ©
Year: string // μν κ°λ΄μ°λ
Rated: string // μν λ±κΈ
Released: string // μν κ°λ΄μΌ
Runtime: string // μν μμμκ°
Genre: string // μν μ₯λ₯΄
Director: string // μν κ°λ
Writer: string // μν μκ°
Actors: string // μν μΆμ°μ§
Plot: string // μν μ€κ±°λ¦¬
Language: string // μν μΈμ΄
Country: string // μν μ μ κ΅κ°
Awards: string // μν μμ λ΄μ
Poster: string // μν ν¬μ€ν° μ΄λ―Έμ§ URL
Ratings: Rating[] // μν νμ μ 보
Metascore: string // μν λ©νμ€μ½μ΄
imdbRating: string // μν IMDB νμ
imdbVotes: string // μν IMDB ν¬ν μ
imdbID: string // μν κ³ μ ID
Type: string // μν νμ
DVD: string // μν DVD μΆμμΌ
BoxOffice: string // μν λ°μ€μ€νΌμ€
Production: string // μν μ μμ¬
Website: string // μν 곡μ μΉμ¬μ΄νΈ
Response: string // μμ² μ±κ³΅ μ¬λΆ
}
interface Rating { // μν νμ μ 보
Source: string // νμ μ 곡 μ¬μ΄νΈ
Value: string // νμ
}
{
"Title": "Frozen",
"Year": "2013",
"Rated": "PG",
"Released": "27 Nov 2013",
"Runtime": "102 min",
"Genre": "Animation, Adventure, Comedy",
"Director": "Chris Buck, Jennifer Lee",
"Writer": "Jennifer Lee, Hans Christian Andersen, Chris Buck",
"Actors": "Kristen Bell, Idina Menzel, Jonathan Groff",
"Plot": "When the newly crowned Queen Elsa accidentally uses her power to turn things into ice to curse her home in infinite winter, her sister Anna teams up with a mountain man, his playful reindeer, and a snowman to change the weather co...",
"Language": "English, Norwegian",
"Country": "United States",
"Awards": "Won 2 Oscars. 82 wins & 60 nominations total",
"Poster": "https://m.media-amazon.com/images/M/MV5BMTQ1MjQwMTE5OF5BMl5BanBnXkFtZTgwNjk3MTcyMDE@._V1_SX300.jpg",
"Ratings": [
{ "Source": "Internet Movie Database", "Value": "7.4/10" },
{ "Source": "Rotten Tomatoes", "Value": "90%" },
{ "Source": "Metacritic", "Value": "75/100" }
],
"Metascore": "75",
"imdbRating": "7.4",
"imdbVotes": "620,489",
"imdbID": "tt2294629",
"Type": "movie",
"DVD": "18 Mar 2014",
"BoxOffice": "$400,953,009",
"Production": "N/A",
"Website": "N/A",
"Response": "True"
}