API ํธ์ถ
โ client๊ฐ server์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญ(Request)ํ๊ณ server๊ฐ client์๊ฒ ์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ(Response)ํ๋ ๊ณผ์
โ api๋ ํ๋ก๊ทธ๋จ๊ณผ ํ๋ก๊ทธ๋จ์ ์ฐ๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ
โ ์ฆ,api๋ฅผ ํธ์ถํ๋ค๋ ๊ฒ์ ๋ค๋ฅธ ํ๋ก๊ทธ๋จํํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ธฐ์ํด ๋ง์ ๊ฑด๋ค.
API ํธ์ถ์ ๋น๋๊ธฐ ํธ์ถ๋ก ๋ฐ๋ ์ด์
โ API ํธ์ถ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐํ๋ฐ๊ธฐ ์ํ ๋ชฉ์ ์ด ์๋ค. ํ์ง๋ง ์๋ต์ ์ธ์ ๋ฐ์์ง ํ์คํ ์ ์ ์๋ค.
โ ์ฐ๋ฆฌ๊ฐ ์์ฒญํ ๋ฐ์ดํฐ๋ฅผ ์๋ตํด์ฃผ๋ ์๊ฐ์ ์ธํฐ๋ท ์ฐ๊ฒฐ ์๋, ์๋ฒ์ ๋ถํ์ํ ๋ฑ์ ๋ฐ๋ผ ์์ํ ์ ์๊ณ , ๋๋ก๋ ์คํจํ๋ ๊ฒฝ์ฐ(๊ทธ๋์ Promise๊ฐ์ฒด์ reject๊ฐ ์๋ ์ด์ ์ด๊ธฐ๋ ํ๋ค.)๋ ์๋ค.
โ APIํธ์ถ์ ์๋ต์ ์๊ฐ์ ์์ํ ์ ์์ผ๋ฏ๋ก(์ธ์ ๋๋ ์ง ๋ชจ๋ฅด๋๊น) ๋๊ธฐ ํธ์ถ์ด ์๋ Promise ๊ฐ์ฒด๋ฅผ ์ด์ฉํ์ฌ ๋น๋๊ธฐ ํธ์ถ๋ก ์๋ต์ ๋ฐ์๋ธ๋ค.
API๋ฅผ ํธ์ถํ ์ ์๋๋ก ๋์์ฃผ๋ JS์์ง ๋ด์ฅํจ์
//์๋ต์ response๋ผ๋ ๋ณ์์ ๋ด์๋ค.
let response = fetch("https://jsonplaceholder.typicode.com/posts").then(
(res) => {
console.log(res);
}
);
โ jsonplaceholder์ ๊ฐ๋ฐ์๋ค์๊ฒ ๋ฌด๋ฃ๋ก api ํธ์ถ์ ๋ํด์ ๋๋ฏธ๋ฐ์ดํฐ๋ฅผ ์๋ตํด์ฃผ๋ ์๋น์ค์ด๋ค.
โ ๋ฌด๋ฃ๋ก ์คํํด๋์ api๋ค์ '์คํ API'๋ผ๊ณ ๋ถ๋ฅธ๋ค.
โ "https://jsonplaceholder.typicode.com/posts" ๋ api๋ฅผ ํธ์ถํ ๋ ๋๊ตฐ๊ฐ์๊ฒ ๋ง์ ๊ฑธ๊ฒ์ธ๊ฐ๋ฅผ ๊ฒฐ์ ํ๋ ์ฃผ์์ด๋ค. (๋งํฌ๋ฅผ ํด๋ฆญ์ jsonํํ์ ๋ฐ์ดํฐ๋ฅผ ๋ณผ ์ ์๋ค.)
๊ฒฐ๊ณผ๊ฐ
Response {type: "cors", url: "https://jsonplaceholder.typicode.com/posts", redirected: false, status: 200, ok: trueโฆ}
type: "cors"
url: "https://jsonplaceholder.typicode.com/posts"
redirected: false
status: 200
ok: true
statusText: ""
headers: Headers
body: ReadableStream
bodyUsed: false
arrayBuffer: ฦ arrayBuffer() {}
blob: ฦ blob() {}
clone: ฦ clone() {}
formData: ฦ formData() {}
json: ฦ json() {}
text: ฦ text() {}
<constructor>: "Response"
์์ ๊ฒฐ๊ณผ๊ฐ์ json์ ๋ฐ์ดํฐ๊ฐ๊ณผ ๋ค๋ฅด๋ค.
fetch์ return ๊ฐ์ API ์ฑ๊ณต ์์ฒด์ ๊ฐ์ฒด๋ฅผ ๋ฐ๋๋ค.
์ฆ, API ๋ฐ์ดํฐ์ ํธ์ง๋ฅผ ๋ฐ์ ๊ฒ์ด๋ค. ์์ ๊ฒฐ๊ณผ๊ฐ์ ํธ์ง์ ๋ด์ฉ์ด ์๋๊ณ ํธ์ง์ ๋ดํฌ์ด๋ค.
async function getData() {
let rawResponse = await fetch("https://jsonplaceholder.typicode.com/posts");
let jsonResponse = await rawResponse.json();
console.log(jsonResponse);
}
getData();
//getDataํจ์ ํธ์ถ
๊ฒฐ๊ณผ๊ฐ
์์ ๊ฒฐ๊ณผ๊ฐ์ ๋ณด๋ฉด jsonํํ๋ก ๋ฐ์ดํฐ๊ฐ ๋์จ๊ฒ์ ๋ณผ ์ ์๋ค.